mirror of
https://github.com/ilri/cgspace-java-helpers.git
synced 2025-05-11 07:36:05 +02:00
Compare commits
8 Commits
Author | SHA1 | Date | |
---|---|---|---|
fce81c6003
|
|||
26d3cbd778
|
|||
fdc910f93b
|
|||
e0d514e797
|
|||
fd893d8c4e
|
|||
2263ac27e8
|
|||
cf7012d698
|
|||
7edc60e6ca
|
@ -1,4 +1,4 @@
|
||||
# CGSpace Java Helpers [](https://travis-ci.org/ilri/dspace-curation-tasks)
|
||||
# CGSpace Java Helpers [](https://travis-ci.org/ilri/dspace-curation-tasks)
|
||||
DSpace curation tasks and other Java-based helpers used on the [CGSpace](https://cgspace.cgiar.org) institutional repository:
|
||||
|
||||
- **CountryCodeTagger**: add ISO 3166-1 Alpha2 country codes to items based on their existing country metadata
|
||||
@ -15,7 +15,7 @@ To use these curation tasks in a DSpace project add the following dependency to
|
||||
<dependency>
|
||||
<groupId>io.github.ilri.cgspace</groupId>
|
||||
<artifactId>cgspace-java-helpers</artifactId>
|
||||
<version>5.1</version>
|
||||
<version>5.3</version>
|
||||
</dependency>
|
||||
```
|
||||
|
||||
@ -31,7 +31,7 @@ $ mvn package
|
||||
Copy the resulting jar to the DSpace `lib` directory:
|
||||
|
||||
```
|
||||
$ cp target/cgspace-java-helpers-5.1.jar ~/dspace/lib
|
||||
$ cp target/cgspace-java-helpers-5.3.jar ~/dspace/lib
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
2
pom.xml
2
pom.xml
@ -6,7 +6,7 @@
|
||||
|
||||
<groupId>io.github.ilri.cgspace</groupId>
|
||||
<artifactId>cgspace-java-helpers</artifactId>
|
||||
<version>5.1</version>
|
||||
<version>5.3</version>
|
||||
|
||||
<name>cgspace-java-helpers</name>
|
||||
<url>https://github.com/ilri/cgspace-java-helpers</url>
|
||||
|
@ -13,8 +13,8 @@ import java.sql.SQLException;
|
||||
/**
|
||||
* @author Andrea Schweer schweer@waikato.ac.nz for the LCoNZ Institutional Research Repositories
|
||||
* @author Alan Orth for the International Livestock Research Institute
|
||||
* @version 5.1-SNAPSHOT
|
||||
* @since 5.1-SNAPSHOT
|
||||
* @version 5.3
|
||||
* @since 5.1
|
||||
*/
|
||||
public class FixJpgJpgThumbnails {
|
||||
|
||||
@ -73,22 +73,46 @@ public class FixJpgJpgThumbnails {
|
||||
}
|
||||
|
||||
private static void processItem(Item item) throws SQLException, AuthorizeException, IOException {
|
||||
// Some bitstreams like Infographics are large JPGs and put in the ORIGINAL bundle on purpose so we shouldn't
|
||||
// swap them.
|
||||
Metadatum[] itemTypes = item.getMetadataByMetadataString("dc.type");
|
||||
Boolean itemHasInfographic = false;
|
||||
for (Metadatum itemType: itemTypes) {
|
||||
if (itemType.value.equals("Infographic")) {
|
||||
itemHasInfographic = true;
|
||||
}
|
||||
}
|
||||
|
||||
Bundle[] thumbnailBundles = item.getBundles("THUMBNAIL");
|
||||
for (Bundle thumbnailBundle : thumbnailBundles) {
|
||||
Bitstream[] thumbnailBundleBitstreams = thumbnailBundle.getBitstreams();
|
||||
for (Bitstream thumbnailBitstream : thumbnailBundleBitstreams) {
|
||||
String thumbnailName = thumbnailBitstream.getName();
|
||||
|
||||
if (thumbnailName.contains(".jpg.jpg")) {
|
||||
if (thumbnailName.toLowerCase().contains(".jpg.jpg")) {
|
||||
Bundle[] originalBundles = item.getBundles("ORIGINAL");
|
||||
for (Bundle originalBundle : originalBundles) {
|
||||
Bitstream[] originalBundleBitstreams = originalBundle.getBitstreams();
|
||||
|
||||
for(Bitstream originalBitstream : originalBundleBitstreams) {
|
||||
for (Bitstream originalBitstream : originalBundleBitstreams) {
|
||||
String originalName = originalBitstream.getName();
|
||||
|
||||
//check if the original file name is the same as the thumbnail name minus the extra ".jpg"
|
||||
if (originalName.equals(StringUtils.removeEndIgnoreCase(thumbnailName, ".jpg")) && "Generated Thumbnail".equals(thumbnailBitstream.getDescription())) {
|
||||
Long originalBitstreamBytes = originalBitstream.getSize();
|
||||
|
||||
/*
|
||||
- check if the original file name is the same as the thumbnail name minus the extra ".jpg"
|
||||
- check if the thumbnail description indicates it was automatically generated
|
||||
- check if the item has dc.type Infographic (JPG could be the "real" item!)
|
||||
- check if the original bitstream is less than ~100KiB
|
||||
- Note: in my tests there were 4022 items with ".jpg.jpg" thumbnails totaling 394549249
|
||||
bytes for an average of about 98KiB so ~100KiB seems like a good cut off
|
||||
*/
|
||||
if (
|
||||
originalName.equalsIgnoreCase(StringUtils.removeEndIgnoreCase(thumbnailName, ".jpg"))
|
||||
&& ("Generated Thumbnail".equals(thumbnailBitstream.getDescription()) || "IM Thumbnail".equals(thumbnailBitstream.getDescription()))
|
||||
&& !itemHasInfographic
|
||||
&& originalBitstreamBytes < 100000
|
||||
) {
|
||||
System.out.println(item.getHandle() + ": replacing " + thumbnailName + " with " + originalName);
|
||||
|
||||
//add the original bitstream to the THUMBNAIL bundle
|
||||
|
Reference in New Issue
Block a user