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

📄 hibernatemappingscanner.java

📁 eclipse的hibernate插件,支持eclipse2.*版本
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
/* * File:           HibernateMappingScanner.java * Generated from: hibernate-mapping-2.0.dtd * Date:           2003年7月29日  下午5:15 * */package com.tanghan.plugin.hibernate.editor.config;import java.util.HashMap;import java.util.List;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import com.tanghan.plugin.hibernate.editor.elements.ElementAttribute;import com.tanghan.plugin.hibernate.editor.elements.HibernateElementAttributes;import com.tanghan.plugin.hibernate.editor.elements.HibernateTreeObject;import com.tanghan.plugin.hibernate.editor.elements.HibernateTreeParent;/** * This is a scanner of DOM tree. * * Example: * <pre> *     javax.xml.parsers.DocumentBuilderFactory builderFactory = javax.xml.parsers.DocumentBuilderFactory.newInstance(); *     javax.xml.parsers.DocumentBuilder builder = builderFactory.newDocumentBuilder(); *     org.w3c.dom.Document document = builder.parse (new org.xml.sax.InputSource (???)); *     <font color="blue">HibernateMappingScanner scanner = new HibernateMappingScanner (document);</font> *     <font color="blue">scanner.visitDocument();</font> * </pre> * @author Jerry Tang * @version v0.1.0 * @copyright  (C) 2003 Tanghan Studio *  * @see org.w3c.dom.Document * @see org.w3c.dom.Element * @see org.w3c.dom.NamedNodeMap * */public class HibernateMappingScanner {	private static HashMap hmAllAttributes = new HashMap();  	private static HashMap hmAllChildElements = new HashMap();  //	HibernateTreeParent treeRoot;//	private static Logger log =//		Log.getInstanse().getLogger(HibernateCFTreeSection.class);	private List getAllAttributes(String key){		synchronized(hmAllAttributes){			if(hmAllAttributes.containsKey(key)){				return (List)hmAllAttributes.get(key);			}			return null;		}	}	private synchronized void addAllAttributes(String key,List allAttributes){		synchronized(hmAllAttributes){			hmAllAttributes.put(key,allAttributes);		}			}	private synchronized List getAllChildElements(String key){		synchronized(hmAllChildElements){			if(hmAllChildElements.containsKey(key)){				return (List)hmAllChildElements.get(key);			}			return null;		}	}	private synchronized void addAllChildElements(String key,List allChildElement){		synchronized(hmAllChildElements){			hmAllChildElements.put(key,allChildElement);		}			}	/** Create new HibernateMappingScanner with org.w3c.dom.Document. */	public HibernateMappingScanner() {	}	/**遍历当前元素,得到相应的信息	 * @param elem 当前元素, 不能为空	 *  */	public void visitDocument(Node node, HibernateTreeParent treeRoot) {		if(node==null)			return;		Element element = null;				if(node instanceof Document){			element = ((Document)node).getDocumentElement();		}else if(node instanceof Element){			element = (Element)node;		}else{			return;		}		if ((element != null)&& element.getTagName().equals("hibernate-mapping")) {			visitElement_hibernate_mapping(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("import")) {			visitElement_import(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("class")) {			visitElement_class(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("id")) {			visitElement_id(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("composite-id")) {			visitElement_composite_id(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("discriminator")) {			visitElement_discriminator(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("version")) {			visitElement_version(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("timestamp")) {			visitElement_timestamp(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("subclass")) {			visitElement_subclass(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("joined-subclass")) {			visitElement_joined_subclass(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("property")) {			visitElement_property(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("many-to-one")) {			visitElement_many_to_one(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("one-to-one")) {			visitElement_one_to_one(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("key-property")) {			visitElement_key_property(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("key-many-to-one")) {			visitElement_key_many_to_one(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("any")) {			visitElement_any(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("component")) {			visitElement_component(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("dynabean")) {			visitElement_dynabean(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("parent")) {			visitElement_parent(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("map")) {			visitElement_map(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("set")) {			visitElement_set(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("bag")) {			visitElement_bag(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("idbag")) {			visitElement_idbag(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("list")) {			visitElement_list(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("array")) {			visitElement_array(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("primitive-array")) {			visitElement_primitive_array(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("element")) {			visitElement_element(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("one-to-many")) {			visitElement_one_to_many(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("many-to-many")) {			visitElement_many_to_many(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("composite-element")) {			visitElement_composite_element(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("nested-composite-element")) {			visitElement_nested_composite_element(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("key")) {			visitElement_key(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("index")) {			visitElement_index(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("index-many-to-many")) {			visitElement_index_many_to_many(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("composite-index")) {			visitElement_composite_index(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("many-to-any")) {			visitElement_many_to_any(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("index-many-to-any")) {			visitElement_index_many_to_any(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("collection-id")) {			visitElement_collection_id(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("generator")) {			visitElement_generator(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("param")) {			visitElement_param(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("column")) {			visitElement_column(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("jcs-cache")) {			visitElement_jcs_cache(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("query")) {			visitElement_query(element, treeRoot);		}		if ((element != null) && element.getTagName().equals("meta")) {			visitElement_meta(element, treeRoot);		}			}	/** Scan through org.w3c.dom.Element named hibernate-mapping. */	void visitElement_hibernate_mapping(		org.w3c.dom.Element element,		HibernateTreeParent root) { // <hibernate-mapping>					HibernateElementAttributes attr = new  HibernateElementAttributes(element);		if(getAllAttributes("hibernate-mapping")!=null){			attr.setAllAttributes(getAllAttributes("hibernate-mapping"));		}else{			//增加改element所有可能存在的属性			ElementAttribute elemAtrr = new ElementAttribute("schema",ElementAttribute.STRING);			attr.addAttribute(elemAtrr);					elemAtrr = new ElementAttribute("default-cascade",ElementAttribute.ENUM);			elemAtrr.setEnumData(new String[]{"none","save-update","all" });			elemAtrr.setDefaultData("none");			attr.addAttribute(elemAtrr);					elemAtrr = new ElementAttribute("auto-import",ElementAttribute.BOOLEAN);			attr.addAttribute(elemAtrr);						addAllAttributes("hibernate-mapping",attr.getAllAttributes());				}				if(this.getAllChildElements("hibernate-mapping")!=null){ 			attr.setAllChildElement(getAllChildElements("hibernate-mapping"));		}else{			attr.addChildElement("import");			attr.addChildElement("class");			attr.addChildElement("query");			attr.addChildElement("meta");			addAllChildElements("hibernate-mapping",attr.getAllChildElement());		}				dealRootObject(attr,root,"hibernate-mapping",HibernateTreeObject.HIBERNATE_MAPPING_ROOT,null);								org.w3c.dom.NodeList nodes = element.getChildNodes();		for (int i = 0; i < nodes.getLength(); i++) {			org.w3c.dom.Node node = nodes.item(i);			switch (node.getNodeType()) {				case org.w3c.dom.Node.ELEMENT_NODE :					org.w3c.dom.Element nodeElement =						(org.w3c.dom.Element) node;					if (nodeElement.getTagName().equals("import")) {						visitElement_import(nodeElement, root);					}					if (nodeElement.getTagName().equals("class")) {						visitElement_class(nodeElement, root);					}					if (nodeElement.getTagName().equals("query")) {						visitElement_query(nodeElement, root);					}					if (nodeElement.getTagName().equals("meta")) {						visitElement_meta(nodeElement, root);					}					break;			}		}	}	/** 根据要求处理得到的对象	 * @param attribute 属性名称  可以为空	 * */	void dealRootObject(HibernateElementAttributes heAttr,HibernateTreeParent root,String prefix,int type,String attribute) {		root.setObject(heAttr);		// element.getValue();		org.w3c.dom.NamedNodeMap attrs = heAttr.getElement().getAttributes();		for (int i = 0; i < attrs.getLength(); i++) {			org.w3c.dom.Attr attr = (org.w3c.dom.Attr)attrs.item(i);			for(int j=0;j<heAttr.getAllAttributes().size();j++){				ElementAttribute elemAttr = (ElementAttribute)heAttr.getAllAttributes().get(j);				if (attr.getName().equals(elemAttr.getAttributeName())) { 					heAttr.addCurrentAttributes(elemAttr.getAttributeName(),attr.getValue());				}			}		}		root.setDefalutAttribute(attribute);		/*		if(attribute!=null){			String value = heAttr.getElement().getAttribute(attribute);			if (value != null) {				root.setName(prefix+":" + value);			}			}*/	}			/** 根据要求处理得到的对象	 * @param attribute 属性名称  可以为空	 * */	HibernateTreeParent dealObject(HibernateElementAttributes heAttr,HibernateTreeParent root,String prefix,int type,String attribute) {		HibernateTreeParent obj = new HibernateTreeParent(prefix,heAttr,type);		root.addChild(obj);		// element.getValue();		org.w3c.dom.NamedNodeMap attrs = heAttr.getElement().getAttributes();		for (int i = 0; i < attrs.getLength(); i++) {			org.w3c.dom.Attr attr = (org.w3c.dom.Attr)attrs.item(i);			for(int j=0;j<heAttr.getAllAttributes().size();j++){				ElementAttribute elemAttr = (ElementAttribute)heAttr.getAllAttributes().get(j);				if (attr.getName().equals(elemAttr.getAttributeName())) { 					heAttr.addCurrentAttributes(elemAttr.getAttributeName(),attr.getValue());				}			}		}		obj.setDefalutAttribute(attribute);		/*		if(attribute!=null){			String value = heAttr.getElement().getAttribute(attribute);			if (value != null) {				obj.setName(prefix+":" + value);			}			}*/		return obj	;	}	/** Scan through org.w3c.dom.Element named import. */	void visitElement_import(org.w3c.dom.Element element,HibernateTreeParent root) { // <import>		HibernateElementAttributes attr = new  HibernateElementAttributes(element);				if(getAllAttributes("import")!=null){			attr.setAllAttributes(getAllAttributes("import"));		}else{			//增加改element所有可能存在的属性			ElementAttribute elemAtrr = new ElementAttribute("class",ElementAttribute.STRING);			elemAtrr.setRequired(true);			attr.addAttribute(elemAtrr);			elemAtrr = new ElementAttribute("rename",ElementAttribute.STRING);			elemAtrr.setRequired(true);			attr.addAttribute(elemAtrr);						addAllAttributes("import",attr.getAllAttributes());		}				HibernateTreeParent importObj =dealObject(attr,root,"import",HibernateTreeObject.HIBERNATE_IMPORT,"class");	}	/** Scan through org.w3c.dom.Element named class. */	void visitElement_class(		org.w3c.dom.Element element,

⌨️ 快捷键说明

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