Base (only signature) generating repository from TreasureCaches

This commit is contained in:
jeffcheasey88 2023-11-21 09:56:55 +01:00
parent cf088e27cc
commit 69c4fc8015
6 changed files with 106 additions and 7 deletions

Binary file not shown.

View file

@ -92,7 +92,11 @@ public class TreasureProcessor extends AbstractProcessor{
if(provider == null) return false;
provider.init(output);
try {
provider.init(output);
} catch (Exception e) {
throw new RuntimeException(e);
}
for(Entry<File, JavaFile> classes : map.entrySet()){
Class treasure = classes.getValue().find((element) -> {
@ -142,6 +146,7 @@ public class TreasureProcessor extends AbstractProcessor{
}
}
}
provider.complete();
return true;
}

View file

@ -7,11 +7,13 @@ import dev.peerat.parser.java.Function;
public interface Provider{
void init(File file);
void init(File file) throws Exception;
void mapTreasure(Class clazz);
void mapBottle(Class clazz, Function function);
void mapUses(Class clazz, Function function);
void complete();
}

View file

@ -3,6 +3,7 @@ package dev.peerat.mapping.providers.mysql;
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;
@ -10,14 +11,21 @@ import dev.peerat.parser.java.Value.MethodCallValue;
public class MySQLRequestBuilder{
private Function function;
private List<MethodCallValue> calls;
private String select;
private String where;
public MySQLRequestBuilder(List<MethodCallValue> calls){
public MySQLRequestBuilder(Function function, List<MethodCallValue> calls){
this.function = function;
this.calls = calls;
}
public Function getFunction(){
return this.function;
}
private String toStringOperation(MethodCallValue value){
String method = value.getToken().getValue();
if(method.equals("selectAll()")){

View file

@ -1,12 +1,18 @@
package dev.peerat.mapping.providers.mysql;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
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;
@ -20,14 +26,19 @@ public class MySQLProvider implements Provider{
}
private List<String> treasures;
private File repo;
private List<MySQLRequestBuilder> requests;
public MySQLProvider(){
this.treasures = new ArrayList<>();
this.requests = new ArrayList<>();
}
@Override
public void init(File file){
public void init(File file) throws Exception{
repo = new File(file, "/dev/peerat/mapping/mysql/MySQlRepository.java");
repo.getParentFile().mkdirs();
repo.createNewFile();
}
@ -48,8 +59,8 @@ public class MySQLProvider implements Provider{
call = (MethodCallValue) call.base();
}
list.add(0, call);
MySQLRequestBuilder builder = new MySQLRequestBuilder(list);
throw new RuntimeException(builder.build());
MySQLRequestBuilder builder = new MySQLRequestBuilder(function, list);
this.requests.add(builder);
}
}
@ -58,4 +69,39 @@ 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,base.getName().getValue(),null),
base.getParameters());
clazz.addFunction(func);
}
file.setClass(clazz);
Builder builder = new Builder();
file.build().build(builder);
BufferedWriter writer = new BufferedWriter(new FileWriter(this.repo));
builder.build(writer);
writer.flush();
writer.close();
}catch(Exception ex){
throw new RuntimeException(ex);
}
}
}

View file

@ -0,0 +1,38 @@
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;
}
}