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);

Reply via email to