mirror of
https://github.com/ilri/cgspace-java-helpers.git
synced 2025-05-12 16:16:08 +02:00
Compare commits
10 Commits
2be5c62d92
...
v5.1
Author | SHA1 | Date | |
---|---|---|---|
fe2abc86c6
|
|||
e1d92ef2c7
|
|||
3e3c544cfa
|
|||
db9881faf6
|
|||
fa5fb60b5b
|
|||
44fb9a9f4d
|
|||
b790d5e4db
|
|||
08e7546a87
|
|||
ff076ecf50
|
|||
7a5dd1c094
|
15
README.md
15
README.md
@ -1,7 +1,8 @@
|
|||||||
# DSpace Curation Tasks [](https://travis-ci.org/ilri/dspace-curation-tasks)
|
# CGSpace Java Helpers [](https://travis-ci.org/ilri/dspace-curation-tasks)
|
||||||
Metadata curation tasks used on the [CGSpace](https://cgspace.cgiar.org) institutional repository:
|
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
|
- **CountryCodeTagger**: add ISO 3166-1 Alpha2 country codes to items based on their existing country metadata
|
||||||
|
- **FixJpgJpgThumbnails**: Fix low-quality ".jpg.jpg" thumbnails by replacing them with their originals
|
||||||
|
|
||||||
Tested on DSpace 5.8. Read more about the [DSpace curation system](https://wiki.lyrasis.org/display/DSDOC5x/Curation+System).
|
Tested on DSpace 5.8. Read more about the [DSpace curation system](https://wiki.lyrasis.org/display/DSDOC5x/Curation+System).
|
||||||
|
|
||||||
@ -13,8 +14,8 @@ To use these curation tasks in a DSpace project add the following dependency to
|
|||||||
```
|
```
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.github.ilri.cgspace</groupId>
|
<groupId>io.github.ilri.cgspace</groupId>
|
||||||
<artifactId>dspace-curation-tasks</artifactId>
|
<artifactId>cgspace-java-helpers</artifactId>
|
||||||
<version>1.0-SNAPSHOT</version>
|
<version>5.1</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -30,7 +31,7 @@ $ mvn package
|
|||||||
Copy the resulting jar to the DSpace `lib` directory:
|
Copy the resulting jar to the DSpace `lib` directory:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ cp target/dspace-curation-tasks-1.0-SNAPSHOT.jar ~/dspace/lib/dspace-curation-tasks-1.0-SNAPSHOT.jar
|
$ cp target/cgspace-java-helpers-5.1.jar ~/dspace/lib
|
||||||
```
|
```
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
@ -71,14 +72,12 @@ $ ~/dspace/bin/dspace curate -t countrycodetagger -i 10568/3 -r - -l 500 -s obje
|
|||||||
This project was initially created according to the [Maven Getting Started Guide](https://maven.apache.org/guides/getting-started/):
|
This project was initially created according to the [Maven Getting Started Guide](https://maven.apache.org/guides/getting-started/):
|
||||||
|
|
||||||
```console
|
```console
|
||||||
$ mvn -B archetype:generate -DgroupId=io.github.ilri.cgspace -DartifactId=dspace-curation-tasks -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4
|
$ mvn -B archetype:generate -DgroupId=io.github.ilri.cgspace -DartifactId=cgspace-java-helpers -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4
|
||||||
```
|
```
|
||||||
|
|
||||||
## TODO
|
## TODO
|
||||||
|
|
||||||
- Make sure this doesn't work on items in the workflow
|
- Make sure this doesn't work on items in the workflow
|
||||||
- Port to DSpace 6
|
|
||||||
- Remember to bump Gson version!
|
|
||||||
- Check for existence of metadata field before trying to add metadata
|
- Check for existence of metadata field before trying to add metadata
|
||||||
- Add tests
|
- Add tests
|
||||||
|
|
||||||
|
14
pom.xml
14
pom.xml
@ -5,11 +5,11 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
<groupId>io.github.ilri.cgspace</groupId>
|
<groupId>io.github.ilri.cgspace</groupId>
|
||||||
<artifactId>dspace-curation-tasks</artifactId>
|
<artifactId>cgspace-java-helpers</artifactId>
|
||||||
<version>1.0-SNAPSHOT</version>
|
<version>5.1</version>
|
||||||
|
|
||||||
<name>dspace-curation-tasks</name>
|
<name>cgspace-java-helpers</name>
|
||||||
<url>https://github.com/ilri/dspace-curation-tasks</url>
|
<url>https://github.com/ilri/cgspace-java-helpers</url>
|
||||||
|
|
||||||
<licenses>
|
<licenses>
|
||||||
<license>
|
<license>
|
||||||
@ -53,9 +53,9 @@
|
|||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<scm>
|
<scm>
|
||||||
<connection>scm:git:git://github.com/ilri/dspace-curation-tasks.git</connection>
|
<connection>scm:git:git://github.com/ilri/cgspace-java-helpers.git</connection>
|
||||||
<developerConnection>scm:git:ssh://github.com:nanosai/dspace-curation-tasks.git</developerConnection>
|
<developerConnection>scm:git:ssh://github.com:nanosai/cgspace-java-helpers.git</developerConnection>
|
||||||
<url>http://github.com/ilri/dspace-curation-tasks</url>
|
<url>http://github.com/ilri/cgspace-java-helpers</url>
|
||||||
</scm>
|
</scm>
|
||||||
|
|
||||||
<distributionManagement>
|
<distributionManagement>
|
||||||
|
@ -0,0 +1,107 @@
|
|||||||
|
package io.github.ilri.cgspace.scripts;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
import org.dspace.authorize.AuthorizeException;
|
||||||
|
import org.dspace.content.*;
|
||||||
|
import org.dspace.core.Constants;
|
||||||
|
import org.dspace.core.Context;
|
||||||
|
import org.dspace.handle.HandleManager;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
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
|
||||||
|
*/
|
||||||
|
public class FixJpgJpgThumbnails {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
String parentHandle = null;
|
||||||
|
if (args.length >= 1) {
|
||||||
|
parentHandle = args[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
Context context = null;
|
||||||
|
try {
|
||||||
|
context = new Context();
|
||||||
|
context.turnOffAuthorisationSystem();
|
||||||
|
|
||||||
|
if (StringUtils.isBlank(parentHandle)) {
|
||||||
|
process(context, Item.findAll(context));
|
||||||
|
} else {
|
||||||
|
DSpaceObject parent = HandleManager.resolveToObject(context, parentHandle);
|
||||||
|
if (parent != null) {
|
||||||
|
switch (parent.getType()) {
|
||||||
|
case Constants.COLLECTION:
|
||||||
|
process(context, ((Collection) parent).getAllItems()); // getAllItems because we want to work on non-archived ones as well
|
||||||
|
break;
|
||||||
|
case Constants.COMMUNITY:
|
||||||
|
Collection[] collections = ((Community) parent).getCollections();
|
||||||
|
for (Collection collection : collections) {
|
||||||
|
process(context, collection.getAllItems()); // getAllItems because we want to work on non-archived ones as well
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case Constants.SITE:
|
||||||
|
process(context, Item.findAll(context));
|
||||||
|
break;
|
||||||
|
case Constants.ITEM:
|
||||||
|
processItem((Item) parent);
|
||||||
|
context.commit();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (SQLException | AuthorizeException | IOException e) {
|
||||||
|
e.printStackTrace(System.err);
|
||||||
|
} finally {
|
||||||
|
if (context != null && context.isValid()) {
|
||||||
|
context.abort();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void process(Context context, ItemIterator items) throws SQLException, IOException, AuthorizeException {
|
||||||
|
while (items.hasNext()) {
|
||||||
|
Item item = items.next();
|
||||||
|
processItem(item);
|
||||||
|
context.commit();
|
||||||
|
item.decache();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void processItem(Item item) throws SQLException, AuthorizeException, IOException {
|
||||||
|
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")) {
|
||||||
|
Bundle[] originalBundles = item.getBundles("ORIGINAL");
|
||||||
|
for (Bundle originalBundle : originalBundles) {
|
||||||
|
Bitstream[] originalBundleBitstreams = originalBundle.getBitstreams();
|
||||||
|
|
||||||
|
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())) {
|
||||||
|
System.out.println(item.getHandle() + ": replacing " + thumbnailName + " with " + originalName);
|
||||||
|
|
||||||
|
//add the original bitstream to the THUMBNAIL bundle
|
||||||
|
thumbnailBundle.addBitstream(originalBitstream);
|
||||||
|
//remove the original bitstream from the ORIGINAL bundle
|
||||||
|
originalBundle.removeBitstream(originalBitstream);
|
||||||
|
//remove the JpgJpg bitstream from the THUMBNAIL bundle
|
||||||
|
thumbnailBundle.removeBitstream(thumbnailBitstream);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user