Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,9 @@
<properties>
<!-- Docker image dependencies -->
<ubuntu.tag>22.04</ubuntu.tag>
<jdk.version>21.0.11+10-1~22.04.2</jdk.version>
<jdk.version>21.0.12+8-1~22.04</jdk.version>
<python3.version>3.10.6-1~22.04.1</python3.version>
<curl.version>7.81.0-1ubuntu1.25</curl.version>
<curl.version>7.81.0-1ubuntu1.27</curl.version>

<!-- Application dependencies -->
<vertx.version>3.9.16</vertx.version>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -491,12 +491,14 @@ private Canvas[] createCanvases(final CsvHeaders aCsvHeaders, final List<String[
final Optional<String> thumbnail = CsvParser.getMetadata(columns, aCsvHeaders.getThumbnailIndex());

boolean staticImage = false;
String resourceURI;
ImageResource imageResource;
ImageContent imageContent;
Canvas canvas;

resourceURI = StringUtils.format(Constants.SAMPLE_URI_TEMPLATE, pageURI, Constants.DEFAULT_SAMPLE_SIZE);
final String serviceURI = accessURI == null ? pageURI : accessURI;
final String resourceURI = accessURI == null
? StringUtils.format(Constants.SAMPLE_URI_TEMPLATE, pageURI, Constants.DEFAULT_SAMPLE_SIZE)
: StringUtils.format(Constants.SAMPLE_URI_TEMPLATE, accessURI, Constants.DEFAULT_SAMPLE_SIZE);

try {
final Optional<String> width = CsvParser.getMetadata(columns, aCsvHeaders.getMediaWidthIndex());
Expand All @@ -515,30 +517,30 @@ private Canvas[] createCanvases(final CsvHeaders aCsvHeaders, final List<String[
imageResource.setHeight(mediaHeight);

// Does the URI have a file extension?
if (!isStaticFile(accessURI)) {
imageResource.setService(new ImageInfoService(APIComplianceLevel.TWO, pageURI));
if (!isStaticFile(serviceURI)) {
imageResource.setService(new ImageInfoService(APIComplianceLevel.TWO, serviceURI));
} else {
staticImage = true;
}
} else {
// If we don't have both width and height in the CSV, we can also try to look it up
final ImageInfoLookup infoLookup = new ImageInfoLookup(pageURI);
final ImageInfoLookup infoLookup = new ImageInfoLookup(serviceURI);

mediaWidth = infoLookup.getWidth();
mediaHeight = infoLookup.getHeight();

imageResource = new ImageResource(resourceURI);
imageResource.setService(new ImageInfoService(APIComplianceLevel.TWO, pageURI));
imageResource.setService(new ImageInfoService(APIComplianceLevel.TWO, serviceURI));
}
} catch (final NumberFormatException details) {
// If we don't have a valid information w/h in the CSV, we can also try to look it up
final ImageInfoLookup infoLookup = new ImageInfoLookup(pageURI);
final ImageInfoLookup infoLookup = new ImageInfoLookup(serviceURI);

mediaWidth = infoLookup.getWidth();
mediaHeight = infoLookup.getHeight();

imageResource = new ImageResource(resourceURI);
imageResource.setService(new ImageInfoService(APIComplianceLevel.TWO, pageURI));
imageResource.setService(new ImageInfoService(APIComplianceLevel.TWO, serviceURI));
}

// Create a canvas using the width and height of the related image
Expand All @@ -552,7 +554,7 @@ private Canvas[] createCanvases(final CsvHeaders aCsvHeaders, final List<String[
canvas.setThumbnail(thumbnail.get());
} else if (staticImage) {
// Fallback to using the original image as thumbnail and let browser resize
canvas.setThumbnail(accessURI);
canvas.setThumbnail(serviceURI);
}
} catch (final ImageNotFoundException | IOException details) {
LOGGER.info(MessageCodes.MFS_078, pageID);
Expand All @@ -571,8 +573,8 @@ private Canvas[] createCanvases(final CsvHeaders aCsvHeaders, final List<String[
}

// If placeholder image found, use its URL for image resource and service
resourceURI = StringUtils.format(Constants.SAMPLE_URI_TEMPLATE, aPlaceholderImage, size);
imageResource = new ImageResource(resourceURI,
imageResource = new ImageResource(
StringUtils.format(Constants.SAMPLE_URI_TEMPLATE, aPlaceholderImage, size),
new ImageInfoService(APIComplianceLevel.TWO, aPlaceholderImage));

// Create a canvas using the width and height of the placeholder image
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -490,27 +490,32 @@ private Canvas[] createCanvases(final CsvHeaders aCsvHeaders, final List<String[

while (iterator.hasNext()) {
final String[] columns = iterator.next();
final String pageID = columns[aCsvHeaders.getItemArkIndex()]; // Get the Item ARK
final Label pageLabel = new Label(columns[aCsvHeaders.getTitleIndex()]);
final Optional<String> format = CsvParser.getMetadata(columns, aCsvHeaders.getMediaFormatIndex());

final String imageThumbnailSize = StringUtils.trimTo(
config().getString(Config.DEFAULT_IMAGE_THUMBNAIL_SIZE), Constants.DEFAULT_IMAGE_THUMBNAIL_SIZE);
final String encodedPageID = URLEncoder.encode(pageID, StandardCharsets.UTF_8); // Encode Item ARK
final Optional<String> thumbnailOpt = CsvParser.getMetadata(columns, aCsvHeaders.getThumbnailIndex());
final Canvas canvas = new Canvas(aMinter, pageLabel);

final String pageID = StringUtils.trimToNull(columns[aCsvHeaders.getItemArkIndex()]); // Never null
final String pageURI = StringUtils.format(SIMPLE_URI, aImageHost, URLEncoder.encode(pageID, UTF_8));
final String accessURI = StringUtils.trimToNull(columns[aCsvHeaders.getContentAccessUrlIndex()]);

final String serviceURI = accessURI == null ? pageURI : accessURI;
final String resourceURI = accessURI == null
? StringUtils.format(Constants.SAMPLE_URI_TEMPLATE, pageURI, Constants.DEFAULT_SAMPLE_SIZE)
: StringUtils.format(Constants.SAMPLE_URI_TEMPLATE, accessURI, Constants.DEFAULT_SAMPLE_SIZE);

final String thumbnail;
final String pageURI;
final float duration;

int width;
int height;

// We've already validated the MIME type in CsvParser, so it's fine to just check for a substring here
if (format.isPresent() && format.get().contains("video/")) {
final String resourceURI = CsvParser.getMetadata(columns, aCsvHeaders.getContentAccessUrlIndex()).get();
final VideoContent[] videos = getVideoContent(resourceURI);
final VideoContent[] videos = getVideoContent(accessURI);

if (thumbnailOpt.isPresent()) {
thumbnail = thumbnailOpt.get();
Expand All @@ -527,8 +532,7 @@ private Canvas[] createCanvases(final CsvHeaders aCsvHeaders, final List<String[
canvas.setWidthHeight(width, height).setDuration(duration).setThumbnails(new ImageContent(thumbnail));
canvas.paintWith(true, videos);
} else if (format.isPresent() && format.get().contains("audio/")) {
final String resourceURI = CsvParser.getMetadata(columns, aCsvHeaders.getContentAccessUrlIndex()).get();
final SoundContent[] audios = getSoundContent(resourceURI);
final SoundContent[] audios = getSoundContent(accessURI);

if (thumbnailOpt.isPresent()) {
thumbnail = thumbnailOpt.get();
Expand All @@ -553,18 +557,13 @@ private Canvas[] createCanvases(final CsvHeaders aCsvHeaders, final List<String[
anno.setSeeAlsoRefs(waveform);
});
} else {
final String accessURI = StringUtils.trimToNull(columns[aCsvHeaders.getContentAccessUrlIndex()]);

String resourceURI;
ImageContent image;

pageURI = StringUtils.format(SIMPLE_URI, aImageHost, encodedPageID); // Get page URI from encoded ID
resourceURI = StringUtils.format(Constants.SAMPLE_URI_TEMPLATE, pageURI, Constants.DEFAULT_SAMPLE_SIZE);

if (thumbnailOpt.isPresent()) {
thumbnail = thumbnailOpt.get();
} else {
thumbnail = StringUtils.format(Constants.IIIF_THUMBNAIL_URI_TEMPLATE, pageURI, imageThumbnailSize);
thumbnail =
StringUtils.format(Constants.IIIF_THUMBNAIL_URI_TEMPLATE, serviceURI, imageThumbnailSize);
}

// Try to look up the w/h but on failure, fall back to a placeholder image
Expand All @@ -580,15 +579,15 @@ private Canvas[] createCanvases(final CsvHeaders aCsvHeaders, final List<String[
image = new ImageContent(resourceURI);

// Does the URI have a file extension?
if (!isStaticFile(accessURI)) {
image.setServices(new ImageService2(pageURI));
if (!isStaticFile(serviceURI)) {
image.setServices(new ImageService2(serviceURI));
}
} else {
final ImageInfoLookup infoLookup = new ImageInfoLookup(pageURI); // Look up w/h for page URI
final ImageInfoLookup infoLookup = new ImageInfoLookup(accessURI); // Look up w/h for page URI

width = infoLookup.getWidth();
height = infoLookup.getHeight();
image = new ImageContent(resourceURI).setServices(new ImageService2(pageURI));
image = new ImageContent(resourceURI).setServices(new ImageService2(serviceURI));
}

image.setWidthHeight(width, height);
Expand All @@ -612,8 +611,9 @@ private Canvas[] createCanvases(final CsvHeaders aCsvHeaders, final List<String[
}

// If placeholder image found, use its URL for image resource and service
resourceURI = StringUtils.format(Constants.SAMPLE_URI_TEMPLATE, aPlaceholderImage, size);
image = new ImageContent(resourceURI).setServices(new ImageService2(aPlaceholderImage));
image = new ImageContent(
StringUtils.format(Constants.SAMPLE_URI_TEMPLATE, aPlaceholderImage, size))
.setServices(new ImageService2(aPlaceholderImage));

// Create a canvas using the width and height of the placeholder image
canvas.setWidthHeight(width, height).setThumbnails(new ImageContent(thumbnail));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -910,6 +910,7 @@ public final void testIiifObjectTypeV3(final TestContext aContext) {
} else {
aContext.fail(LOGGER.getMessage(MessageCodes.MFS_154, ALL_IN_ONE_CSV));
}

TestUtils.complete(asyncTask);
} else {
aContext.fail(LOGGER.getMessage(MessageCodes.MFS_039, statusCode, statusMessage));
Expand Down
Loading
Loading