Compare commits
No commits in common. "ad2101d7e82503fc4f40d23bec93248d1bc5e5ac" and "4e9e1034fa244f1c3e4bba8a6990cebae5ae57b5" have entirely different histories.
ad2101d7e8
...
4e9e1034fa
4 changed files with 60 additions and 95 deletions
Binary file not shown.
|
@ -1,8 +1,5 @@
|
||||||
package dev.peerat.mapping;
|
package dev.peerat.mapping;
|
||||||
|
|
||||||
import static dev.peerat.parser.visitor.Operator.*;
|
|
||||||
import static dev.peerat.parser.java.visitor.JavaVisitor.*;
|
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.BufferedWriter;
|
import java.io.BufferedWriter;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
@ -27,6 +24,7 @@ import javax.tools.StandardLocation;
|
||||||
|
|
||||||
import dev.peerat.mapping.providers.Provider;
|
import dev.peerat.mapping.providers.Provider;
|
||||||
import dev.peerat.mapping.providers.ProviderManager;
|
import dev.peerat.mapping.providers.ProviderManager;
|
||||||
|
import dev.peerat.parser.ElementBuilder.Builder;
|
||||||
import dev.peerat.parser.Parser;
|
import dev.peerat.parser.Parser;
|
||||||
import dev.peerat.parser.TokenValidator;
|
import dev.peerat.parser.TokenValidator;
|
||||||
import dev.peerat.parser.java.Annotation;
|
import dev.peerat.parser.java.Annotation;
|
||||||
|
@ -35,7 +33,6 @@ import dev.peerat.parser.java.Function;
|
||||||
import dev.peerat.parser.java.JavaElement;
|
import dev.peerat.parser.java.JavaElement;
|
||||||
import dev.peerat.parser.java.JavaFile;
|
import dev.peerat.parser.java.JavaFile;
|
||||||
import dev.peerat.parser.java.JavaParser;
|
import dev.peerat.parser.java.JavaParser;
|
||||||
import dev.peerat.parser.java.JavaProject;
|
|
||||||
import dev.peerat.parser.java.operation.ReturnOperation;
|
import dev.peerat.parser.java.operation.ReturnOperation;
|
||||||
import dev.peerat.parser.java.value.InstanceValue;
|
import dev.peerat.parser.java.value.InstanceValue;
|
||||||
import dev.peerat.parser.java.value.StaticValue;
|
import dev.peerat.parser.java.value.StaticValue;
|
||||||
|
@ -70,72 +67,64 @@ public class TreasureProcessor extends AbstractProcessor{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
JavaProject project = new JavaProject();
|
Map<File, JavaFile> map = new HashMap<>();
|
||||||
for(File workingDirectory : workingDir){
|
for(File workingDirectory : workingDir){
|
||||||
try {
|
try {
|
||||||
parseProject(workingDirectory, project);
|
parseClazz(workingDirectory, output, workingDirectory, map);
|
||||||
}catch(Exception ex){
|
}catch(Exception ex){
|
||||||
annotations.forEach((a) -> roundEnv.getElementsAnnotatedWith(a).forEach((e) -> processingEnv.getMessager().printMessage(Kind.ERROR, ex.getMessage(), e)));
|
annotations.forEach((a) -> roundEnv.getElementsAnnotatedWith(a).forEach((e) -> processingEnv.getMessager().printMessage(Kind.ERROR, ex.getMessage(), e)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Provider provider = null;
|
||||||
List<InstanceValue> ships = or(
|
for(Entry<File, JavaFile> classes : map.entrySet()){
|
||||||
collect(allInstanceValue().named((name) -> name.equals("dev.peerat.mapping.Ship")))
|
List<InstanceValue> values = new ArrayList<>();
|
||||||
,
|
classes.getValue().findAll((e) -> {
|
||||||
and(
|
if(e instanceof InstanceValue){
|
||||||
allImport().named((name) -> name.equals("dev.peerat.mapping.Ship"))
|
InstanceValue iv = (InstanceValue)e;
|
||||||
,
|
return iv.getToken().getValue().equals("Ship()"); //can also be dev.peerat.mapping.Ship
|
||||||
collect(allInstanceValue().named((name) -> name.equals("Ship")))
|
}
|
||||||
)
|
return false;
|
||||||
).visit(project).toList();
|
}, values);
|
||||||
if(ships.isEmpty()) return false;
|
if(values.size() < 1) continue;
|
||||||
|
InstanceValue ship = (InstanceValue)values.get(0);
|
||||||
//TODO accept multiple instance of Ship
|
|
||||||
|
|
||||||
InstanceValue ship = (InstanceValue)ships.get(0);
|
|
||||||
String providerType = ((StaticValue)ship.getParameters().get(0)).getToken().getValue().replace("\"", "");
|
String providerType = ((StaticValue)ship.getParameters().get(0)).getToken().getValue().replace("\"", "");
|
||||||
Provider provider = ProviderManager.getInstance().getProvider(providerType);
|
provider = ProviderManager.getInstance().getProvider(providerType);
|
||||||
|
}
|
||||||
|
|
||||||
if(provider == null) return false;
|
if(provider == null) return false;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
provider.init(output);
|
provider.init(output);
|
||||||
|
throw new Exception(output.getAbsolutePath());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Class> treasures = or(
|
// for(Entry<File, JavaFile> classes : map.entrySet()){
|
||||||
and(
|
// Class treasure = classes.getValue().find((element) -> {
|
||||||
allImport().named((name) -> name.equals("dev.peerat.mapping.Treasure"))
|
// if(element instanceof Class){
|
||||||
,
|
// Class c = (Class)element;
|
||||||
allClass().
|
// return c.hasAnnotation((annotation) -> annotation.getName().getValue().equals("Treasure")); //can also be dev.peerat.mapping.Treasure
|
||||||
annotation(
|
// }
|
||||||
annotation().nameFilter((name) -> name.equals("Treasure") || name.equals("dev.peerat.mapping.Treasure"))
|
// return false;
|
||||||
)
|
// });
|
||||||
)
|
// if(treasure != null){
|
||||||
,
|
// provider.mapTreasure(treasure);
|
||||||
allClass().
|
//// annotations.forEach((a) -> roundEnv.getElementsAnnotatedWith(a).forEach((e) -> processingEnv.getMessager().printMessage(Kind.ERROR, classes.getKey().getName(), e)));
|
||||||
annotation(
|
// List<Function> seaBottles = new ArrayList<>();
|
||||||
annotation().nameFilter((name) -> name.equals("dev.peerat.mapping.Treasure"))
|
// treasure.findAll((element) -> {
|
||||||
)
|
// if(element instanceof Function){
|
||||||
).visit(project).toList();
|
// Function function = (Function)element;
|
||||||
|
// return function.hasAnnotation((annotation) -> annotation.getName().getValue().equals("SeaBottle")); //can also be dev.peerat.mapping.SeaBottle
|
||||||
for(Class treasure : treasures){
|
// }
|
||||||
provider.mapTreasure(treasure);
|
// return false;
|
||||||
// annotations.forEach((a) -> roundEnv.getElementsAnnotatedWith(a).forEach((e) -> processingEnv.getMessager().printMessage(Kind.ERROR, classes.getKey().getName(), e)));
|
// }, seaBottles);
|
||||||
List<Function> seaBottles = new ArrayList<>();
|
// for(Function function : seaBottles){
|
||||||
treasure.findAll((element) -> {
|
// provider.mapBottle(treasure, function);
|
||||||
if(element instanceof Function){
|
// }
|
||||||
Function function = (Function)element;
|
// }
|
||||||
return function.hasAnnotation((annotation) -> annotation.getName().getValue().equals("SeaBottle")); //can also be dev.peerat.mapping.SeaBottle
|
// }
|
||||||
}
|
//
|
||||||
return false;
|
|
||||||
}, seaBottles);
|
|
||||||
for(Function function : seaBottles){
|
|
||||||
provider.mapBottle(treasure, function);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// for(Entry<File, JavaFile> classes : map.entrySet()){
|
// for(Entry<File, JavaFile> classes : map.entrySet()){
|
||||||
// List<Class> noTreasures = new ArrayList<>();
|
// List<Class> noTreasures = new ArrayList<>();
|
||||||
// classes.getValue().findAll((element) -> {
|
// classes.getValue().findAll((element) -> {
|
||||||
|
@ -159,30 +148,12 @@ public class TreasureProcessor extends AbstractProcessor{
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
provider.complete();
|
// provider.complete();
|
||||||
return true;
|
// return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Parser<JavaElement> PARSER = new JavaParser();
|
private static final Parser<JavaElement> PARSER = new JavaParser();
|
||||||
|
|
||||||
private void parseProject(File file, JavaProject project) throws Exception{
|
|
||||||
if(file.isDirectory()){
|
|
||||||
for(File child : file.listFiles()) parseProject(child, project);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(!file.getName().endsWith(".java")) return;
|
|
||||||
try {
|
|
||||||
BufferedReader reader = new BufferedReader(new FileReader(file));
|
|
||||||
JavaFile javaFile = new JavaFile();
|
|
||||||
TokenValidator.TOKENS = 0;
|
|
||||||
TokenValidator.MAX_VALIDATE = 0;
|
|
||||||
PARSER.parse(reader, javaFile);
|
|
||||||
project.addFile(javaFile);
|
|
||||||
}catch(Exception ex){
|
|
||||||
error(null, null, file, new Exception(file.getName()+" | "+ex.getMessage()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void parseClazz(File source, File output, File file, Map<File, JavaFile> map) throws Exception{
|
private void parseClazz(File source, File output, File file, Map<File, JavaFile> map) throws Exception{
|
||||||
if(file.isDirectory()){
|
if(file.isDirectory()){
|
||||||
for(File child : file.listFiles()) parseClazz(source, output, child, map);
|
for(File child : file.listFiles()) parseClazz(source, output, child, map);
|
||||||
|
@ -230,9 +201,9 @@ public class TreasureProcessor extends AbstractProcessor{
|
||||||
}else{
|
}else{
|
||||||
processOthers(file);
|
processOthers(file);
|
||||||
}
|
}
|
||||||
// Builder builder = new Builder();
|
Builder builder = new Builder();
|
||||||
// file.build(builder);
|
file.build(builder);
|
||||||
// builder.build(writer);
|
builder.build(writer);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,9 +5,6 @@ import java.io.File;
|
||||||
import dev.peerat.mapping.Ship;
|
import dev.peerat.mapping.Ship;
|
||||||
import dev.peerat.parser.java.Class;
|
import dev.peerat.parser.java.Class;
|
||||||
import dev.peerat.parser.java.Function;
|
import dev.peerat.parser.java.Function;
|
||||||
import dev.peerat.parser.java.JavaElement;
|
|
||||||
import dev.peerat.parser.java.value.InstanceValue;
|
|
||||||
import dev.peerat.parser.java.value.MethodCallValue;
|
|
||||||
|
|
||||||
public interface Provider{
|
public interface Provider{
|
||||||
|
|
||||||
|
@ -17,8 +14,7 @@ public interface Provider{
|
||||||
|
|
||||||
void mapBottle(Class clazz, Function function);
|
void mapBottle(Class clazz, Function function);
|
||||||
|
|
||||||
void mapCreation(Class clazz, JavaElement container, InstanceValue value);
|
void mapUses(Class clazz, Function function);
|
||||||
void mapEdit(Class clazz, JavaElement container, MethodCallValue value);
|
|
||||||
|
|
||||||
void complete();
|
void complete();
|
||||||
|
|
||||||
|
|
|
@ -19,10 +19,10 @@ import java.util.List;
|
||||||
import dev.peerat.mapping.Ship;
|
import dev.peerat.mapping.Ship;
|
||||||
import dev.peerat.mapping.providers.Provider;
|
import dev.peerat.mapping.providers.Provider;
|
||||||
import dev.peerat.mapping.providers.ProviderManager;
|
import dev.peerat.mapping.providers.ProviderManager;
|
||||||
|
import dev.peerat.parser.ElementBuilder.Builder;
|
||||||
import dev.peerat.parser.Token;
|
import dev.peerat.parser.Token;
|
||||||
import dev.peerat.parser.java.Class;
|
import dev.peerat.parser.java.Class;
|
||||||
import dev.peerat.parser.java.Function;
|
import dev.peerat.parser.java.Function;
|
||||||
import dev.peerat.parser.java.JavaElement;
|
|
||||||
import dev.peerat.parser.java.JavaFile;
|
import dev.peerat.parser.java.JavaFile;
|
||||||
import dev.peerat.parser.java.Variable;
|
import dev.peerat.parser.java.Variable;
|
||||||
import dev.peerat.parser.java.builder.JavaBuilder;
|
import dev.peerat.parser.java.builder.JavaBuilder;
|
||||||
|
@ -31,7 +31,6 @@ import dev.peerat.parser.java.builder.JavaFunctionBuilder;
|
||||||
import dev.peerat.parser.java.operation.CatchOperation;
|
import dev.peerat.parser.java.operation.CatchOperation;
|
||||||
import dev.peerat.parser.java.operation.ReturnOperation;
|
import dev.peerat.parser.java.operation.ReturnOperation;
|
||||||
import dev.peerat.parser.java.operation.TryOperation;
|
import dev.peerat.parser.java.operation.TryOperation;
|
||||||
import dev.peerat.parser.java.value.InstanceValue;
|
|
||||||
import dev.peerat.parser.java.value.MethodCallValue;
|
import dev.peerat.parser.java.value.MethodCallValue;
|
||||||
import dev.peerat.parser.java.value.Value;
|
import dev.peerat.parser.java.value.Value;
|
||||||
|
|
||||||
|
@ -81,14 +80,10 @@ public class MySQLProvider implements Provider{
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mapCreation(Class clazz, JavaElement container, InstanceValue value){
|
public void mapUses(Class clazz, Function function){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void mapEdit(Class clazz, JavaElement container, MethodCallValue value){
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void complete(){
|
public void complete(){
|
||||||
|
@ -96,7 +91,10 @@ public class MySQLProvider implements Provider{
|
||||||
|
|
||||||
for(MySQLRequestBuilder request : this.requests){
|
for(MySQLRequestBuilder request : this.requests){
|
||||||
Function base = request.getFunction();
|
Function base = request.getFunction();
|
||||||
JavaFunctionBuilder func = ofFunction().normalizeSignature(base).setName("getter_"+base.getName().getValue()).setPublic();
|
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()));
|
||||||
|
}
|
||||||
clazz.element(
|
clazz.element(
|
||||||
func.element(
|
func.element(
|
||||||
ofOperation("try{"
|
ofOperation("try{"
|
||||||
|
@ -113,10 +111,10 @@ public class MySQLProvider implements Provider{
|
||||||
.clazz(clazz)
|
.clazz(clazz)
|
||||||
.build();
|
.build();
|
||||||
try{
|
try{
|
||||||
// Builder builder = new Builder();
|
Builder builder = new Builder();
|
||||||
// file.build(builder);
|
file.build(builder);
|
||||||
BufferedWriter writer = new BufferedWriter(new FileWriter(this.repo));
|
BufferedWriter writer = new BufferedWriter(new FileWriter(this.repo));
|
||||||
// builder.build(writer);
|
builder.build(writer);
|
||||||
writer.flush();
|
writer.flush();
|
||||||
writer.close();
|
writer.close();
|
||||||
}catch(Exception ex){
|
}catch(Exception ex){
|
||||||
|
|
Loading…
Add table
Reference in a new issue