TAVERNA-1048: Look up annotations by Path/URI
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/e50826e6 Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/tree/e50826e6 Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/diff/e50826e6 Branch: refs/heads/master Commit: e50826e6439c1a3f5c1f01e7b1e437e613d5ee90 Parents: 3336e75 Author: Stian Soiland-Reyes <[email protected]> Authored: Fri May 11 09:44:59 2018 +0100 Committer: Stian Soiland-Reyes <[email protected]> Committed: Fri May 11 09:44:59 2018 +0100 ---------------------------------------------------------------------- .../taverna/robundle/manifest/Manifest.java | 46 +++++++++++++++++--- 1 file changed, 39 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/e50826e6/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/Manifest.java ---------------------------------------------------------------------- diff --git a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/Manifest.java b/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/Manifest.java index 50979bf..437d9f9 100644 --- a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/Manifest.java +++ b/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/Manifest.java @@ -8,9 +8,9 @@ package org.apache.taverna.robundle.manifest; * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -27,7 +27,6 @@ import static java.nio.file.FileVisitResult.CONTINUE; import static java.nio.file.FileVisitResult.SKIP_SUBTREE; import static java.nio.file.Files.createDirectories; import static java.nio.file.Files.getLastModifiedTime; -import static java.nio.file.Files.isDirectory; import static java.nio.file.Files.newBufferedWriter; import static java.nio.file.Files.walkFileTree; import static java.nio.file.StandardOpenOption.CREATE; @@ -53,8 +52,10 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.Optional; import java.util.Set; import java.util.logging.Logger; +import java.util.stream.Collectors; import org.apache.taverna.robundle.Bundle; import org.apache.taverna.robundle.manifest.combine.CombineManifest; @@ -150,6 +151,36 @@ public class Manifest { return annotations; } + @JsonIgnore + public Optional<PathAnnotation> getAnnotation(URI annotation) { + return getAnnotations().stream() + .filter(a -> annotation.equals(a.getUri())) + .findAny(); + } + + @JsonIgnore + public List<PathAnnotation> getAnnotations(final URI about) { + final URI aboutAbs; + URI manifestBase = getBaseURI().resolve(RO + "/" + MANIFEST_JSON); + if (about.isAbsolute()) { + aboutAbs = about; + } else { + aboutAbs = manifestBase.resolve(about); + } + // Compare absolute URIs against absolute URIs + return getAnnotations().stream() + .filter(a -> a.getAboutList().stream() + .map(manifestBase::resolve) + .filter(aboutAbs::equals) + .findAny().isPresent()) + .collect(Collectors.toList()); + } + + @JsonIgnore + public List<PathAnnotation> getAnnotations(Path about) { + return getAnnotations(about.toUri()); + } + public List<Agent> getAuthoredBy() { return authoredBy; } @@ -221,9 +252,9 @@ public class Manifest { /** * Guess media type based on extension - * + * * @see http://wf4ever.github.io/ro/bundle/#media-types - * + * * @param file * A Path to a file * @return media-type, e.g. <code>application/xml</code> or @@ -433,7 +464,7 @@ public class Manifest { /** * Write as an RO Bundle JSON-LD manifest - * + * * @return The path of the written manifest (e.g. ".ro/manifest.json") * @throws IOException */ @@ -461,7 +492,7 @@ public class Manifest { /** * Write as a ODF manifest.xml - * + * * @see http * ://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part3. * html#__RefHeading__752807_826425813 @@ -471,4 +502,5 @@ public class Manifest { public Path writeAsODFManifest() throws IOException { return new ODFManifest(this).createManifestXML(); } + }
