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 }