/** * Convenience constructor for a single scope. * * @param scope the scope for all metadata * @param tags the names of the tags for this scope * @param properties the property names and values for this scope */ public Metadata(MetadataScope scope, Set<String> tags, Map<String, String> properties) { this.tags = tags.stream().map(tag -> new ScopedName(scope, tag)).collect(Collectors.toSet()); this.properties = properties.entrySet().stream().collect(Collectors.toMap( entry -> new ScopedName(scope, entry.getKey()), Map.Entry::getValue)); }
ImmutableSet.of(new ScopedName(SYSTEM, "a"), new ScopedName(USER, "b")), ImmutableMap.of(new ScopedName(SYSTEM, "p"), "v", new ScopedName(USER, "k"), "v1")); change = mds.apply(new Update(entity, metadata)); Assert.assertEquals(new MetadataChange(entity, Metadata.EMPTY, metadata), change); ImmutableSet.of(new ScopedName(SYSTEM, "st1"), new ScopedName(SYSTEM, "st2"), new ScopedName(USER, "ut1")), ImmutableMap.of(new ScopedName(SYSTEM, "sp1"), "sv1", new ScopedName(SYSTEM, "sp2"), "sv2", new ScopedName(USER, "up1"), "uv1", new ScopedName(USER, "up2"), "uv2")); MetadataMutation create = new MetadataMutation.Create(entity, metadata, Collections.emptyMap()); change = mds.apply(create); ImmutableSet.of(new ScopedName(SYSTEM, "nst0")), ImmutableMap.of(new ScopedName(SYSTEM, "sp1"), "nsv1", new ScopedName(SYSTEM, "nsp0"), "sv0")); MetadataMutation recreate = new MetadataMutation.Create(entity, recreatedMetadata, ImmutableMap.of( new ScopedNameOfKind(MetadataKind.TAG, SYSTEM, "st1"), MetadataDirective.KEEP, ImmutableSet.of(new ScopedName(SYSTEM, "st1"), new ScopedName(SYSTEM, "st2"), new ScopedName(SYSTEM, "nst0"), new ScopedName(USER, "ut1")), ImmutableMap.of(new ScopedName(SYSTEM, "sp1"), "sv1", new ScopedName(SYSTEM, "sp2"), "sv2",
program, new Metadata(ImmutableSet.of(), ImmutableMap.of(new ScopedName(USER, "key1"), "value1", new ScopedName(USER, "key2"), "value2", new ScopedName(USER, "multiword"), multiWordValue, new ScopedName(SYSTEM, "key3"), "value1")));
program, new Metadata(USER, props("key1", "value1", "key2", "value2", "multiword", multiWordValue))); MetadataRecord datasetRecord = new MetadataRecord(dataset, new Metadata(ImmutableSet.of(), ImmutableMap.of(new ScopedName(SYSTEM, "sKey1"), "sValue1", new ScopedName(USER, "Key1"), "Value1")));
Metadata metadata = new Metadata(ImmutableSet.of(new ScopedName(SYSTEM, "sysTag"), new ScopedName(USER, "userTag")), ImmutableMap.of(new ScopedName(SYSTEM, "sysProp"), "sysVal", new ScopedName(USER, "userProp"), "userVal")); MetadataChange change = mds.apply(new Update(entity, metadata)); Assert.assertEquals(new MetadataChange(entity, Metadata.EMPTY, metadata), change);