⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filemanager.java

📁 java 写的一个新闻发布系统
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
////                                   ____.//                       __/\ ______|    |__/\.     _______//            __   .____|    |       \   |    +----+       \//    _______|  /--|    |    |    -   \  _    |    :    -   \_________//   \\______: :---|    :    :           |    :    |         \________>//           |__\---\_____________:______:    :____|____:_____\//                                      /_____|////                 . . . i n   j a h i a   w e   t r u s t . . .//package org.jahia.services.filemanager;import java.io.*;import java.util.*;import java.sql.*;import org.jahia.tools.files.*;import org.jahia.utils.*;           // JahiaConsoleimport org.jahia.exceptions.*;      // JahiaInitializationExceptionimport org.jahia.services.sites.*;import org.jahia.services.*;import org.jahia.registries.*;import org.jahia.data.files.*;/** * Class Filemanager.<br> * The Filemanager core object * * @author Khue ng * @version 1.0 */public class Filemanager {      	/** the filemanager identifier **/	private int m_FilemanagerID = -1;		// by default does not exists in db   	/** the owner of this filemanager **/   	private int m_OwnerID;					// the ownerID	/** the Path to the File Repository folder on disk **/	private String m_StoragePath = "";	/** the folders tree for this filemanager **/	private Vector m_FolderTree;	/** parents **/	private Hashtable parents;				// if size > 0, getFolderTree() only return children for													// those folders otherwise return children of all folders													// of this filemanager														/** excludeBranchFolder **/	private Folder m_ExcludeBranchFolder;	// a folder and all its children to exclude 														// by getFolderTree()																/** if the folderTree is already loaded or not **/	private boolean m_FolderTreeLoaded = false;		/** a reference to an instance of FilemanagerDB class **/	private FilemanagerDB m_FmngDB;	/** a reference to an instance of FolderDB class **/	private FolderDB m_FolderDB;	/**	 * Constructor	 *	 */    	public Filemanager()	{	}	/**	 * Method create<br>	 * Create a new filemanager in database	 *	 * @param the owner ID	 * @return true if done correctly	 */	public boolean create(int ownerID){		boolean success = true;		// Check if a filemanager already exist for this owner		Filemanager tmpFilemanager = m_FmngDB.getInstance().getFilemanagerByOwner(ownerID);					if ( tmpFilemanager == null ){			this.setOwnerID(ownerID);						JahiaSite site = null;			try {				// Create a new one				site = ServicesRegistry.getInstance()												.getJahiaSitesService()												.getSite(ownerID);			} catch ( JahiaException je ){				return false;			}						if ( site == null ){				return false;			}															File storageFolder = ServicesRegistry.getInstance().getJahiaFilemanagerService().createDirectory(site);						this.setStoragePath(storageFolder.getName());						toConsole(" Insert new Filemanager ");			if ( !m_FmngDB.getInstance().insert(this) ) {				success = false;			} else {				// create Root Folder for this filemanager				Folder folder = new Folder (	this.getFilemanagerID(),												-1,		// no parent												"root" );				if (!m_FolderDB.getInstance().insert(folder)){	// success					m_FmngDB.getInstance().delete(this.getFilemanagerID());					success = false;				}			}					} else {			File tmpFile = new File(ServicesRegistry.getInstance().getJahiaFilemanagerService().getFileRepositoryRootPath() + File.separator + tmpFilemanager.getStoragePath() );			if ( tmpFile == null || !tmpFile.isDirectory() ){				tmpFile.mkdirs();							}		}				return success;	}	/**	 * Method initializeWithOwner<br>	 * Initialize filemanager's data by owner id.<br>	 * Load filemanager's data : filemanager id, owner id<br>	 *	 *	 * @param ownerID the id of the owner	 * @return true if done correctly	 */	public boolean initializeWithOwner(int ownerID) {		this.setOwnerID(ownerID);		// get filemanager data		Filemanager tmpFilemanager = m_FmngDB.getInstance().getFilemanagerByOwner(this.getOwnerID());		if ( tmpFilemanager != null ) {			this.setStoragePath(tmpFilemanager.getStoragePath());			this.setFilemanagerID(tmpFilemanager.getFilemanagerID());			return true;		} else {						// try to create a new one 			if (this.create(ownerID)){				tmpFilemanager = m_FmngDB.getInstance().getFilemanagerByOwner(this.getOwnerID());								if ( tmpFilemanager != null ) {					this.setStoragePath(tmpFilemanager.getStoragePath());					this.setFilemanagerID(tmpFilemanager.getFilemanagerID());					return true;				} else {					return false;				}				}			return false;		}	}		/**	 * Method initialize<br>	 * Initialize filemanager's data with filemanager id.<br>	 * Load filemanager's data : filemanager id, owner id<br>	 * 	 * The default active folder is the root folder	 *	 * @param filemanagerID the filemanager id	 * @return true if done correctly	 */	public boolean initialize(int filemanagerID) {				this.setFilemanagerID(filemanagerID);		// get filemanager data		Filemanager tmpFilemanager = m_FmngDB.getInstance().getFilemanager(this.getFilemanagerID());		if ( tmpFilemanager != null ) {			this.setStoragePath(tmpFilemanager.getStoragePath());			this.setOwnerID(tmpFilemanager.getOwnerID());			return true;		} else {			return false;		}	}	/**	 * Method getFolderTree	 * Get the Folder tree for this filemanager, deploy all branch	 * return a tree starting at the filemanager's folder root	 *	 * @return a Vector of Folder objects or null	 */	public Vector getFolderTree() {				if ( !m_FolderTreeLoaded ) {						// reset parents			this.parents = null;						// get Folder list			String whereSql = " where filemanagerid_jahia_fld=" + this.getFilemanagerID() ;			String orderSql = " order by parent_jahia_fld, fldname_jahia_fld ";			Vector foldersTree = m_FolderDB.getInstance().getFolders(whereSql,orderSql);			Vector orderedFolders = new Vector();			if (foldersTree != null) {				Folder rootFolder = (Folder)foldersTree.firstElement();				rootFolder.setDepth(0);				orderedFolders.add(rootFolder);				foldersTree.removeElementAt(0);				this.sortFolders(foldersTree,orderedFolders,rootFolder.getFolderID(),rootFolder.getDepth());								foldersTree = orderedFolders;			}			toConsole(" buildFolderTree, ordered folders :" + foldersTree.size()  ); 				// Remove the branch m_ExcludeBranchFolder and all it's children			if ( this.m_ExcludeBranchFolder != null ) {				foldersTree = removeBranch(this.m_ExcludeBranchFolder,orderedFolders);				} 			m_FolderTree = foldersTree;			m_FolderTreeLoaded = true;		}		return m_FolderTree;	}	/**	 * Method getFolderTree	 * Get the Folder tree for this filemanager, deploy only one branch	 *	 * @param activeFolder the active folder for which to deploy branch	 * @return a Vector of Folder objects or null	 */	public Vector getFolderTree(Folder activeFolder) {				if ( !m_FolderTreeLoaded ) {						// get active folder's parent			Hashtable parents = new Hashtable();			activeFolder.getParents(parents);			this.setParents(parents);						// get Folder list			String whereSql = " where filemanagerid_jahia_fld=" + this.getFilemanagerID() ;			String orderSql = " order by parent_jahia_fld, fldname_jahia_fld ";			Vector foldersTree = m_FolderDB.getInstance().getFolders(whereSql,orderSql);			Vector orderedFolders = new Vector();			if (foldersTree != null) {				Folder rootFolder = (Folder)foldersTree.firstElement();				rootFolder.setDepth(0);				orderedFolders.add(rootFolder);				foldersTree.removeElementAt(0);				this.sortFolders(foldersTree,orderedFolders,rootFolder.getFolderID(),rootFolder.getDepth());								foldersTree = orderedFolders;			}			toConsole(" buildFolderTree, ordered folders :" + foldersTree.size()  ); 				m_FolderTree = foldersTree;			m_FolderTreeLoaded = true;		}		return m_FolderTree;	}	/**	 * Method void loadFolderTree<br>	 * Force to reload folder tree	 *	 */	public void loadFolderTree(){				m_FolderTreeLoaded = false;				getFolderTree();		}	/**	 * Method void loadFolderTree<br>	 * Force to reload folder tree	 *	 * @param activerFolder the active folder for which to deploy all branch	 */	public void loadFolderTree(Folder activeFolder){				m_FolderTreeLoaded = false;				getFolderTree(activeFolder);		}	/**	 * Method getBranch(Folder folder)<br>	 * Return a branch starting from a gived folder	 *	 * @param the folder from where to get the Tree	 * @return a Vector of Folder objects or null	 */	public Vector getBranch(Folder folder) {		// get Folder list		String whereSql = " where filemanagerid_jahia_fld=" + this.getFilemanagerID() ;		String orderSql = " order by parent_jahia_fld, fldname_jahia_fld ";		Vector foldersTree = m_FolderDB.getInstance().getFolders(whereSql,orderSql);		Vector orderedFolders = new Vector();		if (foldersTree != null) {						folder.setDepth(0);			orderedFolders.add(folder);			this.sortFolders(foldersTree,orderedFolders,folder.getFolderID(),folder.getDepth());						foldersTree = orderedFolders;		}		toConsole(" buildFolderTree(folder), ordered folders :" + foldersTree.size()  ); 			return foldersTree;	}			/**	 * Recursively build the folder tree	 *	 * @param folders a vector of folders ordered by parentid	 * @param orderedFolders the vector to store ordered folders	 * @param parentID the parent folder's id to get children 	 * @param the current tree depth	 */	protected void sortFolders(Vector folders, Vector orderedFolders, int parentID, int currentDepth){ 				for ( int i=0 ; i<folders.size() ; i++ ){			Folder tmpFolder = null;			tmpFolder = (Folder)folders.get(i);			toConsole( " parent id is: " + parentID + "\n");			toConsole( " sorted folder is : " + tmpFolder.getFolderName() + "\n");						if ( tmpFolder.getParentID() == parentID ) {				toConsole( " folder " + tmpFolder.getFolderName() + " is added \n");				tmpFolder.setDepth(currentDepth+1);	 			if ( this.parents != null && (parents.size()>0) ){	 				if ( parents.get(new Integer(tmpFolder.getFolderID())) != null ){						orderedFolders.add(tmpFolder);						//folders.removeElementAt(i);						//i-=1;						sortFolders(folders,orderedFolders,tmpFolder.getFolderID(),currentDepth + 1);					} else {						orderedFolders.add(tmpFolder);						//folders.removeElementAt(i);						//i-=1;					}				} else {					orderedFolders.add(tmpFolder);					//folders.removeElementAt(i);					//i-=1;					sortFolders(folders,orderedFolders,tmpFolder.getFolderID(),currentDepth + 1);				}									}				 		}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -