/** * Test whether constraints for a particular dimension are missing, empty or match rows. * * @param dimension The dimension for filtering * @param constraintMap The map of filters from the constraint object * * @return true if the constraintMap doesn't constraint this dimension or if the constraint returns rows */ private boolean emptyConstraintOrAnyRows(Dimension dimension, Map<Dimension, Set<ApiFilter>> constraintMap) { return !constraintMap.containsKey(dimension) || constraintMap.get(dimension).isEmpty() || anyRowsMatch(dimension, constraintMap.get(dimension)); }
@Override public Boolean apply(DataSourceConstraint constraint) { Map<Dimension, Set<ApiFilter>> constraintMap = constraint.getApiFilters(); return dimensionKeySelectFilters.keySet() .stream() .allMatch(dimension -> emptyConstraintOrAnyRows(dimension, constraintMap)); }
@Override public ConfigPhysicalTable build(ResourceDictionaries dictionaries, DataSourceMetadataService metadataService) { Map<ConfigPhysicalTable, DataSourceFilter> availabilityFilters = tablePartDefinitions.entrySet().stream() .collect(Collectors.toMap( entry -> dictionaries.getPhysicalDictionary().get(entry.getKey().asName()), entry -> new DimensionIdFilter(toDimensionValuesMap( entry.getValue(), dictionaries.getDimensionDictionary() )) )); return new BaseCompositePhysicalTable( getName(), getTimeGrain(), buildColumns(dictionaries.getDimensionDictionary()), availabilityFilters.keySet(), getLogicalToPhysicalNames(), PartitionAvailability.build(availabilityFilters) ); }