📄 filemanager.java
字号:
} /** * Method removeBranch<br> * Remove an entire branch starting from a gived folder<br> * Called by getChildren()<br> * * @param activeFolder folder remove * @param folderTree a vector of filtered Folder * @return newTree the new tree */ protected Vector removeBranch(Folder activeFolder, Vector folderTree){ toConsole(" removeBranch started "); int size = folderTree.size(); Folder folder = null; Vector newTree = new Vector(); int depth = 0; for ( int i=0 ; i<size ; i++ ) { folder = (Folder)folderTree.get(i); toConsole("removeBranch: " + folder.getFolderName() + ", depth=" + folder.getDepth() ); if ( folder.getFolderID() == activeFolder.getFolderID() ) { // getActivefolder depth activeFolder.setDepth(folder.getDepth()); i+=1; // exclude itself for ( int j=i; j<size ; j++ ) { folder = (Folder)folderTree.get(j); toConsole("removeBranch: remove child " + folder.getFolderName() + ", depth=" + folder.getDepth() ); // remove all its children if (!(folder.getDepth()>activeFolder.getDepth())){ i=(j-1); break; } else if ( j==(size-1) ){ // last element i=size; } } } else { newTree.add(folder); } } toConsole(" removeBranch finished "); return newTree; } /** * Method getFilemanagerID<br> * * @return the filemanager id */ public int getFilemanagerID() { return m_FilemanagerID; } /** * Method setFilemanagerID<br> * * @param id the filemanager id */ protected void setFilemanagerID(int id) { m_FilemanagerID = id; } /** * Method getStoragePath<br> * * @return the filemanager storage path */ public String getStoragePath() { return m_StoragePath; } /** * Method setStoragePath<br> * * @param path the storage path */ protected void setStoragePath(String path) { m_StoragePath = path; } /** * Method getOwnerID<br> * * @return the owner id */ public int getOwnerID(){ return m_OwnerID; } /** * Method setOwnerID<br> * * @param id the owner id */ protected void setOwnerID(int id){ m_OwnerID = id; } /** * Method deleteFiles<br> * Delete files from folder. * * @param fileIDs String array of file id to delete * @return false on error */ public boolean deleteFiles(Folder activeFolder, String[] fileIDs) { boolean success = true; // get active folder's files Vector files = activeFolder.getFiles(); if ( files != null ) { JahiaFile aFile = null; int nbFile = files.size(); String filePath = ""; for ( int i=0; i<nbFile ; i++ ) { aFile = (JahiaFile)files.get(i); if ( inValues( new String().valueOf(aFile.getFileID()),fileIDs) ){ filePath = this.getFullPath() + File.separator + aFile.getStorageName(); File storedFile = new File(filePath); if ( storedFile != null && storedFile.exists() ){ if (!storedFile.delete()){ toConsole("deteteFiles , error while deleting file: " + filePath + " from disk"); success = false; break; } if ( !ServicesRegistry.getInstance().getJahiaFilemanagerService().deleteFileDB(aFile.getFileID()) ){ success = false; break; } } else { if ( !ServicesRegistry.getInstance().getJahiaFilemanagerService().deleteFileDB(aFile.getFileID()) ){ success = false; break; } } } } } return success; } /** * Method deleteFolder<br> * Delete a folder and all it's children * * @param folder the folder to delete * @return false on error */ public boolean deleteFolder(Folder folder) { toConsole(" deleteFolder started "); boolean success = true; if ( folder != null ){ Vector folderTree = this.getBranch(folder); Vector files = new Vector(); if ( folderTree != null ){ Folder aFolder = null; int size = folderTree.size(); int nbFile = 0; String filePath = ""; for ( int i=size; i>0 ; i-- ) { aFolder = (Folder)folderTree.get(i-1); // get folder's files files = aFolder.getFiles(); nbFile = files.size(); // delete files from db try { if ( !ServicesRegistry.getInstance().getJahiaFilemanagerService().deleteFilesDB(aFolder.getFolderID()) ){ toConsole(" HandleFolderDelete , error while deleting files from database"); success = false; break; } else { if ( files != null ) { String[] filenames = new String[files.size()]; nbFile = files.size(); for ( int j=0; j<nbFile ; j++ ) { filenames[j] = ((JahiaFile)files.get(j)).getStorageName(); } for ( int j=0; j<nbFile ; j++ ){ filePath = this.getFullPath() + File.separator + filenames[j]; File storedFile = new File(filePath); if ( storedFile != null && storedFile.exists() ){ if (!storedFile.delete()){ toConsole("HandleFolderDelete , error while deleting file: " + filePath + " from disk"); success = false; break; } } else { toConsole("HandleFolderDelete ,cannot find file to delete: " + filePath + " from disk"); } } } } // delete folder from db if (!m_FolderDB.getInstance().delete(aFolder.getFolderID())){ toConsole(" HandleFolderDelete , error while deleting folder: " + aFolder.getFolderName() + " from database"); success = false; break; } } catch ( Throwable e ) { return false; } } } // delete folder from db if (!m_FolderDB.getInstance().delete(folder.getFolderID())){ toConsole(" HandleFolderDelete , error while deleting folder: " + folder.getFolderName() + " from database"); success = false; } } else { return false; } return success; } /** * Method moveFolder * Move a Folder to a new location * * @param folder to move * @param destFolder destination folder * @return false on error * * @exception ServletException * @exception IOException */ public boolean moveFolder(Folder folder, Folder destFolder){ toConsole(" moveFolder started "); boolean success = true; if ( folder != null && destFolder != null ) { folder.setParentID(destFolder.getFolderID()); if (!(m_FolderDB.getInstance().update(folder))){ success = false; } } else { success = false; } return success; } /** * Method setParents<br> * Pass an hashTable of folder id * used by getFolderTree to determine which folder to get chidren for * @param parents */ public void setParents(Hashtable parents){ this.parents = parents; } /** * Method setExcludeBranchFolder<br> * Tell getFolderTree to exclude this folder and all its children * @param parents */ public void setExcludeBranchFolder(Folder folder){ this.m_ExcludeBranchFolder = folder; } /** * Method resetParents<br> * Set parents to null, this way getFolderTree * will get children for all folder of this filemanager * */ public void resetParents(){ this.parents = null; } /** * Method getRootFolder<br> * Return the root folder of this filemanager * * @return a folder object else null */ public Folder getRootFolder() { Folder folder = m_FolderDB.getInstance().getRootFolder(this.getFilemanagerID()); return folder; } /** * Return the full storage path associated with this filemanager<br> * * @return path the full path to the storage dir associated with this filemanager */ public String getFullPath() { return ( ServicesRegistry.getInstance().getJahiaFilemanagerService().getFileRepositoryRootPath() + File.separator + this.getStoragePath() ) ; } /** * Method inValues<br> * Check if a string value is in an array of string * * @param aValue a string value * @param values an array of String * @return true if value found in array */ protected boolean inValues(String aValue, String[] values){ if ( values != null ){ for (int i=0 ; i<values.length ; i++){ if (aValue.equals(values[i])){ return true; } } } return false; } /** * Method toConsole * For debugging purpose * * @param msg any String message to write to the console */ public void toConsole(String msg) { JahiaConsole.println("Filemanager::", msg); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -