/* * Copyright (C) 2003-2007 eXo Platform SAS. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License * as published by the Free Software Foundation; either version 3 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see<http://www.gnu.org/licenses/>. */ package org.exoplatform.services.cms.drives; import java.util.List; import java.util.Set; /** * Function to manage Drive to be able to add, remove or manage them. * * @LevelAPI Experimental */ public interface ManageDriveService { public static String COLLABORATION_DRIVE = "Collaboration"; /** * Get Drive name which point to root folder of default workspace * @return String Name of drive. */ public String getDriveOfDefaultWorkspace() throws Exception; /** * Register a new drive to workspace or update if the drive is existing * * @param name drive name * @param workspace the workspace name where will store the drive * @param permissions specify who can access to this drive * @param homePath specify the location of drive * @param views include all views can see in drive * @param icon the drive icon which can see in drive browser * @param viewReferences the boolean to set default for drive can view * references node or not * @param viewNonDocument the boolean to set default for drive can view non * document node or not * @param viewSideBar the boolean to set default for drive can view side bar * or not * @param showHiddenNode the boolean to set default for drive can see hidden * node or not * @param allowCreateFolder the string to specify which type of folder can add * in the drive * @param allowNodeTypesOnTree * @throws Exception */ public void addDrive(String name, String workspace, String permissions, String homePath, String views, String icon, boolean viewReferences, boolean viewNonDocument, boolean viewSideBar, boolean showHiddenNode, String allowCreateFolder, String allowNodeTypesOnTree) throws Exception; /** * Return an DriveData Object * @param driveName the string contain the drive name * @see DriveData * @return DriveData with specified drive name and repository * @throws Exception */ public DriveData getDriveByName(String driveName) throws Exception; /** * Return the list of DriveData * This method will look up in all workspaces of repository to find DriveData with * specified permission * @param permission the string contain the permission * @return list of DriveData with specified repository and permission * @see DriveData * @throws Exception */ public List<DriveData> getAllDriveByPermission(String permission) throws Exception; /** * Remove drive with specified drive name and repository * @param driveName drive name * @throws Exception */ public void removeDrive(String driveName) throws Exception; /** * This method will look up in all workspaces of current repository to find DriveData * * @param withVirtualDrives true: include Virtual Drives, false: not include Virtual Drives * @return list of DriveData with specified repository * @throws Exception */ public List<DriveData> getAllDrives(boolean withVirtualDrives) throws Exception; /** * This method will look up in all workspaces of current repository to find DriveData * @return list of DriveData with specified repository * @throws Exception */ public List<DriveData> getAllDrives() throws Exception; /** * This method will check to make sure the view is not in used before remove this view * @param viewName view name * @return the status of current view is in used or not * @throws Exception */ public boolean isUsedView(String viewName) throws Exception; /** * Register all drive plugins * * @throws Exception */ public void init() throws Exception; /** * Get all drives by user roles * @param userId User name * @param roles Roles of user * @return list of drives * @throws Exception */ public List<DriveData> getDriveByUserRoles(String userId, List<String> roles) throws Exception; /** * Get all main drives. * * @param userId Name of user * @param userRoles Roles of user * @return list of drives * @throws Exception */ public List<DriveData> getMainDrives(String userId, List<String> userRoles) throws Exception; /** * Get all personal drives. * * @param userId Name of user * @return list of drives * @throws Exception */ public List<DriveData> getPersonalDrives(String userId) throws Exception; /** * Get all group drives * @param userId Name of user * @param userRoles Roles of user * @return list of drives * @throws Exception */ public List<DriveData> getGroupDrives(String userId, List<String> userRoles) throws Exception; /** * Get the Groups drive * @return The Groups drive */ public DriveData getGroupDriveTemplate(); /** * Check if a drive is vitual(Group Drive Template) * @param driveName the string contain the drive name * @return true: is Virtual Drive, false: not is Virtual Drive */ public boolean isVitualDrive(String driveName); /** * Clear all drives cache */ public void clearAllDrivesCache(); /** * Clear group drives cache * @param userId User name of current user */ public void clearGroupCache(String userId); /** * Inform when have new role added * @return Boolean */ public boolean newRoleUpdated(); /** * Set the status of new added role * @param newRoleUpdated */ public void setNewRoleUpdated(boolean newRoleUpdated); /** * Get deleted drive names. * * @return list of deleted drive names * @throws Exception */ public Set<String> getDeletedDriveNames() throws Exception; }