Bind Treasures, SeaBottle and uses

This commit is contained in:
jeffcheasey88 2023-11-07 12:03:33 +01:00
parent cae620d11f
commit fff4188ec5
4 changed files with 55 additions and 6 deletions

Binary file not shown.

View file

@ -22,6 +22,7 @@ import javax.tools.Diagnostic.Kind;
import javax.tools.FileObject; import javax.tools.FileObject;
import javax.tools.StandardLocation; import javax.tools.StandardLocation;
import dev.peerat.mapping.providers.Provider;
import dev.peerat.parser.ElementBuilder.Builder; 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;
@ -31,7 +32,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.Operation;
import dev.peerat.parser.java.Value; import dev.peerat.parser.java.Value;
import dev.peerat.parser.java.operation.ReturnOperation; import dev.peerat.parser.java.operation.ReturnOperation;
@ -66,13 +66,62 @@ public class TreasureProcessor extends AbstractProcessor{
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;
for(Entry<File, JavaFile> classes : map.entrySet()){ for(Entry<File, JavaFile> classes : map.entrySet()){
List<Operation> values = new ArrayList<>(); List<Value> values = new ArrayList<>();
classes.getValue().findAll((e) -> e instanceof Operation, values); classes.getValue().findAll((e) -> e instanceof Value, values);
if(values.size() < 1) continue; if(values.size() < 1) continue;
// annotations.forEach((a) -> roundEnv.getElementsAnnotatedWith(a).forEach((e) -> processingEnv.getMessager().printMessage(Kind.ERROR, classes.getKey().getName()+" | "+values, e))); // annotations.forEach((a) -> roundEnv.getElementsAnnotatedWith(a).forEach((e) -> processingEnv.getMessager().printMessage(Kind.ERROR, classes.getKey().getName()+" | "+values, e)));
//ship //ship
} }
for(Entry<File, JavaFile> classes : map.entrySet()){
Class treasure = classes.getValue().find((element) -> {
if(element instanceof Class){
Class c = (Class)element;
return c.hasAnnotation((annotation) -> annotation.getName().getValue().equals("Treasure")); //can also be dev.peerat.mapping.Treasure
}
return false;
});
if(treasure != null){
provider.mapTreasure(treasure);
List<Function> seaBottles = new ArrayList<>();
treasure.findAll((element) -> {
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;
}, null);
for(Function function : seaBottles){
provider.mapBottle(treasure, function);
}
}
}
for(Entry<File, JavaFile> classes : map.entrySet()){
List<Class> noTreasures = new ArrayList<>();
classes.getValue().findAll((element) -> {
if(element instanceof Class){
Class c = (Class)element;
return c.hasAnnotation((annotation) -> annotation.getName().getValue().equals("Treasure")); //can also be dev.peerat.mapping.Treasure
}
return false;
}, noTreasures);
for(Class clazz : noTreasures){
List<Function> functions = new ArrayList<>();
clazz.findAll((element) -> {
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;
}, functions);
for(Function function : functions){
provider.mapUses(clazz, function);
}
}
}
return true; return true;
} }

View file

@ -3,7 +3,7 @@ package dev.peerat.mapping.providers;
import dev.peerat.parser.java.Class; import dev.peerat.parser.java.Class;
import dev.peerat.parser.java.Function; import dev.peerat.parser.java.Function;
public interface ProviderMapper{ public interface Provider{
void mapTreasure(Class clazz); void mapTreasure(Class clazz);

View file

@ -3,13 +3,13 @@ package dev.peerat.mapping.providers.mysql;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import dev.peerat.mapping.providers.ProviderMapper; import dev.peerat.mapping.providers.Provider;
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.Value; import dev.peerat.parser.java.Value;
import dev.peerat.parser.java.operation.ReturnOperation; import dev.peerat.parser.java.operation.ReturnOperation;
public class MySQlProvider implements ProviderMapper{ public class MySQlProvider implements Provider{
private List<String> treasures; private List<String> treasures;