@Override public Slot<ColumnView> visitConstant(ConstantNode node) { return batch.addConstantColumn(filterLevel, rootFormClass, node.getValue()); }
private String resolveSymbol(ConstantNode constantNode) throws XSymbolException { String resolved; if (constantNode.getType() instanceof EnumType) { EnumValue enumValue = (EnumValue) constantNode.getValue(); resolved = symbolHandler.resolveSymbol(enumValue.getValueId().asString()); } else { resolved = symbolHandler.resolveSymbol(constantNode.getValue().toString()); } return resolved; } }
@Override public ColumnPlanNode visitConstant(ConstantNode node) { return new ConstantColumn(node.getValue(), new CountRecordsOp(formTree.getRootFormId())); }
private static FieldValue parseFieldValue(FormulaNode argument) { if(argument instanceof SymbolNode) { ResourceId id = ResourceId.valueOf(((SymbolNode) argument).getName()); if(id.getDomain() == CuidAdapter.ATTRIBUTE_DOMAIN) { return new EnumValue(id); } else { return TextValue.valueOf(id.asString()); } } else if(argument instanceof ConstantNode) { return ((ConstantNode) argument).getValue(); } throw new UnsupportedOperationException("constant value: " + argument); }
private static FieldValue parseEnum(FormulaNode argument) { if(argument instanceof SymbolNode) { return new EnumValue(ResourceId.valueOf(((SymbolNode) argument).getName())); } else if(argument instanceof ConstantNode) { if(((ConstantNode) argument).getType() instanceof EnumType) { return ((ConstantNode) argument).getValue(); } else { return new EnumValue(ResourceId.valueOf(((ConstantNode) argument).asExpression())); } } throw new IllegalArgumentException("Expected symbol: " + argument); } }
private void appendTo(FormulaNode formulaNode, StringBuilder xpath) { if (formulaNode instanceof ConstantNode) { ConstantNode constantNode = (ConstantNode) formulaNode; FieldValue value = constantNode.getValue();
/** * If this node is a literal value, for example "abc" or 42.0 or * DATE(2017, 1, 1), then return its value. Otherwise return {@code null}. */ private FieldValue parseLiteral(FormulaNode node) { if(node instanceof ConstantNode) { return ((ConstantNode) node).getValue(); } else if(node instanceof FunctionCallNode) { FunctionCallNode callNode = (FunctionCallNode) node; if(callNode.getFunction() == DateFunction.INSTANCE) { FieldValue year = parseLiteral(callNode.getArgument(0)); FieldValue month = parseLiteral(callNode.getArgument(1)); FieldValue day = parseLiteral(callNode.getArgument(2)); if(year != null && month != null || day != null) { return DateFunction.apply(year, month, day); } } } return null; }