Merge branch 'combine-dates' into TAVERNA-1044
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.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 @@
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 @@
.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);
diff --git a/taverna-robundle/src/test/java/org/apache/taverna/robundle/fs/MemoryEfficiencyIT.java b/taverna-robundle/src/test/java/org/apache/taverna/robundle/fs/MemoryEfficiencyIT.java
index a0d7ed3..355f258 100644
--- a/taverna-robundle/src/test/java/org/apache/taverna/robundle/fs/MemoryEfficiencyIT.java
+++ b/taverna-robundle/src/test/java/org/apache/taverna/robundle/fs/MemoryEfficiencyIT.java
@@ -74,7 +74,7 @@
try {
int numFiles = MANY_FILS;
System.out.println("Writing " + numFiles
- + " files in parallell over max " + MAX_WORKERS
+ + " files in parallel over max " + MAX_WORKERS
+ " threads");
for (int i = 0; i < numFiles; i++) {
int folderNo = i % 100;