Parseur -> build clazz (simple replace of show method)

This commit is contained in:
jeffcheasey88 2023-06-05 11:26:46 +02:00
parent 6909ca513c
commit 0159f9c5fc
14 changed files with 147 additions and 120 deletions

Binary file not shown.

View file

@ -1,5 +1,6 @@
package be.jeffcheasey88.peeratcode.parser.java; package be.jeffcheasey88.peeratcode.parser.java;
import java.io.BufferedWriter;
import java.lang.reflect.Modifier; import java.lang.reflect.Modifier;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -98,17 +99,20 @@ public class Class extends JavaElement{
// return this.vars; // return this.vars;
// } // }
public void show(int tab){ @Override
String start = ""; public void build(BufferedWriter writer, int tab) throws Exception{
for(int i = 0; i < tab; i++) start+="\t"; super.build(writer, tab);
System.out.println(start+Modifier.toString(modifier)+" "+this.name+"{"); writer.write(Modifier.toString(modifier)+" "+this.name+"{\n");
for(JavaElement jElement : this.childs){
jElement.show(tab+1);
System.out.println();
}
System.out.println(start+"}");
}
for(JavaElement child : this.childs){
child.build(writer, tab+1);
writer.write("\n");
}
super.build(writer, tab);
writer.write("}\n");
}
@Override @Override
public <E extends JavaElement> E find(java.util.function.Function<JavaElement, Boolean> search, java.util.function.Function<List<JavaElement>, Boolean> deep, List<JavaElement> trace){ public <E extends JavaElement> E find(java.util.function.Function<JavaElement, Boolean> search, java.util.function.Function<List<JavaElement>, Boolean> deep, List<JavaElement> trace){
if(search.apply(this)) return (E)this; if(search.apply(this)) return (E)this;

View file

@ -1,5 +1,6 @@
package be.jeffcheasey88.peeratcode.parser.java; package be.jeffcheasey88.peeratcode.parser.java;
import java.io.BufferedWriter;
import java.lang.reflect.Modifier; import java.lang.reflect.Modifier;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;
@ -93,15 +94,18 @@ public class Function extends OperationContainer{
}while(quote); }while(quote);
} }
public void show(int tab){ @Override
String start = ""; public void build(BufferedWriter writer, int tab) throws Exception{
for(int i = 0; i < tab; i++) start+="\t";
String param = ""; String param = "";
for(Variable v : this.parameters) param+=","+v.getType()+" "+v.getName()+""; for(Variable v : this.parameters) param+=","+v.getType()+" "+v.getName()+"";
if(!param.isEmpty()) param = param.substring(1); if(!param.isEmpty()) param = param.substring(1);
System.out.println(start+Modifier.toString(modifier)+" "+(constructor ? "" : returnType+" ")+name+"("+param+") "+exceptions+"{"); super.build(writer, tab);
for(JavaElement child : getChilds()) child.show(tab+1); writer.write(Modifier.toString(modifier)+" "+(constructor ? "" : returnType+" ")+name+"("+param+") "+exceptions+"{\n");
System.out.println(start+"}");
for(JavaElement child : getChilds()) child.build(writer, tab+1);
super.build(writer, tab);
writer.write("}\n");
} }
} }

View file

@ -1,5 +1,6 @@
package be.jeffcheasey88.peeratcode.parser.java; package be.jeffcheasey88.peeratcode.parser.java;
import java.io.BufferedWriter;
import java.util.List; import java.util.List;
import java.util.function.BiFunction; import java.util.function.BiFunction;
import java.util.function.Function; import java.util.function.Function;
@ -11,6 +12,9 @@ public abstract class JavaElement {
public abstract <E extends JavaElement> E find(Function<JavaElement, Boolean> search, Function<List<JavaElement>, Boolean> deep, List<JavaElement> trace); public abstract <E extends JavaElement> E find(Function<JavaElement, Boolean> search, Function<List<JavaElement>, Boolean> deep, List<JavaElement> trace);
public abstract <E extends JavaElement> E find(BiFunction<JavaElement, List<JavaElement>, Boolean> search, List<JavaElement> trace); public abstract <E extends JavaElement> E find(BiFunction<JavaElement, List<JavaElement>, Boolean> search, List<JavaElement> trace);
//Only for development public void build(BufferedWriter writer, int tab) throws Exception {
public abstract void show(int tab); String spacement = "";
for(int i = 0; i < tab; i++) spacement+="\t";
writer.write(spacement);
}
} }

View file

