.#analyzehbm.java.1.4

来自「xmlwenjian xmlwenjian xmlwenjian xmlwenj」· 4 代码 · 共 227 行

4
227
字号
package com.create;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

import org.w3c.dom.*;
public class AnalyzeHBM {
//	生成的文件的名字
	public static String fileName = "";
//标志位(根据该标志可以知道该表是复合主键还是单主键) true 复合主键 false 单主键
	public static boolean flg=true;	
//	包名	
	public static String packageName="";
//	标题	
	public static String titleName="";	
//表名	
	public static String tableName="";
//类名	
	public static String className="";
//主键类名	
	public static String pkClassName="";
//字段Id	
	public static String pkId[]=null;
	public static String fieldId[]=null;
//字段hibernate Id
	public static String pkHiberId[]=null;
	public static String fieldHiberId[]=null;
//字段类型
	public static String pkType[]=null;
	public static String fieldType[]=null;
//字段长度
	public static String pkLength[] = null;
	public static String fieldLength[] = null;
//创建xml头部
public static String createHead(){
	StringBuffer sb = new StringBuffer();
	sb.append("<?xml version=\"1.0\" encoding=\"GBK\" ?>\r\n");
	sb.append("<total name=\"tableXML\">\r\n");
	return sb.toString();
	}
//创建xml尾部
public static String createEnd(){
	StringBuffer sb = new StringBuffer();
	sb.append("</total>\r\n");
	return sb.toString();
	} 
public static String createSingXML() throws Exception{
StringBuffer sb = new StringBuffer();
boolean flg = false;
String str = "";
try{
sb.append("<packagename name=\""+packageName+"\"/>\r\n");
sb.append("<ptable>\r\n");
sb.append("    <titile name=\""+titleName+"\"/>\r\n");
sb.append("    <tablename name=\""+tableName+"\"/>\r\n");
sb.append("    <classname name=\""+className+"\"/>\r\n");
sb.append("    <pkclassname name=\""+pkClassName+"\"/>\r\n");
sb.append("    <key>\r\n");
for(int i=0;i<pkId.length;i++){	
if(pkLength[i]!=null && !pkLength[i].equals("")){	flg = true;	}
else {	flg = false;	}
if(flg){	str ="\"checker='Limit' min='0' max='"+pkLength[i]+"' msg='输入的值必须大于0且小于"+pkLength[i]+"'\"";	}
else{	str = "\"\"";	}
sb.append("       <id modelchoose=\"\" label=\"\" id=\""+pkId[i]+"\" hiberId=\""+pkHiberId[i]+"\" name=\""+pkId[i]+"\" type=\""+pkType[i]+"\" checker="+str+" list=\"\" infor=\"\" pkmodel=\"\" readonly=\"\" other=\"\" b1=\"\" b2=\"\" b3=\"no\" b4=\"yes\" />\r\n");
}
sb.append("    </key>\r\n");
sb.append("   <fields>\r\n");
for(int i=0;i<fieldId.length;i++){
if(fieldLength[i]!=null && !fieldLength[i].equals("")){	flg = true;	}
else {	flg = false;	}
if(flg){	str ="\"checker='Limit' min='0' max='"+fieldLength[i]+"' msg='输入的值必须大于0且小于"+fieldLength[i]+"'\"";	}
else{	str = "\"\"";	}
sb.append("       <field modelchoose=\"\" label=\"\" id=\""+fieldId[i]+"\" hiberId=\""+fieldHiberId[i]+"\" name=\""+fieldId[i]+"\" type=\""+fieldType[i]+"\" checker="+str+" list=\"\" infor=\"\" pkmodel=\"\" readonly=\"\" other=\"\" b1=\"\" b2=\"\" b3=\"no\" b4=\"yes\" />\r\n");
}
sb.append("  </fields>\r\n");
sb.append("  <qita name=\"\" />\r\n");
sb.append(" </ptable>\r\n");
}catch(Exception e){	e.printStackTrace();	throw new Exception("createSingXML error!");}
return sb.toString();	
	}
public static String createMutilXML(){
StringBuffer sb = new StringBuffer();
sb.append("<packagename name=\""+packageName+"\"/>\r\n");
sb.append("<ctable>\r\n");
sb.append("    <titile name=\""+titleName+"\"/>\r\n");
sb.append("    <tablename name=\""+tableName+"\"/>\r\n");
sb.append("    <classname name=\""+className+"\"/>\r\n");
sb.append("    <pkclassname name=\""+pkClassName+"\"/>\r\n");
sb.append("    <key>\r\n");
for(int i=0;i<pkId.length;i++){
	sb.append("       <id modelchoose=\"\" label=\"\" id=\""+pkId[i]+"\" hiberId=\""+pkHiberId[i]+"\" name=\""+pkId[i]+"\" type=\""+pkType[i]+"\" checker=\"checker='Limit' min='0' max='"+pkLength[i]+"' msg='输入的值必须大于0且小于"+pkLength[i]+"'\" list=\"\" infor=\"\" pkmodel=\"\" readonly=\"\" other=\"\" b1=\"\" b2=\"\" b3=\"no\" b4=\"yes\" />\r\n");
	}
sb.append("    </key>\r\n");
sb.append("   <fields>\r\n");
for(int i=0;i<fieldId.length;i++){
	sb.append("       <field modelchoose=\"\" label=\"\" id=\""+fieldId[i]+"\" hiberId=\""+fieldHiberId[i]+"\" name=\""+fieldId[i]+"\" type=\""+fieldType[i]+"\" checker=\"checker='Limit' min='0' max='"+fieldLength[i]+"' msg='输入的值必须大于0且小于"+fieldLength[i]+"'\" list=\"\" infor=\"\" pkmodel=\"\" readonly=\"\" other=\"\" b1=\"\" b2=\"\" b3=\"no\" b4=\"yes\" />\r\n");
	}       
sb.append("  </fields>\r\n");
sb.append("  <qita name=\"\" />\r\n");
sb.append(" </ctable>\r\n");		
	return sb.toString();		
	}
public String createSing() throws Exception{
	StringBuffer sb = new StringBuffer();
	sb.append(createHead());
	sb.append(createSingXML());	
	sb.append(createEnd());
	return sb.toString();
}
//解析HBM文件
public void analyze(Document dom){
	Element rootNode = dom.getDocumentElement();
	Element classNode=DOMUtil.getChildElementByName(rootNode,"class");
	Element compositeNode = null;
	Element[] pkPropertyNode = null;
	Element[] pkColumnNode = null;
	try{
	compositeNode=DOMUtil.getChildElementByName(classNode,"composite-id");
	pkPropertyNode=DOMUtil.getChildElementsByName(compositeNode,"key-property");
	}catch(Exception e){
//如果产生异常则该主键只有一个
    flg=false;
	pkPropertyNode=DOMUtil.getChildElementsByName(classNode,"id");	
	}
	pkColumnNode=new Element[pkPropertyNode.length];
	for(int i=0;i<pkPropertyNode.length;i++){
		pkColumnNode[i]=DOMUtil.getChildElementByName(pkPropertyNode[i],"column");			
	}	
	Element[] fieldPropertyNode=DOMUtil.getChildElementsByName(classNode,"property");
	Element[] fieldColumnNode=new Element[fieldPropertyNode.length];
	for(int i=0;i<fieldPropertyNode.length;i++){
		fieldColumnNode[i]=DOMUtil.getChildElementByName(fieldPropertyNode[i],"column");			
	}	
	packageName = classNode.getAttribute("name");
	tableName = classNode.getAttribute("table");
//该类名从包名最后一项获取	
	className = packageName.substring(packageName.lastIndexOf(".")+1);
//该类名从包名最后一项获取
	if(flg){
		pkClassName = compositeNode.getAttribute("class").substring(compositeNode.getAttribute("class").lastIndexOf(".")+1);
			}
	else{
		pkClassName = "";
		}
	pkHiberId = new String[pkPropertyNode.length];
	pkId = new String[pkPropertyNode.length];
	pkType =  new String[pkPropertyNode.length];
	pkLength  = new String[pkPropertyNode.length];
	for(int i=0;i<pkPropertyNode.length;i++){		
		pkHiberId[i] = pkPropertyNode[i].getAttribute("name");
		pkId[i] = pkColumnNode[i].getAttribute("name");
		pkType[i] =  pkPropertyNode[i].getAttribute("type");
		pkLength[i] = pkColumnNode[i].getAttribute("length");
	}
	fieldHiberId = new String[fieldPropertyNode.length];
	fieldId = new String[fieldPropertyNode.length];
	fieldType = new String[fieldPropertyNode.length];
	fieldLength = new String[fieldPropertyNode.length];
	for(int i=0;i<fieldPropertyNode.length;i++){
		fieldHiberId[i] = fieldPropertyNode[i].getAttribute("name");
		fieldId[i] = fieldColumnNode[i].getAttribute("name");
		fieldLength[i] = fieldColumnNode[i].getAttribute("length");
		fieldType [i] = fieldPropertyNode[i].getAttribute("type");
	}
//	System.out.println("packageName:"+packageName+"\r\n"+"tableName"+tableName+"\r\n"+"tableName"+tableName+"\r\n");
//	System.out.println("className:"+className+"\r\n"+"pkClassName"+pkClassName+"\r\n"+"pkHiberId"+pkHiberId.length+"\r\n");
//	System.out.println("pkId:"+pkId.length+"\r\n"+"pkType"+pkType.length+"\r\n"+"fieldHiberId"+fieldHiberId.length+"\r\n");
//	System.out.println("fieldId:"+fieldId.length+"\r\n"+"fieldType"+fieldType.length+"\r\n");
}
public static void main(String args[]){
//	File f=new File("D:\\Analyze\\Indb.hbm.xml");
	File f2=new File("D:\\Analyze\\Indbd.hbm.xml");
	File f=new File("D:\\Analyze\\TPlace.hbm.xml");
	String filename = "";
	Document dom = null;
	String str = "";
	
	try {
		dom = DOMUtil.loadXML(f);
	} catch (Exception e) {System.out.println("dom load error!");}
	AnalyzeHBM test = new AnalyzeHBM();
	test.analyze(dom);
	filename = tableName;
/*
	try {
		StringBuffer sb = new StringBuffer();
		sb.append(createHead());	
		sb.append(createSingXML());
		sb.append("\r\n");
		dom = DOMUtil.loadXML(f2);
		test.analyze(dom);
		filename = filename + "And"+tableName;
		sb.append(createMutilXML());	
		sb.append(createEnd());
		str = sb.toString();
	} catch (Exception e) {	System.out.println(e.getMessage());	}
*/	

	try{
	filename = tableName;
	str = test.createSing();
	} catch (Exception e) {	System.out.println(e.getMessage());	}
	
	
    File outf=new File("D:\\Analyze\\"+filename+".xml");
    outf.getParentFile().mkdirs();
    FileWriter fw;
	try {
		fw = new FileWriter(outf,true);
    fw.write(str);
    fw.close();
	} catch (IOException e) {System.out.println("create file error!");}
}
}












⌨️ 快捷键说明

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