diff --git a/PeerAtCodeParser.jar b/PeerAtCodeParser.jar index b4c0fe8..be2cb50 100644 Binary files a/PeerAtCodeParser.jar and b/PeerAtCodeParser.jar differ diff --git a/src/dev/peerat/mapping/TreasureProcessor.java b/src/dev/peerat/mapping/TreasureProcessor.java index a6eb50c..68ad0a2 100644 --- a/src/dev/peerat/mapping/TreasureProcessor.java +++ b/src/dev/peerat/mapping/TreasureProcessor.java @@ -36,6 +36,8 @@ import dev.peerat.parser.java.JavaParser; import dev.peerat.parser.java.operation.ReturnOperation; import dev.peerat.parser.java.value.InstanceValue; import dev.peerat.parser.java.value.StaticValue; +import dev.peerat.parser.java.visitor.JavaVisitor; +import dev.peerat.parser.visitor.Operator; public class TreasureProcessor extends AbstractProcessor{ @@ -77,16 +79,16 @@ public class TreasureProcessor extends AbstractProcessor{ } Provider provider = null; for(Entry classes : map.entrySet()){ - List values = new ArrayList<>(); - 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; - InstanceValue ship = (InstanceValue)values.get(0); + List ships = Operator.or( + JavaVisitor.allValue() //check if value is instance value for dev.peerat.mapping.Ship + , + JavaVisitor.allImport() //check if import for dev.peerat.mapping.Ship AND THEN instance value for dev.peerat.mapping.Ship OR Ship. + ).visit(classes.getValue()).toList(); + if(ships.isEmpty()) continue; + + //TODO accept multiple instance of Ship + + InstanceValue ship = (InstanceValue)ships.get(0); String providerType = ((StaticValue)ship.getParameters().get(0)).getToken().getValue().replace("\"", ""); provider = ProviderManager.getInstance().getProvider(providerType); } diff --git a/src/dev/peerat/mapping/providers/mysql/MySQlProvider.java b/src/dev/peerat/mapping/providers/mysql/MySQlProvider.java index 98eaa1b..2bed7dd 100644 --- a/src/dev/peerat/mapping/providers/mysql/MySQlProvider.java +++ b/src/dev/peerat/mapping/providers/mysql/MySQlProvider.java @@ -91,10 +91,7 @@ public class MySQLProvider implements Provider{ for(MySQLRequestBuilder request : this.requests){ Function base = request.getFunction(); - 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())); - } + JavaFunctionBuilder func = ofFunction().normalizeSignature(base).setName("getter_"+base.getName().getValue()).setPublic(); clazz.element( func.element( ofOperation("try{"