@Override public Object visit(Constant<?> expr, Void context) { if (Enum.class.isAssignableFrom(expr.getType())) { return ((Enum<?>)expr.getConstant()).name(); } else { return expr.getConstant(); } }
@Override public NODE visit(Constant<?> expr, Bindings bindings) { if (expr.getType().equals(String.class)) { return new LIT(expr.getConstant().toString()); } else if (NODE.class.isAssignableFrom(expr.getType())) { return (NODE) expr.getConstant(); } else { UID datatype = ConverterRegistryImpl.DEFAULT.getDatatype(expr.getType()); String value = ConverterRegistryImpl.DEFAULT.toString(expr.getConstant()); return new LIT(value, datatype); } }
@Override public Var visit(Constant<?> expr, QueryMetadata md) { Var var = constantToVar.get(expr); if (NODE.class.isAssignableFrom(expr.getType())) { var = new Var(varNames.next(), dialect.getNode((NODE) expr.getConstant())); } else if (expr.getType().equals(String.class)) { var = new Var(varNames.next(), dialect.getNode(new LIT(expr.getConstant().toString()))); } else { UID datatype = ConverterRegistryImpl.DEFAULT.getDatatype(expr.getType()); String value = ConverterRegistryImpl.DEFAULT.toString(expr.getConstant()); var = new Var(varNames.next(), dialect.getNode(new LIT(value, datatype))); } return var; }
@Override public Var visit(Constant<?> expr, QueryMetadata md) { Var var = constantToVar.get(expr); if (var == null) { if (NODE.class.isAssignableFrom(expr.getType())) { var = new Var(varNames.next(), dialect.getNode((NODE) expr.getConstant())); } else if (expr.getType().equals(String.class)) { var = new Var(varNames.next(), dialect.getNode(new LIT(expr.getConstant().toString()))); } else { UID datatype = ConverterRegistryImpl.DEFAULT.getDatatype(expr.getType()); String value = ConverterRegistryImpl.DEFAULT.toString(expr.getConstant()); var = new Var(varNames.next(), dialect.getNode(new LIT(value, datatype))); } var.setAnonymous(true); constantToVar.put(expr, var); } return var; }
@Override public Var visit(Constant<?> expr, QueryMetadata md) { Var var = constantToVar.get(expr); if (var == null){ if (NODE.class.isAssignableFrom(expr.getType())){ var = new Var(varNames.next(), dialect.getNode((NODE)expr.getConstant())); }else if (expr.getType().equals(String.class)){ var = new Var(varNames.next(), dialect.getNode(new LIT(expr.getConstant().toString()))); }else{ UID datatype = ConverterRegistryImpl.DEFAULT.getDatatype(expr.getType()); String value = ConverterRegistryImpl.DEFAULT.toString(expr.getConstant()); var = new Var(varNames.next(), dialect.getNode(new LIT(value, datatype))); } var.setAnonymous(true); constantToVar.put(expr, var); } return var; }
public Expression<?> visit(Constant<?> constant, Filters filters) { Object javaValue = constant.getConstant(); ConverterRegistry converter = configuration.getConverterRegistry(); if (List.class.isAssignableFrom(constant.getType()) && ((List<?>) constant.getConstant()).isEmpty()) { return new ConstantImpl<UID>(RDF.nil); } else if (NODE.class.isAssignableFrom(constant.getType())) { return constant; } else if (javaValue instanceof Class<?>) { UID datatype = converter.getDatatype((Class<?>) javaValue); if (datatype != null) { return new ConstantImpl<UID>(datatype); } else { return new ConstantImpl<UID>(getTypeForDomainClass((Class<?>) javaValue)); } } else if (javaValue instanceof String) { return new ConstantImpl<LIT>(new LIT(javaValue.toString(), XSD.stringType)); } else if (converter.supports(javaValue.getClass())) { String label = converter.toString(javaValue); UID datatype = converter.getDatatype(javaValue.getClass()); return new ConstantImpl<LIT>(new LIT(label, datatype)); } else { ID id = session.getId(javaValue); return new ConstantImpl<ID>(id); } }
@SuppressWarnings("unchecked") private Operation<?> transformPathEqNeConstant(Operation<?> operation) { Path<?> path = (Path<?>) operation.getArg(0); Constant<?> constant = (Constant<?>) operation.getArg(1); MappedPath mappedPath = getMappedPath(path); // id property if (path.getMetadata().getPathType() == PathType.PROPERTY && constant.getType().equals(String.class) && mappedPath.getPredicatePath().isEmpty()) { operation = PredicateOperation.create((Operator) operation.getOperator(), path, new ConstantImpl<ID>(session.getId(new LID(constant.toString())))); // localized property } else if (mappedPath.getMappedProperty().isLocalized()) { Locale locale; if (path.getMetadata().getPathType() == PathType.PROPERTY) { locale = session.getCurrentLocale(); } else { locale = (Locale) path.getMetadata().getElement(); } operation = PredicateOperation.create((Operator) operation.getOperator(), path, new ConstantImpl<LIT>(new LIT(constant.toString(), locale))); } return operation; }