private Slot<PrimaryKeyMap> addPrimaryKey(FilterLevel filterLevel, ResourceId formId) { Slot<ColumnView> filteredIdSlot = addRecordIdColumn(filterLevel, formId); return new MemoizedSlot<>(filteredIdSlot, new Function<ColumnView, PrimaryKeyMap>() { @Override public PrimaryKeyMap apply(ColumnView columnView) { return columnFactory.newPrimaryKeyMap(columnView); } }); }
private Collection<NodeMatch> matchNodes(QueryPath queryPath, Iterable<FormTree.Node> fields) { if(queryPath.isLeaf()) { return matchTerminal(queryPath, fields); } else { return matchReferenceField(queryPath, fields); } }
/** * Adds a ResourceId to the batch */ public Slot<ColumnView> addRecordIdColumn(FilterLevel filterLevel, ResourceId formId) { return filter(filterLevel, formId, getTable(formId).addResourceId()); }
public ColumnSet query(QueryModel queryModel) { ColumnSetBuilder builder = new ColumnSetBuilder(this, new NullFormScanCache(), new NullFormSupervisor()); return builder.build(queryModel); }
@Override public ColumnPlanNode visitSymbol(SymbolNode symbolNode) { NodeMatcher nodeMatcher = new NodeMatcher(formTree); Collection<NodeMatch> nodeMatches = nodeMatcher.resolveSymbol(symbolNode); return plan(nodeMatches); }
private Slot<ForeignKey> addForeignKey(FilterLevel filterLevel, JoinNode node) { Slot<ForeignKey> foreignKey = getTable(node.getLeftFormId()).addForeignKey(node.getReferenceField(), node.getRightFormId()); Slot<TableFilter> filter = getFilter(filterLevel, node.getLeftFormId()); return new MemoizedSlot2<>(foreignKey, filter, new BiFunction<ForeignKey, TableFilter, ForeignKey>() { @Override public ForeignKey apply(ForeignKey foreignKey, TableFilter filter) { return filter.apply(foreignKey); } }); }
@Override public ColumnPlanNode visitCompoundExpr(CompoundExpr compoundExpr) { NodeMatcher nodeMatcher = new NodeMatcher(formTree); Collection<NodeMatch> nodeMatches = nodeMatcher.resolveCompoundExpr(compoundExpr); return plan(nodeMatches); } });
@Override public Slot<ColumnView> visitCompoundExpr(CompoundExpr compoundExpr) { return addColumn(resolver.resolveCompoundExpr(compoundExpr)); }
public Slot<Integer> addRowCount(FilterLevel filterLevel, ResourceId formId) { Slot<TableFilter> filter = getFilter(filterLevel, formId); Slot<Integer> countSlot = getTable(formId).addCount(); return new FilteredRowCountSlot(countSlot, filter); }
public FormulaValidator(FormTree formTree) { this.formTree = formTree; this.nodeMatcher = new NodeMatcher(formTree); }
private Slot<TableFilter> computeFilter(FilterLevel filterLevel, ResourceId formId) { final Slot<TableFilter> parentFilter = computeParentFilter(filterLevel, formId); if(filterLevel == FilterLevel.BASE) { // Only apply parent visibility filter for subforms return parentFilter; } else { final Slot<TableFilter> permissionFilter = computePermissionFilter(formId); return new MemoizedSlot2<>(parentFilter, permissionFilter, new BiFunction<TableFilter, TableFilter, TableFilter>() { @Override public TableFilter apply(TableFilter parentFilter, TableFilter permissionFilter) { return parentFilter.intersection(permissionFilter); } }); } }
public Slot<TableFilter> filter(FormulaNode filter) { if(filter == null) { return new PendingSlot<>(TableFilter.ALL_SELECTED); } else { return new MemoizedSlot<>(evaluateExpression(filter), new Function<ColumnView, TableFilter>() { @Override public TableFilter apply(ColumnView columnView) { return new TableFilter(columnView); } }); } }
@Override public TableFilter apply(ColumnView columnView) { return new TableFilter(columnView); } });
@Override public ForeignKey apply(ForeignKey foreignKey, TableFilter filter) { return filter.apply(foreignKey); } });
@Override public TableFilter apply(TableFilter parentFilter, TableFilter permissionFilter) { return parentFilter.intersection(permissionFilter); } });
public boolean isEmpty() { return allQueriesResolved(); } }
@Override public ColumnQueryBuilder newColumnQuery() { return new QueryBuilderStub(this); }
private ColumnSet query(QueryModel queryModel) { ColumnSetBuilder builder = new ColumnSetBuilder(testingCatalog, new NullFormScanCache(), new NullFormSupervisor()); return builder.build(queryModel); }
@Override public TableFilter apply(ColumnView columnView) { return new TableFilter(columnView); } });