@ -21,8 +21,8 @@ public class JavaParser{
JavaParser parser = new JavaParser(reader); JavaParser parser = new JavaParser(reader);
parser.parse(); parser.parse();
System.out.println("SHOW-----------------"); System.out.println("build-----------------");
parser.show(); parser.build(new BufferedWriter(new FileWriter(new File("/home/buildClazzFromParser.txt"))));
} }
public static void mainee(String[] args) throws Exception { public static void mainee(String[] args) throws Exception {
@ -44,7 +44,6 @@ public class JavaParser{
JavaParser parser = new JavaParser(reader); JavaParser parser = new JavaParser(reader);
parser.parse(); parser.parse();
System.out.println("SHOW-----------------"); System.out.println("SHOW-----------------");
parser.show();
} }
private static void show(File dir) throws Exception{ private static void show(File dir) throws Exception{
@ -131,14 +130,18 @@ public class JavaParser{
return this.clazz; return this.clazz;
} }
public void show(){ public void build(BufferedWriter writer) throws Exception{
System.out.println("package "+this.pack.getName()+";"); writer.write("package "+this.pack.getName()+";\n");
System.out.println(); writer.write("\n");
for(Import i : this.imports) System.out.println("import "+i.getName()+";"); for(Import element : this.imports) writer.write("import "+element.getName()+";\n");
System.out.println(); writer.write("\n");
this.clazz.show(0);
this.clazz.build(writer, 0);
writer.flush();
writer.close();
} }
public static int getModifier(String modifier){ public static int getModifier(String modifier){
switch(modifier){ switch(modifier){
case "public": return Modifier.PUBLIC; case "public": return Modifier.PUBLIC;

View file

@ -1,5 +1,6 @@
package be.jeffcheasey88.peeratcode.parser.java.operations; package be.jeffcheasey88.peeratcode.parser.java.operations;
import java.io.BufferedWriter;
import java.util.List; import java.util.List;
import java.util.function.BiFunction; import java.util.function.BiFunction;
import java.util.regex.Matcher; import java.util.regex.Matcher;
@ -27,12 +28,11 @@ public class AssigmentOperation extends JavaElement{
return matcher.group(1).length(); return matcher.group(1).length();
} }
@Override @Override
public void show(int tab){ public void build(BufferedWriter writer, int tab) throws Exception{
String start = ""; super.build(writer, tab);
for(int i = 0; i < tab; i++) start+="\t"; writer.write(variable+"= "+value+";\n");
System.out.println(start+variable+" = "+value+";");
} }
@Override @Override

View file

@ -1,5 +1,6 @@
package be.jeffcheasey88.peeratcode.parser.java.operations; package be.jeffcheasey88.peeratcode.parser.java.operations;
import java.io.BufferedWriter;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -55,14 +56,25 @@ public class ConditionalOperation extends OperationContainer{
return index+bodysize; return index+bodysize;
} }
@Override @Override
public void show(int tab) { public void build(BufferedWriter writer, int tab) throws Exception{
String start = ""; boolean empty = getChilds().size() == 0;
for(int i = 0; i < tab; i++) start+="\t"; if(empty){
System.out.println(start+"Condition??"+condition+"{"); writer.write(";\n");
for(JavaElement child : getChilds()) child.show(tab+1); return;
System.out.println(start+"}"); }
boolean oneChild = getChilds().size() == 1;
if(oneChild) writer.write("\t");
else writer.write("{\n");
for(JavaElement child : getChilds()) child.build(writer, oneChild ? 0 : tab+1);
if(!oneChild){
super.build(writer, tab);
writer.write("}\n");
}
} }
public static class IfOperation extends ConditionalOperation{ public static class IfOperation extends ConditionalOperation{
@ -72,14 +84,15 @@ public class ConditionalOperation extends OperationContainer{
public IfOperation(){ public IfOperation(){
super(PATTERN); super(PATTERN);
} }
@Override @Override
public void show(int tab) { public void build(BufferedWriter writer, int tab) throws Exception{
String start = ""; String spacement = "";
for(int i = 0; i < tab; i++) start+="\t"; for(int i = 0; i < tab; i++) spacement+="\t";
System.out.println(start+"if"+super.condition+"{");
for(JavaElement child : getChilds()) child.show(tab+1); writer.write(spacement+"if"+super.condition);
System.out.println(start+"}"); super.build(writer, tab+1);
} }
} }
@ -92,12 +105,12 @@ public class ConditionalOperation extends OperationContainer{
} }
@Override @Override
public void show(int tab) { public void build(BufferedWriter writer, int tab) throws Exception{
String start = ""; String spacement = "";
for(int i = 0; i < tab; i++) start+="\t"; for(int i = 0; i < tab; i++) spacement+="\t";
System.out.println(start+"for"+super.condition+"{");
for(JavaElement child : getChilds()) child.show(tab+1); writer.write(spacement+"for"+super.condition);
System.out.println(start+"}"); super.build(writer, tab+1);
} }
} }
@ -110,12 +123,12 @@ public class ConditionalOperation extends OperationContainer{
} }
@Override @Override
public void show(int tab) { public void build(BufferedWriter writer, int tab) throws Exception{
String start = ""; String spacement = "";
for(int i = 0; i < tab; i++) start+="\t"; for(int i = 0; i < tab; i++) spacement+="\t";
System.out.println(start+"while"+super.condition+"{");
for(JavaElement child : getChilds()) child.show(tab+1); writer.write(spacement+"while"+super.condition);
System.out.println(start+"}"); super.build(writer, tab+1);
} }
} }
} }

