001    package railo.runtime.functions.file;
002    
003    import java.io.IOException;
004    
005    import railo.commons.io.res.Resource;
006    import railo.runtime.PageContext;
007    import railo.runtime.exp.FunctionException;
008    import railo.runtime.exp.PageException;
009    import railo.runtime.op.Caster;
010    
011    public class FileSetAttribute {
012    
013            public static String call(PageContext pc, Object oSrc, String attr) throws PageException {
014                    Resource src = Caster.toResource(pc,oSrc,false);
015                    pc.getConfig().getSecurityManager().checkFileLocation(src);
016                    attr=attr.trim().toLowerCase();
017                    try {
018                    if("archive".equals(attr)){
019                            src.setAttribute(Resource.ATTRIBUTE_ARCHIVE, true);
020                    }
021                    else if("hidden".equals(attr)){
022                            src.setAttribute(Resource.ATTRIBUTE_HIDDEN, true);
023                    }
024                    else if("system".equals(attr)){
025                            src.setAttribute(Resource.ATTRIBUTE_SYSTEM, true);
026                    }
027                    else if("normal".equals(attr)){
028                            src.setAttribute(Resource.ATTRIBUTE_ARCHIVE, false);
029                            src.setAttribute(Resource.ATTRIBUTE_HIDDEN, false);
030                            src.setAttribute(Resource.ATTRIBUTE_SYSTEM, false);
031                    }
032                    else 
033                            throw new FunctionException(pc,"FileSetAttribute",2,"attribute","invalid value ["+attr+"], valid values are [normal,archive,hidden,system]");
034                    }
035                    catch(IOException ioe) {
036                            throw Caster.toPageException(ioe);
037                    }
038                    return null;
039            }
040    }