diff --git a/src/main/java/edu/tamu/iiif/service/AbstractManifestService.java b/src/main/java/edu/tamu/iiif/service/AbstractManifestService.java index 7add184..7bed4cf 100644 --- a/src/main/java/edu/tamu/iiif/service/AbstractManifestService.java +++ b/src/main/java/edu/tamu/iiif/service/AbstractManifestService.java @@ -132,9 +132,18 @@ public String getManifest(ManifestRequest request) throws IOException, URISyntax return manifest; } - protected RdfResource getRdfResource(String handle) throws NotFoundException { - String rdfUrl = getRdfUrl(handle); + protected RdfResource getRdfResourceByContextPath(String contextPath) throws NotFoundException { + String rdfUrl = getRdfUrl(contextPath); Model model = getRdfModel(rdfUrl); + return getRdfResource(model, rdfUrl); + } + + protected RdfResource getRdfResourceByUrl(String rdfUrl) throws NotFoundException { + Model model = getRdfModel(rdfUrl); + return getRdfResource(model, rdfUrl); + } + + private RdfResource getRdfResource(Model model, String rdfUrl) { // model.write(System.out, "JSON-LD"); // model.write(System.out, "RDF/XML"); return new RdfResource(model, model.getResource(rdfUrl)); @@ -147,7 +156,6 @@ protected Model getRdfModel(String url) throws NotFoundException { protected String getRdf(String url) throws NotFoundException { Optional rdf = Optional.ofNullable(httpService.get(url)); if (rdf.isPresent()) { - // System.out.println("\n\n\n\n" + url + "\n\n" + rdf.get() + "\n\n\n\n"); return rdf.get(); } throw new NotFoundException("RDF not found! " + url); diff --git a/src/main/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfCanvasManifestService.java b/src/main/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfCanvasManifestService.java index 09ce165..1b17f39 100644 --- a/src/main/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfCanvasManifestService.java +++ b/src/main/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfCanvasManifestService.java @@ -18,7 +18,7 @@ public class DSpaceRdfCanvasManifestService extends AbstractDSpaceRdfManifestSer public String generateManifest(ManifestRequest request) throws IOException, URISyntaxException { String context = request.getContext(); String handle = extractHandle(context); - RdfResource rdfResource = getRdfResource(handle); + RdfResource rdfResource = getRdfResourceByContextPath(handle); String url = rdfResource.getResource().getURI(); Canvas canvas = generateCanvas(request, new RdfResource(rdfResource, url.replace("rdf/handle", config.getWebapp() != null && config.getWebapp().length() > 0 ? config.getWebapp() + "/bitstream" : "bitstream").replaceAll(handle, context))); return mapper.writeValueAsString(canvas); diff --git a/src/main/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfCollectionManifestService.java b/src/main/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfCollectionManifestService.java index 7171c9d..da27aca 100644 --- a/src/main/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfCollectionManifestService.java +++ b/src/main/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfCollectionManifestService.java @@ -43,7 +43,7 @@ private Collection generateCollection(ManifestRequest request) throws URISyntaxE String parameterizedContext = RdfModelUtility.getParameterizedId(request); - RdfResource rdfResource = getRdfResource(context); + RdfResource rdfResource = getRdfResourceByContextPath(context); URI id = buildId(parameterizedContext); @@ -77,7 +77,7 @@ private List getResourceManifests(ManifestRequest request, Rd while (hasBitstreamIterator.hasNext()) { String hasBitstreamHandlePath = getHandlePath(hasBitstreamIterator.next().toString()); String parameterizedHasBitstreamHandlePath = RdfModelUtility.getParameterizedId(hasBitstreamHandlePath, request); - RdfResource hasBitstreamRdfResource = getRdfResource(hasBitstreamHandlePath); + RdfResource hasBitstreamRdfResource = getRdfResourceByContextPath(hasBitstreamHandlePath); manifests.add(new ManifestReferenceImpl(getDSpaceIiifPresentationUri(parameterizedHasBitstreamHandlePath), getLabel(hasBitstreamRdfResource))); } } else { @@ -85,7 +85,7 @@ private List getResourceManifests(ManifestRequest request, Rd while (hasItemIterator.hasNext()) { String hasItemHandle = getHandle(hasItemIterator.next().toString()); String parameterizedHasItemHandle = RdfModelUtility.getParameterizedId(hasItemHandle, request); - RdfResource hasItemRdfResource = getRdfResource(hasItemHandle); + RdfResource hasItemRdfResource = getRdfResourceByContextPath(hasItemHandle); manifests.add(new ManifestReferenceImpl(getDSpaceIiifPresentationUri(parameterizedHasItemHandle), getLabel(hasItemRdfResource))); } } @@ -116,7 +116,7 @@ private List getSubcommunities(RdfResource rdfResource, Lis NodeIterator subcommunityIterator = rdfResource.getAllNodesOfPropertyWithId(DSPACE_HAS_SUB_COMMUNITY_PREDICATE); while (subcommunityIterator.hasNext()) { String subcommunityHandle = getHandle(subcommunityIterator.next().toString()); - RdfResource subcommunityRdfResource = getRdfResource(subcommunityHandle); + RdfResource subcommunityRdfResource = getRdfResourceByContextPath(subcommunityHandle); collectionsToElide.addAll(getCollections(subcommunityRdfResource)); subcommunities.add(new CollectionReferenceImpl(getDSpaceIiifCollectionUri(subcommunityHandle), getLabel(subcommunityRdfResource))); } @@ -128,7 +128,7 @@ private List getCollections(RdfResource rdfResource) throws NodeIterator collectionIterator = rdfResource.getAllNodesOfPropertyWithId(DSPACE_HAS_COLLECTION_PREDICATE); while (collectionIterator.hasNext()) { String collectionHandle = getHandle(collectionIterator.next().toString()); - RdfResource collectionRdfResource = getRdfResource(collectionHandle); + RdfResource collectionRdfResource = getRdfResourceByContextPath(collectionHandle); collections.add(new CollectionReferenceImpl(getDSpaceIiifCollectionUri(collectionHandle), getLabel(collectionRdfResource))); } return collections; diff --git a/src/main/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfPresentationManifestService.java b/src/main/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfPresentationManifestService.java index edb22ed..fd001a9 100644 --- a/src/main/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfPresentationManifestService.java +++ b/src/main/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfPresentationManifestService.java @@ -35,7 +35,7 @@ public String generateManifest(ManifestRequest request) throws IOException, URIS String parameterizedContext = RdfModelUtility.getParameterizedId(request); - RdfResource rdfResource = getRdfResource(context); + RdfResource rdfResource = getRdfResourceByContextPath(context); URI id = buildId(parameterizedContext); @@ -116,7 +116,7 @@ private List getSequencesByPredicate(ManifestRequest request, RdfResou while (nodeIterator.hasNext()) { String uri = nodeIterator.next().toString(); String handle = getHandle(uri); - sequences.addAll(aggregateSequences(request, getRdfResource(handle))); + sequences.addAll(aggregateSequences(request, getRdfResourceByContextPath(handle))); } return sequences; } diff --git a/src/main/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfSequenceManifestService.java b/src/main/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfSequenceManifestService.java index 765d5d4..fd2a56c 100644 --- a/src/main/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfSequenceManifestService.java +++ b/src/main/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfSequenceManifestService.java @@ -17,7 +17,7 @@ public class DSpaceRdfSequenceManifestService extends AbstractDSpaceRdfManifestS public String generateManifest(ManifestRequest request) throws IOException, URISyntaxException { String context = request.getContext(); - RdfResource rdfResource = getRdfResource(context); + RdfResource rdfResource = getRdfResourceByContextPath(context); Sequence sequence = generateSequence(request, rdfResource); return mapper.writeValueAsString(sequence); } diff --git a/src/main/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmCanvasManifestService.java b/src/main/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmCanvasManifestService.java index f0e2e33..cb92c7d 100644 --- a/src/main/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmCanvasManifestService.java +++ b/src/main/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmCanvasManifestService.java @@ -17,7 +17,7 @@ public class FedoraPcdmCanvasManifestService extends AbstractFedoraPcdmManifestS public String generateManifest(ManifestRequest request) throws IOException, URISyntaxException { String context = request.getContext(); - RdfResource rdfResource = getRdfResource(context); + RdfResource rdfResource = getRdfResourceByContextPath(context); Canvas canvas = generateCanvas(request, rdfResource); return mapper.writeValueAsString(canvas); } diff --git a/src/main/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmCollectionManifestService.java b/src/main/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmCollectionManifestService.java index 4cad9b3..0cddb90 100644 --- a/src/main/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmCollectionManifestService.java +++ b/src/main/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmCollectionManifestService.java @@ -51,7 +51,7 @@ private Collection generateCollection(ManifestRequest request) throws URISyntaxE String parameterizedContext = RdfModelUtility.getParameterizedId(request); - RdfResource rdfResource = getRdfResource(context); + RdfResource rdfResource = getRdfResourceByContextPath(context); URI id = buildId(parameterizedContext); @@ -101,8 +101,7 @@ private List getResourceManifests(ManifestRequest request, Rd while (nodes.hasNext()) { RDFNode node = nodes.next(); String parameterizedId = RdfModelUtility.getParameterizedId(node.toString(), request); - PropertyValueSimpleImpl label = getLabel(new RdfResource(rdfResource, node.toString())); - manifests.add(new ManifestReferenceImpl(getFedoraIiifPresentationUri(parameterizedId), label)); + manifests.add(new ManifestReferenceImpl(getFedoraIiifPresentationUri(parameterizedId), getLabel(getRdfResourceByUrl(node.toString())))); } } if (manifests.isEmpty()) { @@ -110,8 +109,7 @@ private List getResourceManifests(ManifestRequest request, Rd while (resources.hasNext()) { Resource resource = resources.next(); String parameterizedId = RdfModelUtility.getParameterizedId(resource.getURI(), request); - PropertyValueSimpleImpl label = getLabel(new RdfResource(resource.getModel(), resource)); - manifests.add(new ManifestReferenceImpl(getFedoraIiifPresentationUri(parameterizedId), label)); + manifests.add(new ManifestReferenceImpl(getFedoraIiifPresentationUri(parameterizedId), getLabel(getRdfResourceByUrl(resource.getURI())))); } } return manifests; @@ -148,8 +146,7 @@ private void gatherResourceManifests(ManifestRequest request, RdfOrderedResource String parameterizedActualId = RdfModelUtility.getParameterizedId(id.get(), request); - PropertyValueSimpleImpl label = getLabel(rdfOrderedResource); - manifests.add(new ManifestReferenceImpl(getFedoraIiifPresentationUri(parameterizedActualId), label)); + manifests.add(new ManifestReferenceImpl(getFedoraIiifPresentationUri(parameterizedActualId), getLabel(getRdfResourceByUrl(id.get())))); Optional nextId = getObject(model, IANA_NEXT_PREDICATE); diff --git a/src/main/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmPresentationManifestService.java b/src/main/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmPresentationManifestService.java index 4ea9ac5..4682af3 100644 --- a/src/main/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmPresentationManifestService.java +++ b/src/main/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmPresentationManifestService.java @@ -31,7 +31,7 @@ public String generateManifest(ManifestRequest request) throws IOException, URIS String parameterizedContext = RdfModelUtility.getParameterizedId(request); - RdfResource rdfResource = getRdfResource(context); + RdfResource rdfResource = getRdfResourceByContextPath(context); URI id = buildId(parameterizedContext); diff --git a/src/main/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmSequenceManifestService.java b/src/main/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmSequenceManifestService.java index bfaec5b..d625d00 100644 --- a/src/main/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmSequenceManifestService.java +++ b/src/main/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmSequenceManifestService.java @@ -17,7 +17,7 @@ public class FedoraPcdmSequenceManifestService extends AbstractFedoraPcdmManifes public String generateManifest(ManifestRequest request) throws IOException, URISyntaxException { String context = request.getContext(); - RdfResource rdfResource = getRdfResource(context); + RdfResource rdfResource = getRdfResourceByContextPath(context); Sequence sequence = generateSequence(request, rdfResource); return mapper.writeValueAsString(sequence); } diff --git a/src/test/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmCollectionManifestServiceTest.java b/src/test/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmCollectionManifestServiceTest.java index ff424a6..beafd23 100644 --- a/src/test/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmCollectionManifestServiceTest.java +++ b/src/test/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmCollectionManifestServiceTest.java @@ -46,6 +46,7 @@ public void setup() { @Test public void testGetManifest() throws IOException, URISyntaxException { when(httpService.get(eq(FEDORA_URL + "/mwbObjects/TGWCatalog"))).thenReturn(readFileToString(collectionRdf.getFile(), "UTF-8")); + when(httpService.get(eq(FEDORA_URL + "/mwbObjects/TGWCatalog/Pages/ExCat0084"))).thenReturn(readFileToString(itemRdf.getFile(), "UTF-8")); when(httpService.get(eq(FEDORA_URL + "/mwbObjects/TGWCatalog/Pages/ExCat0084/fcr:metadata"))).thenReturn(readFileToString(itemRdf.getFile(), "UTF-8")); when(httpService.get(eq(FEDORA_URL + "/mwbObjects/TGWCatalog/Pages/ExCat0084/files/fcr:metadata"))).thenReturn(readFileToString(itemFilesRdf.getFile(), "UTF-8")); when(httpService.get(eq(FEDORA_URL + "/mwbObjects/TGWCatalog/Pages/ExCat0084/files/ExCat0084.jpg/fcr:metadata"))).thenReturn(readFileToString(itemFilesEntryRdf.getFile(), "UTF-8")); diff --git a/src/test/resources/mock/fedora/json/collection.json b/src/test/resources/mock/fedora/json/collection.json index 319e84b..f3c27f4 100644 --- a/src/test/resources/mock/fedora/json/collection.json +++ b/src/test/resources/mock/fedora/json/collection.json @@ -1,17 +1,7 @@ { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://localhost:9000/fedora-pcdm/collection/mwbObjects/TGWCatalog", - "@type": "sc:Collection", + "logo": "https://brandguide.tamu.edu/assets/downloads/logos/TAM-Logo.png", "description": "A page level collection of The Great War exhibit catalog. The assets are JPEGs created from TIFFs created when the catalog was digitized.", "label": "The Great War Exhibit Catalog", - "logo": "https://brandguide.tamu.edu/assets/downloads/logos/TAM-Logo.png", - "manifests": [ - { - "@id": "http://localhost:9000/fedora-pcdm/presentation/mwbObjects/TGWCatalog/Pages/ExCat0084", - "@type": "sc:Manifest", - "label": "The Great War Exhibit Catalog" - } - ], "metadata": [ { "label": "isPartOf", @@ -38,5 +28,15 @@ "value": "The Great War Exhibit Catalog" } ], - "viewingHint": "multi-part" + "manifests": [ + { + "label": "ExCat0084", + "@id": "http://localhost:9000/fedora-pcdm/presentation/mwbObjects/TGWCatalog/Pages/ExCat0084", + "@type": "sc:Manifest" + } + ], + "viewingHint": "multi-part", + "@type": "sc:Collection", + "@id": "http://localhost:9000/fedora-pcdm/collection/mwbObjects/TGWCatalog", + "@context": "http://iiif.io/api/presentation/2/context.json" } \ No newline at end of file