View file

@ -1,5 +1,6 @@
package be.jeffcheasey88.peeratcode.parser.java.operations; package be.jeffcheasey88.peeratcode.parser.java.operations;
import java.io.BufferedWriter;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -36,12 +37,14 @@ public class DoOperation extends OperationContainer{
} }
@Override @Override
public void show(int tab) { public void build(BufferedWriter writer, int tab) throws Exception{
String start = ""; super.build(writer, tab);
for(int i = 0; i < tab; i++) start+="\t"; writer.write("do{\n");
System.out.println(start+"do{");
for(JavaElement child : getChilds()) child.show(tab+1); for(JavaElement child : getChilds()) child.build(writer, tab+1);
System.out.println(start+"}");
super.build(writer, tab);
writer.write("}\n");
} }
} }

View file

@ -1,5 +1,6 @@
package be.jeffcheasey88.peeratcode.parser.java.operations; package be.jeffcheasey88.peeratcode.parser.java.operations;
import java.io.BufferedWriter;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -41,13 +42,22 @@ public class ElseOperation extends OperationContainer{
} }
@Override @Override
public void show(int tab) { public void build(BufferedWriter writer, int tab) throws Exception{
String start = ""; super.build(writer, tab);
for(int i = 0; i < tab; i++) start+="\t"; writer.write("else ");
System.out.println(start+"else{");
for(JavaElement child : getChilds()) child.show(tab+1); boolean oneOperation = getChilds().size() == 1;
System.out.println(start+"}"); if(oneOperation){
getChilds().get(0).build(writer, 0);
return;
}
writer.write("{\n");
for(JavaElement child : getChilds()) child.build(writer, tab+1);
super.build(writer, tab);
writer.write("}\n");
} }
} }

View file

@ -1,5 +1,6 @@
package be.jeffcheasey88.peeratcode.parser.java.operations; package be.jeffcheasey88.peeratcode.parser.java.operations;
import java.io.BufferedWriter;
import java.util.List; import java.util.List;
import java.util.function.BiFunction; import java.util.function.BiFunction;
import java.util.regex.Matcher; import java.util.regex.Matcher;
@ -24,12 +25,6 @@ public class LoopAffectOperation extends JavaElement{
return matcher.group(1).length(); return matcher.group(1).length();
} }
@Override
public void show(int tab){
String start = "";
for(int i = 0; i < tab; i++) start+="\t";
System.out.println(start+"loop affect??;");
}
@Override @Override
public <E extends JavaElement> E find(java.util.function.Function<JavaElement, Boolean> search, java.util.function.Function<List<JavaElement>, Boolean> deep, List<JavaElement> trace){ public <E extends JavaElement> E find(java.util.function.Function<JavaElement, Boolean> search, java.util.function.Function<List<JavaElement>, Boolean> deep, List<JavaElement> trace){
@ -51,11 +46,11 @@ public class LoopAffectOperation extends JavaElement{
} }
@Override @Override
public void show(int tab){ public void build(BufferedWriter writer, int tab) throws Exception {
String start = ""; super.build(writer, tab);
for(int i = 0; i < tab; i++) start+="\t"; writer.write("continue;\n");
System.out.println(start+"continue;");
} }
} }
public static class BreakOperation extends LoopAffectOperation{ public static class BreakOperation extends LoopAffectOperation{
@ -67,10 +62,9 @@ public class LoopAffectOperation extends JavaElement{
} }
@Override @Override
public void show(int tab){ public void build(BufferedWriter writer, int tab) throws Exception {
String start = ""; super.build(writer, tab);
for(int i = 0; i < tab; i++) start+="\t"; writer.write("break;\n");
System.out.println(start+"break;");
} }
} }
} }

