private FormulaNode join(@Nullable FormulaNode base, @Nullable SymbolNode field) { if(base == null && field == null) { return null; } else if (base == null) { return field; } else if (field == null) { return base; } else { return new CompoundExpr(base, field); } }
@Override public FormulaNode transform(Function<FormulaNode, FormulaNode> function) { return function.apply(new CompoundExpr( value.transform(function), field)); }
public FormulaNode toExpr() { Iterator<ResourceId> it = path.iterator(); FormulaNode expr = new SymbolNode(it.next()); while(it.hasNext()) { expr = new CompoundExpr(expr, new SymbolNode(it.next())); } return expr; }
private static FormulaNode toExpr(List<FormTree.Node> partition) { Iterator<FormTree.Node> it = partition.iterator(); FormulaNode expr = new SymbolNode(it.next().getFieldId()); while(it.hasNext()) { expr = new CompoundExpr(expr, new SymbolNode(it.next().getFieldId())); } return expr; }
private static FormulaNode toListFormula(FormulaNode field, FilterConfig filter) { // Shockingly, the gxt filterconfig for list is generated by concatenating // ids together with "::" String[] enumItemIds = filter.getValue().split("::"); List<FormulaNode> enumConditions = new ArrayList<>(); for (String enumItemId : enumItemIds) { enumConditions.add(new CompoundExpr(field, new SymbolNode(enumItemId))); } return Formulas.anyTrue(enumConditions); }
public Map<LookupKey, FormulaNode> getKeyFormulas(FormulaNode baseField) { if(leafKeyMap.size() == 1) { return Iterables.getOnlyElement(getLeafKeys()).getKeyFormulas(baseField); } else { // For the case where a field can refer to one of several different forms, // query the keys using the syntax [formId].[keyFieldId] Map<LookupKey, FormulaNode> keyMap = new HashMap<>(); for (LookupKey lookupKey : lookupKeys) { keyMap.put(lookupKey, new CompoundExpr(new SymbolNode(lookupKey.getFormId()), lookupKey.getKeyField())); } return keyMap; } }
private FormulaNode measureFormula() { if (rootFormId.equals(formId)) { return new SymbolNode(field.getId()); } else { return new CompoundExpr(formId, field.getName()); } }
@Override public List<ColumnModel> getColumnModels() { List<ColumnModel> columns = new ArrayList<>(); for (EnumItem enumItem : enumType.getValues()) { ColumnModel model = new ColumnModel(); model.setId(getItemId(enumItem)); model.setFormula(new CompoundExpr(formula, new SymbolNode(enumItem.getId()))); columns.add(model); } return columns; }
@Override public DimensionModel dimensionModel() { return ImmutableDimensionModel.builder() .id(ResourceId.generateCuid()) .label(field.getLabel()) .addMappings(new DimensionMapping(new CompoundExpr(formId, field.getName()))) .build(); }
@Override public List<ColumnModel> getColumnModels() { ColumnModel latitudeModel = new ColumnModel(); latitudeModel.setId(getLatitudeId()); latitudeModel.setFormula(new CompoundExpr(formula, new SymbolNode("latitude"))); ColumnModel longitudeModel = new ColumnModel(); longitudeModel.setId(getLongitudeId()); longitudeModel.setFormula(new CompoundExpr(formula, new SymbolNode("longitude"))); return Arrays.asList(latitudeModel, longitudeModel); }
private static FormulaNode exprFor(FormTree.Node node) { SymbolNode fieldSymbol = new SymbolNode(symbolFor(node.getField())); if(node.isRoot()) { return fieldSymbol; } else { return new CompoundExpr(exprFor(node.getParent()), fieldSymbol); } }
@Override public DimensionModel dimensionModel() { return ImmutableDimensionModel.builder() .id(ResourceId.generateCuid()) .label(form.getLabel() + " " + field.getLabel()) .addMappings(new DimensionMapping( new CompoundExpr(new SymbolNode(form.getId()), new SymbolNode(field.getId())))) .build(); }
public FormulaElement(FormulaElement field, EnumItem item) { this.key = field.getKey() + "#" + item.getId().asString(); this.formulaNode = new CompoundExpr(field.getExpr(), new SymbolNode(symbolFor(item))); this.label = item.getLabel(); this.icon = IconBundle.INSTANCE.enumField(); this.code = null; }
private FormulaNode compound(SymbolNode symbol) { FormulaNode result = symbol; while(lexer.hasNext() && lexer.peek().isDot()) { lexer.next(); SymbolNode field = symbol(); result = new CompoundExpr(result, field, new SourceRange(result.getSourceRange(), field.getSourceRange())); } return result; }
private ImmutableDimensionModel genderDimension() { return ImmutableDimensionModel.builder() .id(ResourceId.generateCuid()) .label("Gender") .missingIncluded(false) .addMappings(new DimensionMapping(new CompoundExpr(survey.getFormId(), "Gender"))) .build(); }
@Override public MeasureModel newMeasure() { return ImmutableMeasureModel.builder() .label(I18N.MESSAGES.countDistinctMeasure(formClass.getLabel())) .formId(rootFormId) .formula(new CompoundExpr(formClass.getId(), ColumnModel.RECORD_ID_SYMBOL).asExpression()) .addStatistics(Statistic.COUNT_DISTINCT) .build(); } }
public ColumnNode(FormTree.Node node) { this.node = node; this.header = composeHeader(node); if(node.isRoot()) { this.expr = new SymbolNode(node.getFieldId()); } else { this.expr = new CompoundExpr( new SymbolNode(node.getDefiningFormClass().getId()), new SymbolNode(node.getFieldId())); } }
@Test public void parseCompoundOp() { expect("a.b==c", new FunctionCallNode( EqualFunction.INSTANCE, new CompoundExpr( new SymbolNode("a"), new SymbolNode("b")), new SymbolNode("c"))); }
@Test public void multipleTextKeysTest() { TestingStorageProvider catalog = setup.getCatalog(); SimpleReferenceForm refForm = catalog.getSimpleReferenceForm(); MultipleTextKeysForm multTextKeyForm = catalog.getMultipleTextKeysForm(); FormField refField = refForm.getRefField(); CompoundExpr pathToKey1 = new CompoundExpr(refField.getId(), MultipleTextKeysForm.FIRST_TEXT_KEY_ID.asString()); CompoundExpr pathToKey2 = new CompoundExpr(refField.getId(), MultipleTextKeysForm.SECOND_TEXT_KEY_ID.asString()); FormTree formTree = catalog.getFormTree(multTextKeyForm.getFormId()); LookupKeySet lookupKeySet = new LookupKeySet(formTree, refField); Map<LookupKey,FormulaNode> formulas = lookupKeySet.getKeyFormulas(refField.getId()); assertThat(formulas.values(), containsInAnyOrder(pathToKey1, pathToKey2)); } }
@Test public void parseCompound() { expect("a.b", new CompoundExpr(new SymbolNode("a"), new SymbolNode("b"))); }