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 + -
显示快捷键?