classnode.java

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

JAVA
138
字号
/* * Created on 03-08-2003 * * To change the template for this generated file go to * Window - Preferences - Java - Code Generation - Code and Comments */package net.sf.hibernate.console.node;import java.util.ArrayList;import java.util.List;import net.sf.hibernate.Hibernate;import net.sf.hibernate.metadata.ClassMetadata;import net.sf.hibernate.type.PersistentCollectionType;import net.sf.hibernate.type.Type;/** * @author MAX * * To change the template for this generated type comment go to * Window - Preferences - Java - Code Generation - Code and Comments */public class ClassNode extends BaseNode {	ClassMetadata md;	boolean objectGraph;		Object baseObject;	boolean childrenCreated = false;	public ClassNode(NodeFactory factory, BaseNode parent, String name, ClassMetadata metadata, Object baseObject, boolean objectGraph) {					super(factory, parent);        this.name = name;        this.baseObject = baseObject;        this.objectGraph  = objectGraph;    		md = metadata;			if (md != null) { // Don't have any hibernate related info about this one...				icon = NodeFactory.mappedClassIcon;															} else {				icon = NodeFactory.unmappedClassIcon;      			}			}	protected void checkChildren() {		if(!childrenCreated) {			createChildren();			childrenCreated = true;		}	}		protected void createChildren() {		//System.out.println("Creating children for: " + this);				if(objectGraph && getValue()==null || md == null) {			return;		}				        		        // Identifier        if(md.getIdentifierPropertyName()!=null) {            children.add(0, factory.createIdentifierNode(this, md));                    }                String[] names = md.getPropertyNames();        for (int i = 0; i < names.length; i++) {            Type type = md.getPropertyTypes()[i];			            if(type.isPersistentCollectionType()) {                PersistentCollectionNode tn = factory.createPersistentCollectionNode(this, names[i], md, (PersistentCollectionType)type, getValue(), objectGraph);                children.add(tn);               } else {                children.add(factory.createPropertyNode(this, i, md, getValue(), objectGraph));            }                    }        			}		public String getHQL() {		List parents = new ArrayList();                BaseNode currentParent;          currentParent = this;          while (currentParent != null && !(currentParent instanceof RootNode)) {                      parents.add(currentParent);                      currentParent = currentParent.parent;             }		        if(currentParent instanceof RootNode) {            currentParent = (BaseNode) parents.get(parents.size()-1);          }                // currentParent is the root        String cname = ((ClassNode)currentParent).md.getMappedClass().getName();        		if (cname.lastIndexOf(".") != -1) {			cname = cname.substring(cname.lastIndexOf(".") + 1);		}		String alias = cname.toLowerCase();		String path = "";		for (int i = parents.size()-2; i >= 0; i--) {			path += "." + ((BaseNode) parents.get(i)).getName();		}		return "select " + alias + path + " from " + cname + " as " + alias;	}		public ClassMetadata getClassMetadata() {		return md;	}	public String renderLabel(boolean fullyQualifiedNames) {		if(objectGraph) {			Object o = getValue();			if(Hibernate.isInitialized(o)) {				return super.renderLabel(fullyQualifiedNames) + " = " + o;				} else {				return super.renderLabel(fullyQualifiedNames) + " = " + "(uninitialized proxy)";			}			  		} else {			return super.renderLabel(fullyQualifiedNames);		}	}		public Object getValue() {		if(objectGraph) {			return baseObject;		} else {			return null;		}	}}

⌨️ 快捷键说明

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