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

📄 hibernatecfmodelmanager.java

📁 eclipse的hibernate插件,支持eclipse2.*版本
💻 JAVA
字号:
/* * Created on 2003-7-25 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */package com.tanghan.plugin.hibernate.editor;import java.util.Hashtable;import java.util.List;import java.util.Vector;import org.apache.log4j.Logger;import org.eclipse.core.resources.IFile;import org.eclipse.core.resources.IResourceChangeEvent;import org.eclipse.core.resources.IResourceChangeListener;import org.eclipse.core.resources.IResourceDelta;import org.eclipse.core.resources.IResourceDeltaVisitor;import org.eclipse.core.resources.IWorkspace;import org.eclipse.core.runtime.CoreException;import org.eclipse.pde.core.IModel;import org.eclipse.pde.internal.core.IModelProvider;import org.eclipse.pde.internal.core.IModelProviderListener;import com.tanghan.plugin.TanghanPlugin;import com.tanghan.util.Log;/** * @author Jerry Tang * @version v0.1.0 * @copyright  (C) 2003 Tanghan Studio */public class HibernateCFModelManager	implements IModelProvider, IResourceChangeListener ,IResourceDeltaVisitor{	private static Logger log = Log.getInstanse().getLogger(HibernateCFModelManager.class);		/** Workspace hibernate models */	private List hibernateModels;	protected List listeners;	protected Hashtable models;	protected List modelChanges;		/** init flag */	private boolean initialized = false;		class ModelChange {		IModel model;		boolean added;		public ModelChange(IModel model, boolean added) {			this.model = model;			this.added = added;		}	}			class ModelInfo {		int count;		IModel model;		IModel readOnlyModel;		Object consumer;		public boolean isExclusiveAccess() {			return true;		}	}		/**	 * 	 */	public HibernateCFModelManager() {		hibernateModels = new Vector();		models = new Hashtable();		listeners = new Vector();		IWorkspace workspace = TanghanPlugin.getWorkspace();		workspace.addResourceChangeListener(			this,IResourceChangeEvent.PRE_CLOSE				| IResourceChangeEvent.PRE_DELETE				| IResourceChangeEvent.PRE_AUTO_BUILD);	}	/* (non-Javadoc)	 * @see org.eclipse.pde.internal.core.IModelProvider#addModelProviderListener(org.eclipse.pde.internal.core.IModelProviderListener)	 */	public void addModelProviderListener(IModelProviderListener listener) {		listeners.add(listener);	}	/* (non-Javadoc)	 * @see org.eclipse.pde.internal.core.IModelProvider#connect(java.lang.Object, java.lang.Object)	 */	public void connect(Object element, Object consumer) {		this.connect(element, consumer, true);	}	/* (non-Javadoc)	 * @see org.eclipse.pde.internal.core.IModelProvider#connect(java.lang.Object, java.lang.Object, boolean)	 */	public void connect(		Object element,		Object consumer,		boolean editableCopy) {			//得到一个编辑器和模型之间的连接			ModelInfo info = (ModelInfo) models.get(element);			if (info == null) {				info = new ModelInfo();				info.count = 0;				models.put(element, info);			}			info.count++;			if (info.model == null && editableCopy) {				info.model = createModel(element);				info.consumer = consumer;			} else {				info.readOnlyModel = createModel(element, false);			}	}	/**	 * Method createModel.	 * @param element	 * @return IModel	 */	protected IModel createModel(Object element) {		return createModel(element, true);	}	/**	 * Method createModel.	 * @param element	 * @param editable	 * @return IModel	 */	protected IModel createModel(Object element, boolean editable) {		if (element instanceof IFile) {			IFile file = (IFile) element;			HibernateCFModel model = new HibernateCFModel(file); 			model.setEditable(true);			return model;			}		return null;	}		/* (non-Javadoc)	 * @see org.eclipse.pde.internal.core.IModelProvider#disconnect(java.lang.Object, java.lang.Object)	 */	public void disconnect(Object element, Object consumer) {		ModelInfo info = (ModelInfo) models.get(element);		if (info != null) {			info.count--;			if (info.consumer != null && info.consumer.equals(consumer)) {				// editable copy can go				info.model.dispose();				info.model = null;			}			if (info.count == 0) {				if (info.model != null)					info.model.dispose();				info.readOnlyModel = null;				models.remove(element);			}		}	}	/* (non-Javadoc)	 * @see org.eclipse.pde.internal.core.IModelProvider#getModel(java.lang.Object, java.lang.Object)	 */	public IModel getModel(Object element, Object consumer) {		ModelInfo info = (ModelInfo) models.get(element);		if (info != null) {			if (info.consumer != null && info.consumer.equals(consumer))				return info.model;			else {				return info.readOnlyModel;			}		}		return null;	}	/* (non-Javadoc)	 * @see org.eclipse.pde.internal.core.IModelProvider#removeModelProviderListener(org.eclipse.pde.internal.core.IModelProviderListener)	 */	public void removeModelProviderListener(IModelProviderListener listener) {		listeners.remove(listener);	}	/* 暂时没有用到	 * (non-Javadoc)	 * @see org.eclipse.core.resources.IResourceChangeListener#resourceChanged(org.eclipse.core.resources.IResourceChangeEvent)	 */	public void resourceChanged(IResourceChangeEvent event) {		// No need to do anything if nobody has the models		if (hibernateModels == null)			return;		switch (event.getType()) {			case IResourceChangeEvent.PRE_AUTO_BUILD :				if (modelChanges == null)					modelChanges = new Vector();				break;			case IResourceChangeEvent.PRE_CLOSE :				// project about to close				if (modelChanges == null)					modelChanges = new Vector();				break;			case IResourceChangeEvent.PRE_DELETE :				// project about to be deleted				if (modelChanges == null)					modelChanges = new Vector();				break;		}	}	/* 暂时没有用到	 * (non-Javadoc)	 * @see org.eclipse.core.resources.IResourceDeltaVisitor#visit(org.eclipse.core.resources.IResourceDelta)	 */	public boolean visit(IResourceDelta delta) throws CoreException {		switch (delta.getKind()) {			case IResourceDelta.ADDED :				log.debug("// handle added resource");				break;			case IResourceDelta.REMOVED :				log.debug("// handle removed resource");				break;			case IResourceDelta.CHANGED :				log.debug("// handle changed resource");				break;			default:				log.debug("// handle resource type "+delta.getKind());		}		return true;	}}

⌨️ 快捷键说明

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