diff --git a/src/dev/peerat/mapping/providers/mysql/MySQLRequestBuilder.java b/src/dev/peerat/mapping/providers/mysql/MySQLRequestBuilder.java index 1d0fe96..f454d64 100644 --- a/src/dev/peerat/mapping/providers/mysql/MySQLRequestBuilder.java +++ b/src/dev/peerat/mapping/providers/mysql/MySQLRequestBuilder.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import dev.peerat.parser.java.Value; +import dev.peerat.parser.java.Value.BiValue; import dev.peerat.parser.java.Value.LambdaValue; import dev.peerat.parser.java.Value.MethodCallValue; @@ -11,7 +12,7 @@ public class MySQLRequestBuilder{ private List calls; private String select; - private String from; + private String where; public MySQLRequestBuilder(List calls){ this.calls = calls; @@ -34,13 +35,35 @@ public class MySQLRequestBuilder{ result=result.substring(1); return "SELECT "+result; } + if(method.equals("filter()")){ + LambdaValue include = (LambdaValue) value.getParameters().get(0); + Value condition = (Value) include.getOperations().get(0); + return toStringCondition(condition); + } return null; } - public void build(){ + private String toStringCondition(Value value){ + if(value instanceof BiValue){ + BiValue bool = (BiValue)value; + String action = bool.getAction(); + if(action.equals("||")) return toStringCondition(bool.left())+" OR "+toStringCondition(bool.right()); + throw new RuntimeException("unsuported operation "+action); + } + if(value instanceof MethodCallValue){ //take method call instead of value + MethodCallValue call = (MethodCallValue)value; + String action = call.getToken().getValue(); + if(action.equals("contains()")) return call.base().getToken().getValue()+" LIKE \"%?%\""; + return action; + } + return "default "+value.getClass(); + } + + public String build(){ this.select = toStringOperation(calls.get(0)); - throw new RuntimeException(this.select); + this.where = toStringOperation(calls.get(1)); + return select+" WHERE "+where; } } diff --git a/src/dev/peerat/mapping/providers/mysql/MySQlProvider.java b/src/dev/peerat/mapping/providers/mysql/MySQlProvider.java index d0b0961..757c79f 100644 --- a/src/dev/peerat/mapping/providers/mysql/MySQlProvider.java +++ b/src/dev/peerat/mapping/providers/mysql/MySQlProvider.java @@ -49,7 +49,7 @@ public class MySQLProvider implements Provider{ } list.add(0, call); MySQLRequestBuilder builder = new MySQLRequestBuilder(list); - builder.build(); + throw new RuntimeException(builder.build()); } }