public Literal createLiteral(Object value, Class<?> type) { return new Literal(value, type); }
@Override public Expression translateGeographySelect(Expression expr) { return new Function(SourceSystemFunctions.ST_ASEWKB, Arrays.asList( new Function("CAST", //$NON-NLS-1$ Arrays.asList(expr, new Literal("geometry", TypeFacility.RUNTIME_TYPES.STRING)), //$NON-NLS-1$ TypeFacility.RUNTIME_TYPES.GEOMETRY)), TypeFacility.RUNTIME_TYPES.VARBINARY); }
@Override public Expression translateGeographySelect(Expression expr) { return new Function(SourceSystemFunctions.ST_ASEWKB, Arrays.asList( new Function("CAST", //$NON-NLS-1$ Arrays.asList(expr, new Literal("geometry", TypeFacility.RUNTIME_TYPES.STRING)), //$NON-NLS-1$ TypeFacility.RUNTIME_TYPES.GEOMETRY)), TypeFacility.RUNTIME_TYPES.BLOB); }
@Override public List<?> translate(Function function) { Expression trueValue = function.getParameters().get(0); Expression falseValue = trueValue; falseValue = new IsNull(falseValue, true); if (!(trueValue instanceof Predicate)) { trueValue = new Comparison(trueValue, new Literal(Boolean.TRUE, TypeFacility.RUNTIME_TYPES.BOOLEAN), Comparison.Operator.EQ); } return Arrays.asList("CASE WHEN ", trueValue, " THEN 'true' WHEN ", falseValue, " THEN 'false' END"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ } });
@Override public void substitute(Argument arg, StringBuilder builder, int index) { Literal argumentValue = arg.getArgumentValue(); Object value = argumentValue.getValue(); if (value == null || value instanceof Number || value instanceof Boolean || value instanceof String) { builder.append(argumentValue); } else if (value instanceof Date) { //bind as a string literal builder.append(new Literal(value.toString(), String.class)); } else { //bind as a string literal using the teiid format - this is likely not what the user wants builder.append(new Literal(argumentValue.toString(), String.class)); } } });
@Override public List<?> translate(Function function) { if (function.getParameters().size() != 3) { return null; } Expression param2 = function.getParameters().get(1); param2 = new Function(SourceSystemFunctions.ADD_OP, Arrays.asList(param2, new Literal(1, TypeFacility.RUNTIME_TYPES.INTEGER)), TypeFacility.RUNTIME_TYPES.INTEGER); function.getParameters().set(1, param2); return null; } });
@Override public List<?> translate(Function function) { if (function.getParameters().size() == 1) { function.getParameters().add(new Literal(1, TypeFacility.RUNTIME_TYPES.INTEGER)); } return null; } });
@Override public List<?> translate(Function function) { if (function.getParameters().size() != 3) { return null; } Expression param2 = function.getParameters().get(1); param2 = new Function(SourceSystemFunctions.ADD_OP, Arrays.asList(param2, new Literal(1, TypeFacility.RUNTIME_TYPES.INTEGER)), TypeFacility.RUNTIME_TYPES.INTEGER); function.getParameters().set(1, param2); return null; } });
protected BinaryWSProcedureExecution executeDirect(String method, String uri, String payload, Map<String, List<String>> headers) throws TranslatorException { if (LogManager.isMessageToBeRecorded(LogConstants.CTX_ODATA, MessageLevel.DETAIL)) { try { LogManager.logDetail(LogConstants.CTX_ODATA, "Source-URL=", URLDecoder.decode(uri, "UTF-8")); //$NON-NLS-1$ //$NON-NLS-2$ } catch (UnsupportedEncodingException e) { } } List<Argument> parameters = new ArrayList<Argument>(); parameters.add(new Argument(Direction.IN, new Literal(method, TypeFacility.RUNTIME_TYPES.STRING), null)); parameters.add(new Argument(Direction.IN, new Literal(payload, TypeFacility.RUNTIME_TYPES.STRING), null)); parameters.add(new Argument(Direction.IN, new Literal(uri, TypeFacility.RUNTIME_TYPES.STRING), null)); parameters.add(new Argument(Direction.IN, new Literal(true, TypeFacility.RUNTIME_TYPES.BOOLEAN), null)); //the engine currently always associates out params at resolve time even if the values are not directly read by the call parameters.add(new Argument(Direction.OUT, TypeFacility.RUNTIME_TYPES.STRING, null)); Call call = this.translator.getLanguageFactory().createCall(ODataExecutionFactory.INVOKE_HTTP, parameters, null); BinaryWSProcedureExecution execution = new BinaryWSProcedureExecution(call, this.metadata, this.executionContext, null, this.connection); execution.setUseResponseContext(true); execution.setCustomHeaders(headers); execution.execute(); return execution; }
@Override public List<?> translate(Function function) { function.setName(SourceSystemFunctions.TAN); return Arrays.asList(getLanguageFactory().createFunction(SourceSystemFunctions.DIVIDE_OP, new Expression[] {new Literal(1, TypeFacility.RUNTIME_TYPES.INTEGER), function}, TypeFacility.RUNTIME_TYPES.DOUBLE)); } });
@Override public List<?> translate(Function function) { if (function.getParameters().size() > 1) { Expression ex = function.getParameters().get(0); if (ex.getType() == TypeFacility.RUNTIME_TYPES.DOUBLE || ex.getType() == TypeFacility.RUNTIME_TYPES.FLOAT) { if (function.getParameters().get(1) instanceof Literal && Integer.valueOf(0).equals(((Literal)function.getParameters().get(1)).getValue())) { function.getParameters().remove(1); } else { function.getParameters().set(0, new Function(SourceSystemFunctions.CONVERT, Arrays.asList(ex, new Literal("bigdecimal", TypeFacility.RUNTIME_TYPES.STRING)), TypeFacility.RUNTIME_TYPES.BIG_DECIMAL)); //$NON-NLS-1$ } } } return null; } });
@Override public List<?> translate(Function function) { function.setName(SourceSystemFunctions.TAN); return Arrays.asList(getLanguageFactory().createFunction(SourceSystemFunctions.DIVIDE_OP, new Expression[] {new Literal(1, TypeFacility.RUNTIME_TYPES.INTEGER), function}, TypeFacility.RUNTIME_TYPES.DOUBLE)); } });
@Override public List<?> translate(Function function) { function.setName(SourceSystemFunctions.TAN); return Arrays.asList(getLanguageFactory().createFunction(SourceSystemFunctions.DIVIDE_OP, new Expression[] {new Literal(1, TypeFacility.RUNTIME_TYPES.INTEGER), function}, TypeFacility.RUNTIME_TYPES.DOUBLE)); } });
@Override public List<?> translate(Function function) { function.setName(SourceSystemFunctions.ADD_OP); Expression param1 = function.getParameters().get(0); Expression param2 = function.getParameters().get(1); Function indexOf = new Function("indexof", Arrays.asList(param2, param1), TypeFacility.RUNTIME_TYPES.INTEGER); //$NON-NLS-1$ indexOf.setMetadataObject(function.getMetadataObject()); function.getParameters().set(0, indexOf); function.getParameters().set(1, new Literal(1, TypeFacility.RUNTIME_TYPES.INTEGER)); return null; } });
@Override public List<?> translate(Function function) { function.setName(SourceSystemFunctions.ADD_OP); Expression param1 = function.getParameters().get(0); Expression param2 = function.getParameters().get(1); Function indexOf = new Function("indexof", Arrays.asList(param2, param1), TypeFacility.RUNTIME_TYPES.INTEGER); //$NON-NLS-1$ indexOf.setMetadataObject(function.getMetadataObject()); function.getParameters().set(0, indexOf); function.getParameters().set(1, new Literal(1, TypeFacility.RUNTIME_TYPES.INTEGER)); return null; } });
public void visit(IsNull obj) { visit(new Comparison(obj.getExpression(), new Literal(null, obj.getExpression().getType()), obj.isNegated()?Comparison.Operator.NE:Comparison.Operator.EQ)); }
public void testGetColumnDataTypes(){ Class<?>[] expectedResults = new Class[2]; List<DerivedColumn> symbols = new ArrayList<DerivedColumn>(); symbols.add(new DerivedColumn("c1", new Literal("3", DataTypeManager.DefaultDataClasses.STRING))); //$NON-NLS-1$//$NON-NLS-2$ expectedResults[0] = DataTypeManager.DefaultDataClasses.STRING; symbols.add(new DerivedColumn("c2", new Literal(new Integer(5), DataTypeManager.DefaultDataClasses.INTEGER))); //$NON-NLS-1$ expectedResults[1] = DataTypeManager.DefaultDataClasses.INTEGER; Select query = new Select(symbols, false, null, null, null, null, null); Class<?>[] results = query.getColumnTypes(); assertEquals( results[0], expectedResults[0]); assertEquals( results[1], expectedResults[1]); }
public static Literal example(Object val) { Constant c = helpExample(val); return new Literal(c.getValue(), c.getType()); }
public static Literal example(int val) { Constant c = helpExample(val); return new Literal(c.getValue(), c.getType()); }
@Override public void visit(Comparison obj) { if (isFixedChar(obj.getLeftExpression())) { if (obj.getRightExpression() instanceof Literal) { Literal l = (Literal)obj.getRightExpression(); l.setType(FixedCharType.class); } else if (obj.getRightExpression() instanceof Parameter) { Parameter p = (Parameter)obj.getRightExpression(); p.setType(FixedCharType.class); } } if (obj.getLeftExpression().getType() == TypeFacility.RUNTIME_TYPES.BOOLEAN && (obj.getLeftExpression() instanceof Function) && obj.getRightExpression() instanceof Literal) { Function f = (Function)obj.getLeftExpression(); if (STRING_BOOLEAN_FUNCTIONS.contains(f.getName())) { Boolean b = (Boolean)((Literal)obj.getRightExpression()).getValue(); obj.setRightExpression(new Literal(b!=null?(b?"TRUE":"FALSE"):null, TypeFacility.RUNTIME_TYPES.STRING)); //$NON-NLS-1$ //$NON-NLS-2$ } } super.visit(obj); }