Repository: incubator-taverna-language Updated Branches: refs/heads/master b85ec8ba2 -> 99516e11d
TAVERNA-1045: Avoid duplicate about/content annotations .. by maintaining a set of known pairings. Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/commit/99516e11 Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/tree/99516e11 Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/diff/99516e11 Branch: refs/heads/master Commit: 99516e11de452bb4a51a1898858d7ede9b6ef9e1 Parents: b85ec8b Author: Stian Soiland-Reyes <[email protected]> Authored: Thu May 10 11:28:15 2018 +0100 Committer: Stian Soiland-Reyes <[email protected]> Committed: Thu May 10 11:28:15 2018 +0100 ---------------------------------------------------------------------- .../manifest/combine/CombineManifest.java | 24 +++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/99516e11/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/combine/CombineManifest.java ---------------------------------------------------------------------- diff --git a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/combine/CombineManifest.java b/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/combine/CombineManifest.java index 2057253..854667a 100644 --- a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/combine/CombineManifest.java +++ b/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/combine/CombineManifest.java @@ -65,6 +65,7 @@ import org.apache.taverna.robundle.xml.combine.ObjectFactory; import org.apache.taverna.robundle.xml.combine.OmexManifest; import org.xml.sax.InputSource; +import org.apache.commons.lang3.tuple.Pair; import org.apache.jena.query.QueryExecution; import org.apache.jena.query.QueryExecutionFactory; import org.apache.jena.query.QueryFactory; @@ -352,20 +353,26 @@ public class CombineManifest { return; } - for (URI about : bundleSubjects()) { - Resource resource = metadata.getResource(fakeFileURI(about)); + Set<Pair<URI,URI>> foundAnnotations = new HashSet<>(); + for (URI subject : bundleSubjects()) { + Resource resource = metadata.getResource(fakeFileURI(subject)); if (!metadata.containsResource(resource)) { System.out.println("Nothing known about " + resource); continue; } - PathAnnotation ann = new PathAnnotation(); - ann.setAbout(manifest.relativeToBundleRoot(about)); - ann.setContent(manifest.relativeToBundleRoot(metadataRdf.toUri())); - manifest.getAnnotations().add(ann); + URI about = manifest.relativeToBundleRoot(subject); + URI content = manifest.relativeToBundleRoot(metadataRdf.toUri()); + if (! foundAnnotations.add(Pair.of(about, content))) { + // Avoid duplication + PathAnnotation ann = new PathAnnotation(); + ann.setAbout(subject); + ann.setContent(content); + manifest.getAnnotations().add(ann); + } // Extract information that could be in our manifest - PathMetadata pathMetadata = manifest.getAggregation(about); + PathMetadata pathMetadata = manifest.getAggregation(subject); // Created date. We'll prefer dcModified. Property dcCreated = metadata @@ -383,8 +390,9 @@ public class CombineManifest { .getProperty("http://purl.org/dc/terms/W3CDTF"); Statement w3cSt = createdSt.getResource().getProperty( dcW3CDTF); - if (w3cSt != null) + if (w3cSt != null) { fileTime = literalAsFileTime(w3cSt.getObject()); + } } if (fileTime != null) { pathMetadata.setCreatedOn(fileTime);
