📄 jspcg.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 + -