private Slot<TableFilter> computeParentFilter(FilterLevel filterLevel, ResourceId formId) { if(parentFilterMap.containsKey(formId)) { return parentFilterMap.get(formId); } FormClass formClass = formClassProvider.getFormClass(formId); if(!formClass.isSubForm()) { return new PendingSlot<>(TableFilter.ALL_SELECTED); } Slot<PrimaryKeyMap> parentPrimaryKeySlot = addPrimaryKey(filterLevel, formClass.getParentFormId().get()); Slot<ColumnView> parentId = addParentColumn(FilterLevel.NONE, formId); ParentMask filter = new ParentMask(parentPrimaryKeySlot, parentId); parentFilterMap.put(formId, filter); return filter; } }
private ReferenceJoin addJoinLink(FilterLevel filterLevel, JoinNode node) { Slot<ForeignKey> foreignKey = addForeignKey(filterLevel, node); Slot<PrimaryKeyMap> primaryKey = addPrimaryKey(filterLevel, node.getRightFormId()); ReferenceJoinKey referenceJoinKey = new ReferenceJoinKey(filterLevel, foreignKey, primaryKey); ReferenceJoin joinLink = joinLinks.get(referenceJoinKey); if(joinLink == null) { joinLink = new ReferenceJoin(foreignKey, primaryKey, node.toString()); joinLinks.put(referenceJoinKey, joinLink); } return joinLink; }
private Slot<ColumnView> addSubFormJoinedColumn(FilterLevel filterLevel, NodeMatch match) { JoinNode node = match.getJoins().get(0); Slot<PrimaryKeyMap> primaryKey = addPrimaryKey(filterLevel, node.getLeftFormId()); Slot<ColumnView> parentColumn = addParentColumn(filterLevel, node.getRightFormId()); Slot<ColumnView> dataColumn = getDataColumn(filterLevel, match.getFormClass().getId(), match.getFieldComponent()); SubFormJoin join = new SubFormJoin(primaryKey, parentColumn); return new JoinedSubFormColumnViewSlot(Collections.singletonList(join), dataColumn, node.getAggregation().or(SumFunction.INSTANCE)); }