Add ProviderManager & get Provider Type

This commit is contained in:
jeffcheasey88 2023-11-08 14:51:10 +01:00
parent fff4188ec5
commit f0f22dae94
4 changed files with 49 additions and 5 deletions

Binary file not shown.

View file

@ -23,6 +23,7 @@ import javax.tools.FileObject;
import javax.tools.StandardLocation; 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.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;
@ -33,6 +34,7 @@ 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.Value; import dev.peerat.parser.java.Value;
import dev.peerat.parser.java.Value.InstanceValue;
import dev.peerat.parser.java.operation.ReturnOperation; import dev.peerat.parser.java.operation.ReturnOperation;
public class TreasureProcessor extends AbstractProcessor{ public class TreasureProcessor extends AbstractProcessor{
@ -68,13 +70,22 @@ public class TreasureProcessor extends AbstractProcessor{
} }
Provider provider = null; Provider provider = null;
for(Entry<File, JavaFile> classes : map.entrySet()){ for(Entry<File, JavaFile> classes : map.entrySet()){
List<Value> values = new ArrayList<>(); List<InstanceValue> values = new ArrayList<>();
classes.getValue().findAll((e) -> e instanceof Value, values); classes.getValue().findAll((e) -> {
if(e instanceof InstanceValue){
InstanceValue iv = (InstanceValue)e;
return iv.getToken().getValue().equals("Ship()"); //can also be dev.peerat.mapping.Ship
}
return false;
}, 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))); InstanceValue ship = (InstanceValue)values.get(0);
//ship String providerType = ship.getParameters().get(0).getToken().getValue();
provider = ProviderManager.getInstance().getProvider(providerType);
} }
if(provider == null) return false;
for(Entry<File, JavaFile> classes : map.entrySet()){ for(Entry<File, JavaFile> classes : map.entrySet()){
Class treasure = classes.getValue().find((element) -> { Class treasure = classes.getValue().find((element) -> {
if(element instanceof Class){ if(element instanceof Class){

View file

@ -0,0 +1,28 @@
package dev.peerat.mapping.providers;
import java.util.HashMap;
import java.util.Map;
public class ProviderManager{
private static final ProviderManager SINGLETON = new ProviderManager();
public static ProviderManager getInstance(){
return SINGLETON;
}
private Map<String, Provider> providers;
private ProviderManager(){
this.providers = new HashMap<>();
}
public void register(String name, Provider provider){
this.providers.put(name, provider);
}
public Provider getProvider(String name){
return this.providers.get(name);
}
}

View file

@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import dev.peerat.mapping.providers.Provider; import dev.peerat.mapping.providers.Provider;
import dev.peerat.mapping.providers.ProviderManager;
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;
@ -11,9 +12,13 @@ import dev.peerat.parser.java.operation.ReturnOperation;
public class MySQlProvider implements Provider{ public class MySQlProvider implements Provider{
static{
ProviderManager.getInstance().register("mysql", new MySQlProvider());
}
private List<String> treasures; private List<String> treasures;
public MySQlProvider(){ private MySQlProvider(){
this.treasures = new ArrayList<>(); this.treasures = new ArrayList<>();
} }