View file

@ -1,5 +1,6 @@
package be.jeffcheasey88.peeratcode.parser.java.operations; package be.jeffcheasey88.peeratcode.parser.java.operations;
import java.io.BufferedWriter;
import java.util.List; import java.util.List;
import java.util.function.BiFunction; import java.util.function.BiFunction;
import java.util.regex.Matcher; import java.util.regex.Matcher;
@ -31,14 +32,13 @@ public class MethodCallOperation extends JavaElement{
public String getValue(){ public String getValue(){
return this.value; return this.value;
} }
@Override
public void show(int tab){
String start = "";
for(int i = 0; i < tab; i++) start+="\t";
System.out.println(start+value+";");
}
@Override
public void build(BufferedWriter writer, int tab) throws Exception{
super.build(writer, tab);
writer.write(value+";\n");
}
@Override @Override
public <E extends JavaElement> E find(java.util.function.Function<JavaElement, Boolean> search, java.util.function.Function<List<JavaElement>, Boolean> deep, List<JavaElement> trace){ public <E extends JavaElement> E find(java.util.function.Function<JavaElement, Boolean> search, java.util.function.Function<List<JavaElement>, Boolean> deep, List<JavaElement> trace){
return search.apply(this) ? (E)this : null; return search.apply(this) ? (E)this : null;

View file

@ -1,5 +1,6 @@
package be.jeffcheasey88.peeratcode.parser.java.operations; package be.jeffcheasey88.peeratcode.parser.java.operations;
import java.io.BufferedWriter;
import java.util.List; import java.util.List;
import java.util.function.BiFunction; import java.util.function.BiFunction;
import java.util.regex.Matcher; import java.util.regex.Matcher;
@ -35,19 +36,19 @@ public class ReturnOperation extends JavaElement{
return matcher.group(1).length(); return matcher.group(1).length();
} }
@Override @Override
public void show(int tab){ public void build(BufferedWriter writer, int tab) throws Exception{
String start = ""; super.build(writer, tab);
for(int i = 0; i < tab; i++) start+="\t";
if(value != null){ if(value != null){
System.out.println("return"); writer.write("return");
value.show(tab+1); value.build(writer, 0);
System.out.println(";"); writer.write(";\n");
return; return;
} }
System.out.println(start+"return "+toChange+";"); writer.write("return "+toChange+";\n");
} }
@Override @Override
public <E extends JavaElement> E find(java.util.function.Function<JavaElement, Boolean> search, java.util.function.Function<List<JavaElement>, Boolean> deep, List<JavaElement> trace){ public <E extends JavaElement> E find(java.util.function.Function<JavaElement, Boolean> search, java.util.function.Function<List<JavaElement>, Boolean> deep, List<JavaElement> trace){

View file

@ -1,5 +1,6 @@
package be.jeffcheasey88.peeratcode.parser.java.operations; package be.jeffcheasey88.peeratcode.parser.java.operations;
import java.io.BufferedWriter;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -27,7 +28,7 @@ public class SynchronizedOperation extends OperationContainer{
matcher.matches(); matcher.matches();
content = matcher.group(1); content = matcher.group(1);
index += content.length(); index += content.length();
content = local.unzipOne(content, (s,p) -> s); content = local.unzipOne(content, (s,p) -> s);
content = content.substring(1, content.length()-1); content = content.substring(1, content.length()-1);
@ -36,14 +37,16 @@ public class SynchronizedOperation extends OperationContainer{
return index; return index;
} }
@Override @Override
public void show(int tab){ public void build(BufferedWriter writer, int tab) throws Exception{
String start = ""; super.build(writer, tab);
for(int i = 0; i < tab; i++) start+="\t"; writer.write("synchronized"+this.include+"{\n");
System.out.println(start+"synchronized"+this.include+"{");
for(JavaElement child : getChilds()) child.show(tab+1); for(JavaElement child : getChilds()) child.build(writer, tab+1);
System.out.println(start+"}");
super.build(writer, tab);
writer.write("}\n");
} }
} }

View file

@ -43,8 +43,6 @@ class OperationTest{
JavaParser parser = parse("package be.jeffcheasey88.peeratcode.parser.java; class Test{ void function(){ int i = 0; if(i == 0) { return i; } return i; } }"); JavaParser parser = parse("package be.jeffcheasey88.peeratcode.parser.java; class Test{ void function(){ int i = 0; if(i == 0) { return i; } return i; } }");
Class clazz = parser.getClazz(); Class clazz = parser.getClazz();
clazz.show(0);
assertEquals(1, clazz.getChilds().size()); assertEquals(1, clazz.getChilds().size());
Function function = (Function) clazz.getChilds().get(0); Function function = (Function) clazz.getChilds().get(0);
assertEquals(3, function.getChilds().size()); assertEquals(3, function.getChilds().size());
@ -60,8 +58,6 @@ class OperationTest{
JavaParser parser = parse("package be.jeffcheasey88.peeratcode.parser.java; class Test{ void function(){ int i = 0; if(i == 0); return i; } }"); JavaParser parser = parse("package be.jeffcheasey88.peeratcode.parser.java; class Test{ void function(){ int i = 0; if(i == 0); return i; } }");
Class clazz = parser.getClazz(); Class clazz = parser.getClazz();
clazz.show(0);
assertEquals(1, clazz.getChilds().size()); assertEquals(1, clazz.getChilds().size());
Function function = (Function) clazz.getChilds().get(0); Function function = (Function) clazz.getChilds().get(0);
assertEquals(3, function.getChilds().size()); assertEquals(3, function.getChilds().size());
@ -77,8 +73,6 @@ class OperationTest{
JavaParser parser = parse("package be.jeffcheasey88.peeratcode.parser.java; class Test{ void function(){ int i = 0; do{ System.out.println(\"Hello\"); }while(i == 0); return i; } }"); JavaParser parser = parse("package be.jeffcheasey88.peeratcode.parser.java; class Test{ void function(){ int i = 0; do{ System.out.println(\"Hello\"); }while(i == 0); return i; } }");
Class clazz = parser.getClazz(); Class clazz = parser.getClazz();
clazz.show(0);
assertEquals(1, clazz.getChilds().size()); assertEquals(1, clazz.getChilds().size());
Function function = (Function) clazz.getChilds().get(0); Function function = (Function) clazz.getChilds().get(0);
assertEquals(4, function.getChilds().size()); assertEquals(4, function.getChilds().size());
@ -101,8 +95,6 @@ class OperationTest{
JavaParser parser = parse("package be.jeffcheasey88.peeratcode.parser.java; class Test{ void function(){ for(int i = 0; i < 1; i++) continue; } }"); JavaParser parser = parse("package be.jeffcheasey88.peeratcode.parser.java; class Test{ void function(){ for(int i = 0; i < 1; i++) continue; } }");
Class clazz = parser.getClazz(); Class clazz = parser.getClazz();
clazz.show(0);
assertEquals(1, clazz.getChilds().size()); assertEquals(1, clazz.getChilds().size());
Function function = (Function) clazz.getChilds().get(0); Function function = (Function) clazz.getChilds().get(0);
assertEquals(1, function.getChilds().size()); assertEquals(1, function.getChilds().size());
@ -123,8 +115,6 @@ class OperationTest{
JavaParser parser = parse("package be.jeffcheasey88.peeratcode.parser.java; class Test{ void function(){ for(int i = 0; i < 1; i++) break ; } }"); JavaParser parser = parse("package be.jeffcheasey88.peeratcode.parser.java; class Test{ void function(){ for(int i = 0; i < 1; i++) break ; } }");
Class clazz = parser.getClazz(); Class clazz = parser.getClazz();
clazz.show(0);
assertEquals(1, clazz.getChilds().size()); assertEquals(1, clazz.getChilds().size());
Function function = (Function) clazz.getChilds().get(0); Function function = (Function) clazz.getChilds().get(0);
assertEquals(1, function.getChilds().size()); assertEquals(1, function.getChilds().size());
@ -145,8 +135,6 @@ class OperationTest{
JavaParser parser = parse("package be.jeffcheasey88.peeratcode.parser.java; class Test{ void function(){ synchronized(this) { this.none(); } } }"); JavaParser parser = parse("package be.jeffcheasey88.peeratcode.parser.java; class Test{ void function(){ synchronized(this) { this.none(); } } }");
Class clazz = parser.getClazz(); Class clazz = parser.getClazz();
clazz.show(0);
assertEquals(1, clazz.getChilds().size()); assertEquals(1, clazz.getChilds().size());
Function function = (Function) clazz.getChilds().get(0); Function function = (Function) clazz.getChilds().get(0);
assertEquals(1, function.getChilds().size()); assertEquals(1, function.getChilds().size());