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