}
public static void actionCopy(PageContext pc,Resource directory,String strDestination,String serverPassword,boolean createPath, Object acl,int storage, ResourceFilter filter, boolean recurse, int nameconflict) throws PageException {
// check directory
SecurityManager securityManager = pc.getConfig().getSecurityManager();
securityManager.checkFileLocation(pc.getConfig(),directory,serverPassword);
if(!directory.exists())
throw new ApplicationException("directory ["+directory.toString()+"] doesn't exist");
if(!directory.isDirectory())
throw new ApplicationException("file ["+directory.toString()+"] exists, but isn't a directory");
if(!directory.canRead())
throw new ApplicationException("no access to read directory ["+directory.toString()+"]");
if(StringUtil.isEmpty(strDestination))
throw new ApplicationException("attribute destination is not defined");
// real to source
Resource newdirectory=toDestination(pc,strDestination,directory);
if ( nameconflict == NAMECONFLICT_ERROR && newdirectory.exists() )
throw new ApplicationException("new directory ["+newdirectory.toString()+"] already exist");
securityManager.checkFileLocation(pc.getConfig(),newdirectory,serverPassword);
try {
// has already a filter
if(filter!=null) {
if(recurse) filter=new OrResourceFilter(new ResourceFilter[]{