From b45317e61e7529f4e851a810b49fb6f692893983 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20Sch=C3=A4rtl?= <andreas@schaertl.me> Date: Wed, 30 Sep 2020 15:38:45 +0200 Subject: [PATCH] app: add explore links for use references --- .../mathhub/uloapi/html/PrintableIRI.java | 59 +++++++++++++++++++ .../java/info/mathhub/uloapi/html/Routes.java | 4 +- .../freemarker/explore_contributor.flt | 4 +- .../template/freemarker/explore_node.flt | 4 +- 4 files changed, 67 insertions(+), 4 deletions(-) create mode 100644 src/ulo-storage-applications/src/main/java/info/mathhub/uloapi/html/PrintableIRI.java diff --git a/src/ulo-storage-applications/src/main/java/info/mathhub/uloapi/html/PrintableIRI.java b/src/ulo-storage-applications/src/main/java/info/mathhub/uloapi/html/PrintableIRI.java new file mode 100644 index 0000000..7ef356c --- /dev/null +++ b/src/ulo-storage-applications/src/main/java/info/mathhub/uloapi/html/PrintableIRI.java @@ -0,0 +1,59 @@ +package info.mathhub.uloapi.html; + +import org.eclipse.rdf4j.model.IRI; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * Wrapper around {@link IRI} that provides additional + * methods for use in Freemarker templates. + */ +public class PrintableIRI implements IRI { + private final IRI original; + + public PrintableIRI(IRI original) { + this.original = original; + } + + /** + * Convert a list of {@link IRI} to {@link PrintableIRI}. + */ + public static List<PrintableIRI> convert(List<IRI> originals) { + return originals.stream().map(PrintableIRI::new).collect(Collectors.toList()); + } + + @Override + public String toString() { + return this.original.toString(); + } + + @Override + public String getNamespace() { + return this.original.getNamespace(); + } + + @Override + public String getLocalName() { + return this.original.getLocalName(); + } + + @Override + public String stringValue() { + return this.original.stringValue(); + } + + @Override + public boolean equals(Object o) { + return this.original.equals(o); + } + + @Override + public int hashCode() { + return this.original.hashCode(); + } + + public String toBase64() { + return Base64.encode(this.toString()); + } +} diff --git a/src/ulo-storage-applications/src/main/java/info/mathhub/uloapi/html/Routes.java b/src/ulo-storage-applications/src/main/java/info/mathhub/uloapi/html/Routes.java index a4fa55f..9f1d9a6 100644 --- a/src/ulo-storage-applications/src/main/java/info/mathhub/uloapi/html/Routes.java +++ b/src/ulo-storage-applications/src/main/java/info/mathhub/uloapi/html/Routes.java @@ -67,7 +67,7 @@ public class Routes { final Query query = Query.getSingleton(); final String contributor = request.params("contributor"); - final List<IRI> contributions = query.getContributions(contributor); + final List<PrintableIRI> contributions = PrintableIRI.convert(query.getContributions(contributor)); final Map<String, Object> model = new HashMap<>(); model.put("contributor", contributor); @@ -82,7 +82,7 @@ public class Routes { final String base64uri = request.params("base64uri"); final String uri = Base64.decode(base64uri); - final List<IRI> uses = query.getUses(uri); + final List<PrintableIRI> uses = PrintableIRI.convert(query.getUses(uri)); final Map<String, Object> model = new HashMap<>(); model.put("uri", uri); diff --git a/src/ulo-storage-applications/src/main/resources/spark/template/freemarker/explore_contributor.flt b/src/ulo-storage-applications/src/main/resources/spark/template/freemarker/explore_contributor.flt index 8bb396b..1c0c2d7 100644 --- a/src/ulo-storage-applications/src/main/resources/spark/template/freemarker/explore_contributor.flt +++ b/src/ulo-storage-applications/src/main/resources/spark/template/freemarker/explore_contributor.flt @@ -16,7 +16,9 @@ <ul> <#list contributions as contribution> <li> - <code>${contribution}</code> + <a href="/explore/node/${contribution.toBase64()?url}"> + <code>${contribution}</code> + </a> </li> </#list> </ul> diff --git a/src/ulo-storage-applications/src/main/resources/spark/template/freemarker/explore_node.flt b/src/ulo-storage-applications/src/main/resources/spark/template/freemarker/explore_node.flt index 61beef2..7d2caae 100644 --- a/src/ulo-storage-applications/src/main/resources/spark/template/freemarker/explore_node.flt +++ b/src/ulo-storage-applications/src/main/resources/spark/template/freemarker/explore_node.flt @@ -24,7 +24,9 @@ <ul> <#list uses as use> <li> - <code>${use}</code> + <a href="/explore/node/${use.toBase64()?url}"> + <code>${use}</code> + </a> </li> </#list> </ul> -- GitLab