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

📄 jspcg.java

📁 基于CERP系统的程序生成技术讨论
💻 JAVA
字号:
import java.io.*;
import java.lang.reflect.*;
import java.net.*;
public class JspCG {
	private String path_template = "";

	private String path_xml = "";

	private String path_results = "";
	
	private PrintWriter out = null;
	private boolean inFlag=false;
	
	public static String entrance;

	public JspCG(String path_template, String path_xml, String path_results) {
		this.path_template=path_template;
		this.path_xml=path_xml;
		this.path_results=path_results;
		try
		{
			if(entrance.equals("0"))
			{
				out=new PrintWriter(new BufferedWriter(new FileWriter("D:\\temp2.java")),true); 
			}
			else
			{
				out=new PrintWriter(new BufferedWriter(new FileWriter("D:\\temp1.java")),true); 
			}
		}
		catch(Exception e)
		{
			e.printStackTrace();			
		}
	}

	public void run() {
		File templateFile=new File(path_template);
		writeHead();
		try{
		BufferedReader in=new BufferedReader(new FileReader(templateFile));
		  String line="";
		  //在标记之外
		  while((line=in.readLine())!=null){
		   while(line.length()>0){
			   System.out.println(line+"---"+inFlag);
			   line=deal(line);
		   }
		  }		  		  		  
		  in.close();
		}catch(Exception e){
			
		}finally{
			
		}
		writeMid();
		try{
			BufferedReader in=new BufferedReader(new FileReader(templateFile));
			  String line="";
			  //在标记之外
			  while((line=in.readLine())!=null){
			   while(line.length()>0){
				   System.out.println(line+"---"+inFlag);
				   line=deal(line);
			   }
			  }		  		  		  
			  in.close();
			}catch(Exception e){
				e.printStackTrace();
			}finally{
				
			}
		writeEnd();

	}
	public String deal(String line) {
		int pre = line.indexOf("<&&");
		int post = line.indexOf("&&>");		
		if(inFlag==true){//在标记中
			if(post>=0&&pre==-1){
				out.println(line.substring(0,post).replaceAll("\"","\\\""));
				inFlag=false;
				line=line.substring(post+3);
			}else if(post==pre){//==-1
				out.println(line.replaceAll("\"","\\\""));
				line="";
			}
		}else{//在标记外
			System.out.println("------here2");
			if(pre==-1){//本行没标记
				System.out.println("------here4");
				out.println("out.println(\""+line.replaceAll("\"","\\\\\"")+"\");");
				line="";
				
			}else if(line.substring(pre).length()>3&&line.charAt(pre+3)=='='){//本行有标记,为<&&=
				System.out.println("------here3");
				if(pre>0)
					out.print("out.print(\""+line.substring(0,pre).replaceAll("\"","\\\\\"")+"\");");
				out.println("out.print("+line.substring(pre+4,post)+");");
				line=line.substring(post+3);
			}else{//本行有标记,为<&&
				if(post>0){
					System.out.println("------here1");
					if(pre>0)
						out.println("out.println(\""+line.substring(0,pre)+"\");");
					out.println(line.substring(pre+3,post).replaceAll("\"","\\\""));
					line=line.substring(post+3);
				}else{//本行没有结束标记
					out.println(line.substring(pre+3).replaceAll("\"","\\\""));
					inFlag=true;
					System.out.println("------here");
					line="";
				}
			}
			  
		}
		return line;
		
	}

	public void writeHead(){
		out.println("import java.io.*;");
		out.println("import java.util.*;");
		out.println("import org.jdom.*;");
		out.println("import org.jdom.xpath.*;");
		out.println("import org.jdom.input.*;");
		out.println("");
		out.println("");
		if(entrance.equals("0"))
		{
			out.println("class temp2{");
		}
		else
		{
			out.println("class temp1{");
		}
		out.println("public static void main(String[] args){");
		out.println("PrintWriter out = null;");
		out.println("try{");
		out.println("SAXBuilder builder = new SAXBuilder();");
		out.println("Document doc = builder.build(new File(\""+path_xml+"\"));");
		out.println("");
		out.println("String path_results = \""+path_results+"\";");
		out.println("");
		out.println("out=new PrintWriter(new BufferedWriter(new FileWriter(path_results)),true);");
		
		
		
	}
	public void writeMid(){
		out.println("}catch(Exception e){");
		out.println("e.printStackTrace();");
		out.println("}");
		out.println("");
		out.println("}");
		out.println("public void aa(){");
		out.println("PrintWriter out = null;");
		out.println("try{");
		out.println("SAXBuilder builder = new SAXBuilder();");
		out.println("Document doc = builder.build(new File(\""+path_xml+"\"));");
		out.println("");
		out.println("String path_results = \""+path_results+"\";");
		
		out.println("out=new PrintWriter(new BufferedWriter(new FileWriter(path_results)),true);");
		
	}
	public void writeEnd(){
	
		
		out.println("}catch(Exception e){");
		out.println("e.printStackTrace();");
		out.println("}");
		out.println("");
		out.println("}");
		out.println("}");
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		/*关联java*/
		String path_template;
		String path_xml;
		String path_results;
		
		entrance = args[0];
/////////////////// added by tao xian feng
		new File("D:/com/").mkdir();
		new File("D:/com/huiton/").mkdir();
		new File("D:/com/huiton/cerp/").mkdir();
		new File("D:/com/huiton/cerp/sam").mkdir();
/////////////////// end		
		if(entrance.equals("0"))
		{
			path_template = "D:\\reqAssPlan.template.jsp";
			path_xml = "D:\\\\assModel.xml";
			path_results = "D:\\\\reqAssPlan.jsp";	
		}
		else
		{
			path_template = "D:\\NewAss.template.java";
			path_xml = "D:\\\\assModel.xml";
/////////////////// modified by tao xian feng
			path_results = "D:\\\\com\\\\huiton\\\\cerp\\\\sam\\\\HelloWorld.java";				
		}			
		
		//生成中间java文件
		JspCG jcg = new JspCG(path_template, path_xml, path_results);
		jcg.run();
		//编译中间java文件
		String arg[]= { "-d", "D:/", "D:/temp1.java" };
		if(entrance.equals("0"))
		{
			arg[0] = "-d";
			arg[1] = "D:/";
			arg[2] = "D:/temp2.java";
			//{ "-d", "D:/", "D:/temp2.java" };
		}
		else
		{
			arg[0] = "-d";
			arg[1] = "D:/";
			arg[2] = "D:/temp1.java";
			//arg[] = { "-d", "D:/", "D:/temp1.java" };
		}
		com.sun.tools.javac.Main.compile(arg);
		//运行中间java文件
		try {
			Class params[] = {};
			Object paramsObj[] = {};
			Class thisClass;
			if(entrance.equals("0"))
			{
				thisClass = Class.forName("temp2");
			}
			else
			{
				thisClass = Class.forName("temp1");
			}
			Object iClass = thisClass.newInstance();
			Method thisMethod = thisClass.getDeclaredMethod("aa", params);
			thisMethod.invoke(iClass, paramsObj);
///////////////// added by tao xian feng
			if(entrance.equals("1")){
			arg[0] = "-d";
			arg[1] = "D:\\";
			arg[2] = "D:/com/huiton/cerp/sam/HelloWorld.java";           
			com.sun.tools.javac.Main.compile(arg);}
///////////////// end
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

⌨️ 快捷键说明

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