objectpropertysheetview.java

来自「Hibernate开发及整合应用大全 蔡雪焘编著 本书用典型的示例剖析Hiber」· Java 代码 · 共 113 行

JAVA
113
字号
/* * Created on 13-08-2004 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Generation - Code and Comments */package net.sf.hibernate.console.views;import java.awt.Container;import java.beans.PropertyChangeEvent;import java.beans.PropertyChangeListener;import net.sf.hibernate.console.HibernateIdentifierProperty;import net.sf.hibernate.console.HibernateProperty;import net.sf.hibernate.HibernateException;import net.sf.hibernate.Session;import net.sf.hibernate.metadata.ClassMetadata;import net.sf.hibernate.proxy.HibernateProxyHelper;import com.l2fprod.common.propertysheet.Property;import com.l2fprod.common.propertysheet.PropertySheet;import com.l2fprod.common.propertysheet.PropertySheetPanel;/** * @author MAX * */public class ObjectPropertySheetView extends AbstractSessionView {	final private PropertySheetPanel sheet;		public ObjectPropertySheetView() {		sheet = new PropertySheetPanel(); 		sheet.setMode(PropertySheet.VIEW_AS_CATEGORIES);					}		public void objectUpdated(Session session, Object o) {		updateSheet(o, session);	}	public Container getContainer() {		return sheet;	}	void updateSheet(final Object o, Session s) {		/*DefaultBeanInfoResolver resolver = new HibernateBeanInfoResolver(sf);		BeanInfo beanInfo = resolver.getBeanInfo(o);		PropertyDescriptor[] propertyDescriptors = new PropertyDescriptor[0];		if(beanInfo!=null) {			propertyDescriptors = beanInfo.getPropertyDescriptors();		}*/				Property[] propertyDescriptors = extractProperties(o, s);			if(pcl!=null) {			sheet.removePropertySheetChangeListener(pcl);		}				sheet.setProperties(propertyDescriptors);		sheet.readFromObject(o);		pcl = new PropertyChangeListener() {			public void propertyChange(PropertyChangeEvent evt) {				sheet.writeToObject(o);			}		};		sheet.addPropertySheetChangeListener(pcl);											}	PropertyChangeListener pcl = null;		private Property[] extractProperties(Object o, Session s) {		try {		if(!s.contains(o)) {			return new Property[0];		}		ClassMetadata classMetadata = s.getSessionFactory().getClassMetadata(HibernateProxyHelper.getClass(o));				String[] propertyNames = classMetadata.getPropertyNames();		int length = propertyNames.length;		Property identifier = null;		Property version = null;		if(classMetadata.hasIdentifierProperty()) {			identifier = new HibernateIdentifierProperty(classMetadata.getIdentifierPropertyName(),classMetadata);			length++;		}		/*		if(classMetadata.isVersioned()) {			version = new HibernateProperty(classMetadata.getV,classMetadata, HibernateProperty.VERSION);			length++;		}*/				Property[] properties = new Property[length];				int idx = 0;		if(identifier!=null) {			properties[idx++] = identifier; 		}		if(version!=null) {			properties[idx++] = version;		}				for (int i = 0; i < propertyNames.length; i++) {			properties[i+idx] = new HibernateProperty(propertyNames[i],classMetadata);		}		return properties;		} catch (HibernateException he) {			throw new RuntimeException("extractProperties", he);		}	}}

⌨️ 快捷键说明

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