package com.l7tech.server.folder;

import com.l7tech.objectmodel.EntityHeader;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.ObjectModelException;
import com.l7tech.objectmodel.PersistentEntity;
import com.l7tech.objectmodel.RoleAwareEntityManager;
import com.l7tech.objectmodel.SaveException;
import com.l7tech.objectmodel.folder.Folder;
import com.l7tech.objectmodel.folder.FolderHeader;
import com.l7tech.objectmodel.folder.FolderedEntityManager;

public interface FolderManager extends FolderedEntityManager<Folder, FolderHeader>, RoleAwareEntityManager<Folder> {
   Folder findRootFolder() throws FindException;

   Folder findByPath(String var1) throws FindException;

   Folder createPath(String var1) throws FindException, SaveException;

   void addManageFolderRole(Folder var1) throws SaveException;

   void addReadonlyFolderRole(Folder var1) throws SaveException;

   interface VisitFolderCallback {
      void apply(PersistentEntity var1, FolderedEntityManager<? extends PersistentEntity, ? extends EntityHeader> var2) throws ObjectModelException;
   }
}
