
net.sf.xmlform.tool.XML2Java Maven / Gradle / Ivy
package net.sf.xmlform.tool;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.xml.sax.InputSource;
import net.sf.xmlform.XMLFormException;
import net.sf.xmlform.config.ConfigParseResult;
import net.sf.xmlform.config.ConfigurationFactory;
import net.sf.xmlform.config.FieldDefinition;
import net.sf.xmlform.config.FormDefinition;
import net.sf.xmlform.config.SubformDefinition;
import net.sf.xmlform.config.TypeDefinition;
import net.sf.xmlform.type.BaseTypes;
import net.sf.xmlform.type.IType;
import net.sf.xmlform.util.FormUtils;
/**
* @author Liu Zhikun
*/
public class XML2Java {
final static public String META_SUPERCLASS="xml2java.superclass";
final static public String META_INTERFACES="xml2java.interfaces";
final static public String META_COMMENT="xml2java.comment";
final static public String META_ANNOTATION="xml2java.annotation";
public static void main(String[] args) {
if(args.length<2){
System.err.println("usage: XML2Java source... destination");
return;
}
XML2Java xj=new XML2Java(args);
xj.run();
}
class Form{
public Map getFields() {
return fields;
}
public void setFields(Map fields) {
this.fields = fields;
}
public Map getSubforms() {
return subforms;
}
public void setSubforms(Map subforms) {
this.subforms = subforms;
}
public String getClazz() {
return clazz;
}
String clazz;
Map fields=new HashMap();
Map subforms=new HashMap();
public Form(String clazz){
this.clazz=clazz;
}
}
String _dirs[];
Map _types=null;
Map _forms=null;
Map _resultFomrs=null;
final static String LIST_TYPE="java.util.List";
private ConfigurationFactory configurationFactory=new ConfigurationFactory();
public XML2Java(String args[]){
_dirs=args;
_dirs[_dirs.length-1]=_dirs[_dirs.length-1].replaceAll("\\\\","/");
if(!_dirs[_dirs.length-1].endsWith("/")){
_dirs[_dirs.length-1]+="/";
}
}
public void run(){
_types=new HashMap();
_forms=new HashMap();
_resultFomrs=new HashMap();
for(int i=0;i<_dirs.length-1;i++)
searchFiles(new File(_dirs[i]));
createJavaFiles();
}
private void searchFiles(File dir){
File files[]=dir.listFiles();
for(int i=0;i0){
packageName=fdef.getClazz().substring(0,fdef.getClazz().lastIndexOf("."));
className=fdef.getClazz().substring(fdef.getClazz().lastIndexOf(".")+1);
pathName=packageName.replaceAll("\\.","/")+"/";
}else{
className=fdef.getClazz();
}
String fileName=_dirs[_dirs.length-1]+fdef.getClazz().replaceAll("\\.","/")+".java";
File dir=new File(_dirs[_dirs.length-1]+pathName);
dir.mkdirs();
File javaFile=new File(fileName);
PrintWriter pw=new PrintWriter(javaFile);
if(packageName.length()>0){
pw.print("package ");
pw.print(packageName);
pw.println(";");
}
pw.println();
pw.println("/**\n * This java file is generated by XMLForm.\n * http://javaxmlform.sourceforge.net/\n *\n */");
pw.println();
pw.print("public class ");
pw.print(className);
pw.println(" {");
Iterator fit=fdef.getFields().keySet().iterator();
while(fit.hasNext()){
String name=(String)fit.next();
printField(pw,name,getType((String)fdef.getFields().get(name)));
}
Iterator sit=fdef.getSubforms().keySet().iterator();
while(sit.hasNext()){
String name=(String)sit.next();
printField(pw,name,"java.util.List");
}
pw.println();
fit=fdef.getFields().keySet().iterator();
while(fit.hasNext()){
String name=(String)fit.next();
printMethod(pw,name,getType((String)fdef.getFields().get(name)));
}
sit=fdef.getSubforms().keySet().iterator();
while(sit.hasNext()){
String name=(String)sit.next();
printMethod(pw,name,"java.util.List");
}
pw.println("}");
pw.close();
}
private void printField(PrintWriter pw,String name,String type){
pw.print("\tprivate ");
pw.print(type);
pw.print(" ");
pw.print(name);
if(LIST_TYPE.equals(type)){
pw.write("=new java.util.ArrayList()");
}
pw.println(";");
}
private void printMethod(PrintWriter pw,String name,String type){
pw.print("\tpublic ");
pw.print(type);
pw.print(" get");
pw.print(FormUtils.firstCharToUpperCase(name));
pw.println("(){");
pw.print("\t\treturn this.");
pw.print(name);
pw.println(";");
pw.println("\t}");
pw.print("\tpublic void set");
pw.print(FormUtils.firstCharToUpperCase(name));
pw.print("(");
pw.print(type);
pw.print(" ");
pw.print(name);
pw.println("){");
pw.print("\t\tthis.");
pw.print(name);
pw.print("=");
pw.print(name);
pw.println(";");
pw.println("\t}");
}
private String getType(String typeName){
IType type=BaseTypes.getTypeByName(typeName);
if(type!=null)
return type.getJavaTypeName();
TypeDefinition tdef=(TypeDefinition)_types.get(typeName);
if(tdef==null)
throw new XMLFormException(XMLFormException.SE_TYPE_UNKNOWN,typeName);
return getType(tdef.getBase());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy