/** * @return all tags for the given scope */ public Set<String> getTags(MetadataScope scope) { return tags.stream() .filter(tag -> scope.equals(tag.getScope())) .map(ScopedName::getName) .collect(Collectors.toSet()); }
/** * @return all properties for a given scope */ public Map<String, String> getProperties(MetadataScope scope) { return properties.entrySet().stream() .filter(entry -> scope.equals(entry.getKey().getScope())) .collect(Collectors.toMap(entry -> entry.getKey().getName(), Map.Entry::getValue)); }
private MetadataChange update(MetadataDatasetContext context, MetadataEntity entity, Metadata updates) { Set<String> userTagsToAdd = new HashSet<>(); Set<String> systemTagsToAdd = new HashSet<>(); Map<String, String> userPropertiesToAdd = new HashMap<>(); Map<String, String> systemPropertiesToAdd = new HashMap<>(); updates.getTags().forEach(tag -> (USER == tag.getScope() ? userTagsToAdd : systemTagsToAdd).add(tag.getName())); updates.getProperties().forEach( (key, value) -> (USER == key.getScope() ? userPropertiesToAdd : systemPropertiesToAdd).put(key.getName(), value)); MetadataDataset.Change userChange = addInScope(context, USER, entity, userTagsToAdd, userPropertiesToAdd); MetadataDataset.Change systemChange = addInScope(context, SYSTEM, entity, systemTagsToAdd, systemPropertiesToAdd); return combineChanges(entity, userChange, systemChange); }
private MetadataChange create(MetadataDatasetContext context, MetadataEntity entity, Metadata metadata, Map<ScopedNameOfKind, MetadataDirective> directives) { Set<String> newUserTags = new HashSet<>(); Set<String> newSystemTags = new HashSet<>(); Map<String, String> newUserProperties = new HashMap<>(); Map<String, String> newSystemProperties = new HashMap<>(); metadata.getTags().forEach(tag -> (USER == tag.getScope() ? newUserTags : newSystemTags).add(tag.getName())); metadata.getProperties().forEach( (key, value) -> (USER == key.getScope() ? newUserProperties : newSystemProperties).put(key.getName(), value)); MetadataDataset.Change userChange = replaceInScope(context, USER, entity, newUserTags, newUserProperties, directives); MetadataDataset.Change systemChange = replaceInScope(context, SYSTEM, entity, newSystemTags, newSystemProperties, directives); return combineChanges(entity, userChange, systemChange); }
private Metadata filterBy(Metadata metadata, MetadataScope scope, MetadataKind kind) { //noinspection ConstantConditions return new Metadata( kind == PROPERTY ? Collections.emptySet() : Sets.filter(metadata.getTags(), tag -> scope == null || scope.equals(tag.getScope())), kind == MetadataKind.TAG ? Collections.EMPTY_MAP : Maps.filterKeys(metadata.getProperties(), key -> scope == null || scope.equals(key.getScope()))); }
private Metadata filterBy(Metadata metadata, ImmutableSet<ScopedNameOfKind> selection) { //noinspection ConstantConditions return new Metadata( Sets.filter(metadata.getTags(), tag -> selection.contains(new ScopedNameOfKind(MetadataKind.TAG, tag.getScope(), tag.getName()))), Maps.filterKeys(metadata.getProperties(), key -> selection.contains(new ScopedNameOfKind(PROPERTY, key.getScope(), key.getName())))); }