From eb639c17515defcc179a7ec0c94a56ec843ff9f0 Mon Sep 17 00:00:00 2001 From: William Welling Date: Thu, 29 Apr 2021 13:38:15 -0500 Subject: [PATCH 1/2] add page to image resource service and cleanup --- .../iiif/service/AbstractManifestService.java | 37 +++++++++---------- .../rdf/AbstractDSpaceRdfManifestService.java | 13 ++++++- .../rdf/DSpaceRdfImageManifestService.java | 2 +- .../pcdm/FedoraPcdmImageManifestService.java | 2 +- 4 files changed, 31 insertions(+), 23 deletions(-) diff --git a/src/main/java/edu/tamu/iiif/service/AbstractManifestService.java b/src/main/java/edu/tamu/iiif/service/AbstractManifestService.java index cf9032e..05d69cc 100644 --- a/src/main/java/edu/tamu/iiif/service/AbstractManifestService.java +++ b/src/main/java/edu/tamu/iiif/service/AbstractManifestService.java @@ -182,7 +182,7 @@ protected OptionalImageWithInfo generateImage(ManifestRequest request, RdfResour String url = rdfResource.getResource().getURI(); OptionalImageResourceWithInfo imageResource = generateImageResource(request, rdfResource, page); if (imageResource.isPresent()) { - Image image = new ImageImpl(getImageInfoUri(url, page)); + Image image = new ImageImpl(getImageInfoUri(url)); image.setResource(imageResource.get()); image.setOn(getCanvasUri(canvasId)); return OptionalImageWithInfo.of(Optional.of(image), imageResource.getImageResourceInfo()); @@ -199,12 +199,12 @@ protected OptionalImageResourceWithInfo generateImageResource(ManifestRequest re if (include) { logger.info("Including: " + url); - URI infoUri = getImageInfoUri(url, 0); + URI infoUri = getImageInfoUri(url); Optional imageInfoNode = getImageInfo(infoUri.toString()); if (imageInfoNode.isPresent()) { - ImageResource imageResource = new ImageResourceImpl(getImageFullUri(url, page)); + ImageResource imageResource = new ImageResourceImpl(getImageFullUri(url)); imageResource.setFormat(optionalMimeType.get()); @@ -212,7 +212,7 @@ protected OptionalImageResourceWithInfo generateImageResource(ManifestRequest re imageResource.setWidth(imageInfoNode.get().get(WIDTH).asInt()); - imageResource.setServices(getServices(rdfResource, page, getIiifImageServiceName())); + imageResource.setServices(getServices(rdfResource, getIiifImageServiceName())); return OptionalImageResourceWithInfo.of(Optional.of(imageResource), imageInfoNode); } else { @@ -274,30 +274,30 @@ protected String fetchImageInfo(String url) throws NotFoundException { throw new NotFoundException("Image information not found!"); } - protected URI getImageUri(String url, int page) throws URISyntaxException { - return URI.create(joinPath(imageServerUrl, getResourceId(url, page))); + protected URI getImageUri(String url) throws URISyntaxException { + return URI.create(joinPath(imageServerUrl, getResourceId(url))); } - protected URI getImageFullUri(String url, int page) throws URISyntaxException { - return URI.create(joinPath(imageServerUrl, getResourceId(url, page), IIIF_FULL_PATH)); + protected URI getImageFullUri(String url) throws URISyntaxException { + return URI.create(joinPath(imageServerUrl, getResourceId(url), IIIF_FULL_PATH)); } - protected URI getImageThumbnailUrl(String url, int page) throws URISyntaxException { - return URI.create(joinPath(imageServerUrl, getResourceId(url, page), IIIF_THUMBNAIL_PATH)); + protected URI getImageThumbnailUrl(String url) throws URISyntaxException { + return URI.create(joinPath(imageServerUrl, getResourceId(url), IIIF_THUMBNAIL_PATH)); } - protected URI getImageInfoUri(String url, int page) throws URISyntaxException { - return URI.create(joinPath(imageServerUrl, getResourceId(url, page), IMAGE_JSON)); + protected URI getImageInfoUri(String url) throws URISyntaxException { + return URI.create(joinPath(imageServerUrl, getResourceId(url), IMAGE_JSON)); } protected URI serviceUrlToThumbnailUri(URI serviceUrl) throws URISyntaxException { return URI.create(joinPath(serviceUrl.toString(), IIIF_THUMBNAIL_PATH)); } - protected List getServices(RdfResource rdfResource, int page, String... names) throws URISyntaxException { + protected List getServices(RdfResource rdfResource, String... names) throws URISyntaxException { List services = new ArrayList(); for (String name : names) { - services.add(getService(rdfResource, name, page)); + services.add(getService(rdfResource, name)); } return services; } @@ -320,16 +320,13 @@ protected Optional getThumbnail(List sequences) throws URIS return optionalThumbnail; } - private String getResourceId(String url, int page) throws URISyntaxException { + private String getResourceId(String url) throws URISyntaxException { String id; try { id = resourceResolver.lookup(url); } catch (NotFoundException e) { id = resourceResolver.create(url); } - if (page > 0) { - id += ";" + page; - } return id; } @@ -392,8 +389,8 @@ protected List getMetadata(RdfResource rdfResource) { protected abstract AbstractIiifConfig getConfig(); - private Service getService(RdfResource rdfResource, String name, int page) throws URISyntaxException { - Service service = new ServiceImpl(getImageUri(rdfResource.getResource().getURI(), page)); + private Service getService(RdfResource rdfResource, String name) throws URISyntaxException { + Service service = new ServiceImpl(getImageUri(rdfResource.getResource().getURI())); service.setLabel(new PropertyValueSimpleImpl(name)); service.setContext(IIIF_IMAGE_API_CONTEXT); service.setProfile(IIIF_IMAGE_API_LEVEL_ZERO_PROFILE); diff --git a/src/main/java/edu/tamu/iiif/service/dspace/rdf/AbstractDSpaceRdfManifestService.java b/src/main/java/edu/tamu/iiif/service/dspace/rdf/AbstractDSpaceRdfManifestService.java index 206bb87..35148b7 100644 --- a/src/main/java/edu/tamu/iiif/service/dspace/rdf/AbstractDSpaceRdfManifestService.java +++ b/src/main/java/edu/tamu/iiif/service/dspace/rdf/AbstractDSpaceRdfManifestService.java @@ -34,11 +34,13 @@ import de.digitalcollections.iiif.presentation.model.api.v2.ImageResource; import de.digitalcollections.iiif.presentation.model.api.v2.PropertyValue; import de.digitalcollections.iiif.presentation.model.api.v2.Sequence; +import de.digitalcollections.iiif.presentation.model.api.v2.Service; import de.digitalcollections.iiif.presentation.model.impl.v2.CanvasImpl; import de.digitalcollections.iiif.presentation.model.impl.v2.ImageImpl; import de.digitalcollections.iiif.presentation.model.impl.v2.ImageResourceImpl; import de.digitalcollections.iiif.presentation.model.impl.v2.PropertyValueSimpleImpl; import de.digitalcollections.iiif.presentation.model.impl.v2.SequenceImpl; +import de.digitalcollections.iiif.presentation.model.impl.v2.ServiceImpl; import edu.tamu.iiif.config.model.AbstractIiifConfig; import edu.tamu.iiif.config.model.DSpaceRdfIiifConfig; import edu.tamu.iiif.controller.ManifestRequest; @@ -213,7 +215,16 @@ private Canvas getCanvasPage(Canvas canvas, int page) { imageResource.setFormat(ir.getFormat()); imageResource.setHeight(ir.getHeight()); imageResource.setWidth(ir.getWidth()); - imageResource.setServices(ir.getServices()); + List services = ir.getServices().stream().map(s -> { + + Service service = new ServiceImpl(s.getId().toString() + ";" + page); + service.setLabel(s.getLabel()); + service.setContext(s.getContext()); + service.setProfile(s.getProfile()); + + return service; + }).collect(Collectors.toList()); + imageResource.setServices(services); image.setResource(imageResource); image.setOn(i.getOn()); return image; diff --git a/src/main/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfImageManifestService.java b/src/main/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfImageManifestService.java index cd9626f..24884e8 100644 --- a/src/main/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfImageManifestService.java +++ b/src/main/java/edu/tamu/iiif/service/dspace/rdf/DSpaceRdfImageManifestService.java @@ -18,7 +18,7 @@ public class DSpaceRdfImageManifestService extends AbstractDSpaceRdfManifestServ public String generateManifest(ManifestRequest request) throws IOException, URISyntaxException { String context = request.getContext(); String dspacePath = config.getWebapp() != null && config.getWebapp().length() > 0 ? joinPath(config.getUrl(), config.getWebapp(), "bitstream", context) : joinPath(config.getUrl(), "bitstream", context); - URI uri = getImageUri(dspacePath, 0); + URI uri = getImageUri(dspacePath); return fetchImageInfo(uri.toString()); } diff --git a/src/main/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmImageManifestService.java b/src/main/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmImageManifestService.java index 071919a..0b411fa 100644 --- a/src/main/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmImageManifestService.java +++ b/src/main/java/edu/tamu/iiif/service/fedora/pcdm/FedoraPcdmImageManifestService.java @@ -18,7 +18,7 @@ public class FedoraPcdmImageManifestService extends AbstractFedoraPcdmManifestSe public String generateManifest(ManifestRequest request) throws IOException, URISyntaxException { String context = request.getContext(); String fedoraPath = joinPath(config.getUrl(), context); - URI uri = getImageUri(fedoraPath, 0); + URI uri = getImageUri(fedoraPath); return fetchImageInfo(uri.toString()); } From 17a9aad556eb133159e066d4302f296ab58314a8 Mon Sep 17 00:00:00 2001 From: William Welling Date: Thu, 29 Apr 2021 13:47:02 -0500 Subject: [PATCH 2/2] remove extra newlines --- .../service/dspace/rdf/AbstractDSpaceRdfManifestService.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/edu/tamu/iiif/service/dspace/rdf/AbstractDSpaceRdfManifestService.java b/src/main/java/edu/tamu/iiif/service/dspace/rdf/AbstractDSpaceRdfManifestService.java index 35148b7..c4db8d5 100644 --- a/src/main/java/edu/tamu/iiif/service/dspace/rdf/AbstractDSpaceRdfManifestService.java +++ b/src/main/java/edu/tamu/iiif/service/dspace/rdf/AbstractDSpaceRdfManifestService.java @@ -216,12 +216,10 @@ private Canvas getCanvasPage(Canvas canvas, int page) { imageResource.setHeight(ir.getHeight()); imageResource.setWidth(ir.getWidth()); List services = ir.getServices().stream().map(s -> { - Service service = new ServiceImpl(s.getId().toString() + ";" + page); service.setLabel(s.getLabel()); service.setContext(s.getContext()); service.setProfile(s.getProfile()); - return service; }).collect(Collectors.toList()); imageResource.setServices(services);