From fbdfd71f0088510266a404c27fcdf60f6effc1b2 Mon Sep 17 00:00:00 2001 From: jeffcheasey88 <66554203+jeffcheasey88@users.noreply.github.com> Date: Wed, 8 Nov 2023 15:42:58 +0100 Subject: [PATCH] Load provider & receive Treasuers, SeaBottle & Uses --- src/dev/peerat/mapping/TreasureProcessor.java | 18 ++++++++++++++---- src/dev/peerat/mapping/providers/Provider.java | 4 ++++ .../mapping/providers/mysql/MySQlProvider.java | 15 +++++++++++---- .../mapping/providers/mysql/MySqlMap.java | 10 +++++----- 4 files changed, 34 insertions(+), 13 deletions(-) diff --git a/src/dev/peerat/mapping/TreasureProcessor.java b/src/dev/peerat/mapping/TreasureProcessor.java index e00e5c7..99bb162 100644 --- a/src/dev/peerat/mapping/TreasureProcessor.java +++ b/src/dev/peerat/mapping/TreasureProcessor.java @@ -42,6 +42,13 @@ public class TreasureProcessor extends AbstractProcessor{ @Override public boolean process(Set annotations, RoundEnvironment roundEnv){ + try { + String[] providers = processingEnv.getOptions().get("treasure.providers").split(";"); + for(String provider : providers) java.lang.Class.forName(provider); + }catch(Exception ex){ + throw new RuntimeException(ex); + } + String[] sources = processingEnv.getOptions().get("treasure.source").split(";"); List workingDir = new ArrayList<>(); @@ -80,12 +87,14 @@ 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(); + String providerType = ship.getParameters().get(0).getToken().getValue().replace("\"", ""); provider = ProviderManager.getInstance().getProvider(providerType); } if(provider == null) return false; + provider.init(output); + for(Entry classes : map.entrySet()){ Class treasure = classes.getValue().find((element) -> { if(element instanceof Class){ @@ -96,6 +105,7 @@ public class TreasureProcessor extends AbstractProcessor{ }); if(treasure != null){ provider.mapTreasure(treasure); + annotations.forEach((a) -> roundEnv.getElementsAnnotatedWith(a).forEach((e) -> processingEnv.getMessager().printMessage(Kind.ERROR, classes.getKey().getName(), e))); List seaBottles = new ArrayList<>(); treasure.findAll((element) -> { if(element instanceof Function){ @@ -103,7 +113,7 @@ public class TreasureProcessor extends AbstractProcessor{ return function.hasAnnotation((annotation) -> annotation.getName().getValue().equals("SeaBottle")); //can also be dev.peerat.mapping.SeaBottle } return false; - }, null); + }, seaBottles); for(Function function : seaBottles){ provider.mapBottle(treasure, function); } @@ -115,7 +125,7 @@ public class TreasureProcessor extends AbstractProcessor{ 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 !c.hasAnnotation((annotation) -> annotation.getName().getValue().equals("Treasure")); //can also be dev.peerat.mapping.Treasure } return false; }, noTreasures); @@ -124,7 +134,7 @@ public class TreasureProcessor extends AbstractProcessor{ 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 !function.hasAnnotation((annotation) -> annotation.getName().getValue().equals("SeaBottle")); //can also be dev.peerat.mapping.SeaBottle } return false; }, functions); diff --git a/src/dev/peerat/mapping/providers/Provider.java b/src/dev/peerat/mapping/providers/Provider.java index 9c2f8fd..e3363b4 100644 --- a/src/dev/peerat/mapping/providers/Provider.java +++ b/src/dev/peerat/mapping/providers/Provider.java @@ -1,10 +1,14 @@ package dev.peerat.mapping.providers; +import java.io.File; + import dev.peerat.parser.java.Class; import dev.peerat.parser.java.Function; public interface Provider{ + void init(File file); + void mapTreasure(Class clazz); void mapBottle(Class clazz, Function function); diff --git a/src/dev/peerat/mapping/providers/mysql/MySQlProvider.java b/src/dev/peerat/mapping/providers/mysql/MySQlProvider.java index a291f47..57fe5c4 100644 --- a/src/dev/peerat/mapping/providers/mysql/MySQlProvider.java +++ b/src/dev/peerat/mapping/providers/mysql/MySQlProvider.java @@ -1,5 +1,6 @@ package dev.peerat.mapping.providers.mysql; +import java.io.File; import java.util.ArrayList; import java.util.List; @@ -10,17 +11,23 @@ import dev.peerat.parser.java.Function; import dev.peerat.parser.java.Value; import dev.peerat.parser.java.operation.ReturnOperation; -public class MySQlProvider implements Provider{ +public class MySQLProvider implements Provider{ static{ - ProviderManager.getInstance().register("mysql", new MySQlProvider()); + ProviderManager.getInstance().register("mysql", new MySQLProvider()); } private List treasures; - private MySQlProvider(){ + public MySQLProvider(){ this.treasures = new ArrayList<>(); } + + @Override + public void init(File file){ + + } + @Override public void mapTreasure(Class clazz){ @@ -31,7 +38,7 @@ public class MySQlProvider implements Provider{ public void mapBottle(Class clazz, Function function){ ReturnOperation operation = (ReturnOperation) function.getElements().get(0); Value value = operation.getValue(); - + throw new IllegalArgumentException(value.toString()); } @Override diff --git a/src/dev/peerat/mapping/providers/mysql/MySqlMap.java b/src/dev/peerat/mapping/providers/mysql/MySqlMap.java index 23f530e..deb7b04 100644 --- a/src/dev/peerat/mapping/providers/mysql/MySqlMap.java +++ b/src/dev/peerat/mapping/providers/mysql/MySqlMap.java @@ -2,19 +2,19 @@ package dev.peerat.mapping.providers.mysql; import dev.peerat.mapping.providers.Map; -public class MySqlMap implements Map{ +public class MySQLMap implements Map{ - public MySqlMap(){} + public MySQLMap(){} - public MySqlMap link(Class clazz, String table){ + public MySQLMap link(Class clazz, String table){ return this; } - public MySqlMap ref(String table_from, String column_from, String table_to, String column_to){ + public MySQLMap ref(String table_from, String column_from, String table_to, String column_to){ return this; } - public MySqlMap bind(Class clazz, String jfield, String sfield){ + public MySQLMap bind(Class clazz, String jfield, String sfield){ return this; }