diff --git a/PeerAtCodeParser.jar b/PeerAtCodeParser.jar
index 9fcc3c5..b4c0fe8 100644
Binary files a/PeerAtCodeParser.jar and b/PeerAtCodeParser.jar differ
diff --git a/src/dev/peerat/mapping/TreasureProcessor.java b/src/dev/peerat/mapping/TreasureProcessor.java
index f63153b..a6eb50c 100644
--- a/src/dev/peerat/mapping/TreasureProcessor.java
+++ b/src/dev/peerat/mapping/TreasureProcessor.java
@@ -33,8 +33,9 @@ import dev.peerat.parser.java.Function;
import dev.peerat.parser.java.JavaElement;
import dev.peerat.parser.java.JavaFile;
import dev.peerat.parser.java.JavaParser;
-import dev.peerat.parser.java.Value.InstanceValue;
import dev.peerat.parser.java.operation.ReturnOperation;
+import dev.peerat.parser.java.value.InstanceValue;
+import dev.peerat.parser.java.value.StaticValue;
public class TreasureProcessor extends AbstractProcessor{
@@ -86,7 +87,7 @@ public class TreasureProcessor extends AbstractProcessor{
}, values);
if(values.size() < 1) continue;
InstanceValue ship = (InstanceValue)values.get(0);
- String providerType = ship.getParameters().get(0).getToken().getValue().replace("\"", "");
+ String providerType = ((StaticValue)ship.getParameters().get(0)).getToken().getValue().replace("\"", "");
provider = ProviderManager.getInstance().getProvider(providerType);
}
diff --git a/src/dev/peerat/mapping/providers/mysql/MySQLDatabaseState.java b/src/dev/peerat/mapping/providers/mysql/MySQLDatabaseState.java
new file mode 100644
index 0000000..fd3e4ff
--- /dev/null
+++ b/src/dev/peerat/mapping/providers/mysql/MySQLDatabaseState.java
@@ -0,0 +1,63 @@
+package dev.peerat.mapping.providers.mysql;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class MySQLDatabaseState{
+
+ private List
tables;
+
+ public MySQLDatabaseState(){
+ this.tables = new ArrayList<>();
+ }
+
+ public static class Table{
+
+ private String name;
+ private List columns;
+
+ public Table(String name){
+ this.name = name;
+ this.columns = new ArrayList<>();
+ }
+
+ public String getName(){
+ return this.name;
+ }
+
+
+ public static class Column{
+
+ private String name;
+ private String type;
+ private boolean primary;
+ private Column foreign;
+
+ public Column(String name, String type, boolean primary){
+ this.name = name;
+ this.type = type;
+ this.primary = primary;
+ }
+
+ public void setForeign(Column column){
+ this.foreign = column;
+ }
+
+ public String getName(){
+ return this.name;
+ }
+
+ public String getType(){
+ return this.type;
+ }
+
+ public boolean isPrimary(){
+ return this.primary;
+ }
+
+ public Column getForeign(){
+ return this.foreign;
+ }
+ }
+ }
+}
diff --git a/src/dev/peerat/mapping/providers/mysql/MySQLRequestBuilder.java b/src/dev/peerat/mapping/providers/mysql/MySQLRequestBuilder.java
index 7ab9443..73eda1c 100644
--- a/src/dev/peerat/mapping/providers/mysql/MySQLRequestBuilder.java
+++ b/src/dev/peerat/mapping/providers/mysql/MySQLRequestBuilder.java
@@ -4,10 +4,10 @@ import java.util.ArrayList;
import java.util.List;
import dev.peerat.parser.java.Function;
-import dev.peerat.parser.java.Value;
-import dev.peerat.parser.java.Value.BiValue;
-import dev.peerat.parser.java.Value.LambdaValue;
-import dev.peerat.parser.java.Value.MethodCallValue;
+import dev.peerat.parser.java.value.BiValue;
+import dev.peerat.parser.java.value.LambdaValue;
+import dev.peerat.parser.java.value.MethodCallValue;
+import dev.peerat.parser.java.value.Value;
public class MySQLRequestBuilder{
@@ -36,7 +36,7 @@ public class MySQLRequestBuilder{
MethodCallValue keep = (MethodCallValue)include.getOperations().get(0);
List binds = new ArrayList<>();
for(Value param : keep.getParameters()){
- binds.add(param.getToken().getValue());
+// binds.add(param.getToken().getValue());
}
String result = ""; //optimise with iterator
for(String bind : binds) result+=","+bind;
@@ -64,9 +64,9 @@ public class MySQLRequestBuilder{
if(value instanceof MethodCallValue){ //take method call instead of value
MethodCallValue call = (MethodCallValue)value;
String action = call.getToken().getValue();
- if(action.equals("contains()")) return call.base().getToken().getValue()+" LIKE \"%?%\"";
- if(action.equals("startsWith()")) return call.base().getToken().getValue()+" LIKE \"?%\"";
- if(action.equals("endsWith()")) return call.base().getToken().getValue()+" LIKE \"%?\"";
+// if(action.equals("contains()")) return call.base().getToken().getValue()+" LIKE \"%?%\"";
+// if(action.equals("startsWith()")) return call.base().getToken().getValue()+" LIKE \"?%\"";
+// if(action.equals("endsWith()")) return call.base().getToken().getValue()+" LIKE \"%?\"";
return action;
}
return "default "+value.getClass();
diff --git a/src/dev/peerat/mapping/providers/mysql/MySQlProvider.java b/src/dev/peerat/mapping/providers/mysql/MySQlProvider.java
index c6ade2c..98eaa1b 100644
--- a/src/dev/peerat/mapping/providers/mysql/MySQlProvider.java
+++ b/src/dev/peerat/mapping/providers/mysql/MySQlProvider.java
@@ -1,5 +1,12 @@
package dev.peerat.mapping.providers.mysql;
+import static dev.peerat.parser.java.builder.JavaBuilder.ofFile;
+import static dev.peerat.parser.java.builder.JavaBuilder.ofClass;
+import static dev.peerat.parser.java.builder.JavaBuilder.ofFunction;
+import static dev.peerat.parser.java.builder.JavaBuilder.ofVariable;
+import static dev.peerat.parser.java.builder.JavaBuilder.ofOperation;
+import static dev.peerat.parser.java.builder.JavaBuilder.ofValue;
+
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
@@ -14,16 +21,18 @@ import dev.peerat.mapping.providers.Provider;
import dev.peerat.mapping.providers.ProviderManager;
import dev.peerat.parser.ElementBuilder.Builder;
import dev.peerat.parser.Token;
-import dev.peerat.parser.java.BuildedJavaFile;
import dev.peerat.parser.java.Class;
import dev.peerat.parser.java.Function;
-import dev.peerat.parser.java.Value;
-import dev.peerat.parser.java.Value.MethodCallValue;
+import dev.peerat.parser.java.JavaFile;
import dev.peerat.parser.java.Variable;
+import dev.peerat.parser.java.builder.JavaBuilder;
+import dev.peerat.parser.java.builder.JavaClassBuilder;
+import dev.peerat.parser.java.builder.JavaFunctionBuilder;
import dev.peerat.parser.java.operation.CatchOperation;
-import dev.peerat.parser.java.operation.MethodCallOperation;
import dev.peerat.parser.java.operation.ReturnOperation;
import dev.peerat.parser.java.operation.TryOperation;
+import dev.peerat.parser.java.value.MethodCallValue;
+import dev.peerat.parser.java.value.Value;
public class MySQLProvider implements Provider{
@@ -78,52 +87,32 @@ public class MySQLProvider implements Provider{
@Override
public void complete(){
- try{
- BuildedJavaFile file = new BuildedJavaFile();
- file.setPackage("dev.peerat.mapping.sql.MySQlRepository");
-//
-// file.addImport("");
-//
- Class clazz = new Class(null, new Token(0,0,"MySQlRepository",null));
-
- for(MySQLRequestBuilder request : this.requests){
- Function base = request.getFunction();
- Function func = new Function(
- null,
- Modifier.PUBLIC,
- null,
- new Token(0,0,base.getReturnType().getValue(), null),
- new Token(0,0,"getter_"+base.getName().getValue(),null),
- base.getParameters());
-
- TryOperation tryOp = new TryOperation();
- tryOp.addOperation(new MethodCallOperation((Value)null, new Token(0,0,"ensureConnection()",null), null));
- tryOp.addVariable(
- new Variable(
- null,
- 0,
- new Token(0,0,"PreparedStatement",null),
- new Token(0,0,"stmt",null),
- false,
- new MethodCallValue(
- new Value(new Token(0,0,"con",null)),
- null,
- new Token(0,0,"prepareStatement",null),
- Arrays.asList(new Value(new Token(0,0,request.build(),null))))));
-
- CatchOperation catchOp = new CatchOperation(Arrays.asList(new Token(0,0,"Exception",null)), new Token(0,0,"e", null));
- catchOp.addOperation(new MethodCallOperation(new Value(new Token(0,0,"e",null)), new Token(0,0,"printStackTrace()", null), null));
-
- func.addOperation(tryOp);
- func.addOperation(catchOp);
-
- clazz.addFunction(func);
+ JavaClassBuilder clazz = ofClass("MySQlRepository");
+
+ for(MySQLRequestBuilder request : this.requests){
+ Function base = request.getFunction();
+ JavaFunctionBuilder func = ofFunction(base.getReturnType().getValue(), "getter_"+base.getName().getValue()).setPublic();
+ for(Variable params : base.getParameters()){
+ func.parameter(ofVariable(params.getType().getValue(), params.getName().getValue(), params.getValue()));
}
-
- file.setClass(clazz);
-
+ clazz.element(
+ func.element(
+ ofOperation("try{"
+ + "ensureConnection();"
+ + "PreparedStatement stmt = con.prepareStatement();"
+ + "}catch(Exception e){"
+ + "e.printStackTrace();"
+ + "}")
+ )
+ );
+ }
+
+ JavaFile file = ofFile("dev.peerat.mapping.sql.MySQlRepository")
+ .clazz(clazz)
+ .build();
+ try{
Builder builder = new Builder();
- file.build().build(builder);
+ file.build(builder);
BufferedWriter writer = new BufferedWriter(new FileWriter(this.repo));
builder.build(writer);
writer.flush();
diff --git a/src/dev/peerat/parser/java/BuildedJavaFile.java b/src/dev/peerat/parser/java/BuildedJavaFile.java
deleted file mode 100644
index 10a9cc2..0000000
--- a/src/dev/peerat/parser/java/BuildedJavaFile.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package dev.peerat.parser.java;
-
-import dev.peerat.parser.Bag;
-import dev.peerat.parser.Token;
-
-public class BuildedJavaFile{
-
- private JavaFile file;
-
- public BuildedJavaFile(){
- this.file = new JavaFile();
- }
-
- public BuildedJavaFile setPackage(String value){
- Bag bag = new Bag();
- bag.set(new Token(0, 0, value, null));
- this.file.setPackage(bag);
- return this;
- }
-
- public BuildedJavaFile addImport(String... values){
- for(String value : values){
- Import imp = new Import(false, new Token(0,0,value,null));
- this.file.addImport(imp);
- }
- return this;
- }
-
- public BuildedJavaFile setClass(Class clazz){
- this.file.addClass(clazz);
- return this;
- }
-
- public JavaFile build(){
- return this.file;
- }
-
-}