mirror of
https://github.com/ilri/cgspace-java-helpers.git
synced 2024-11-26 16:48:22 +01:00
src/main/java: Implement task "profiles"
The DSpace curation system has task properties that can be used to create "profiles" of sorts. For example, if you set a custom task name in curate.cfg: plugin.named.org.dspace.curate.CurationTask = \ org.cgiar.cgspace.ctasks.CountryCodeTagger = countrycodetagger \ org.cgiar.cgspace.ctasks.CountryCodeTagger = countrycodetagger.force ... then DSpace will look for countrycodetagger.cfg by default, and countrycodetagger.force.cfg for the second task. We can set different properties in each one, for example "force=true", and then operate accordingly in the task when we check the value using taskProperty(). I will use this to force all country tags to be cleared and updated, where by default we only tag if there are no existing country tags. See: https://wiki.lyrasis.org/display/DSDOC5x/Curation+System
This commit is contained in:
parent
d4cd5bfd61
commit
4b553676dd
@ -24,7 +24,6 @@ import org.dspace.authorize.AuthorizeException;
|
|||||||
import org.dspace.content.DSpaceObject;
|
import org.dspace.content.DSpaceObject;
|
||||||
import org.dspace.content.Item;
|
import org.dspace.content.Item;
|
||||||
import org.dspace.content.Metadatum;
|
import org.dspace.content.Metadatum;
|
||||||
import org.dspace.core.ConfigurationManager;
|
|
||||||
import org.dspace.core.Constants;
|
import org.dspace.core.Constants;
|
||||||
import org.dspace.curate.AbstractCurationTask;
|
import org.dspace.curate.AbstractCurationTask;
|
||||||
import org.dspace.curate.Curator;
|
import org.dspace.curate.Curator;
|
||||||
@ -41,11 +40,11 @@ public class CountryCodeTagger extends AbstractCurationTask
|
|||||||
private int status = Curator.CURATE_UNSET;
|
private int status = Curator.CURATE_UNSET;
|
||||||
private String result = null;
|
private String result = null;
|
||||||
|
|
||||||
private static final String PLUGIN_PREFIX = "ilri";
|
|
||||||
private static String isocodesJsonPath;
|
private static String isocodesJsonPath;
|
||||||
private static String cgspaceCountriesJsonPath;
|
private static String cgspaceCountriesJsonPath;
|
||||||
private static String iso3166Field;
|
private static String iso3166Field;
|
||||||
private static String iso3166Alpha2Field;
|
private static String iso3166Alpha2Field;
|
||||||
|
private static boolean forceupdate;
|
||||||
|
|
||||||
private List<String> results = new ArrayList<String>();
|
private List<String> results = new ArrayList<String>();
|
||||||
|
|
||||||
@ -57,8 +56,9 @@ public class CountryCodeTagger extends AbstractCurationTask
|
|||||||
// Load configuration
|
// Load configuration
|
||||||
isocodesJsonPath = "/org/cgiar/cgspace/ctasks/iso_3166-1.json";
|
isocodesJsonPath = "/org/cgiar/cgspace/ctasks/iso_3166-1.json";
|
||||||
cgspaceCountriesJsonPath = "/org/cgiar/cgspace/ctasks/cgspace-countries.json";
|
cgspaceCountriesJsonPath = "/org/cgiar/cgspace/ctasks/cgspace-countries.json";
|
||||||
iso3166Field = ConfigurationManager.getProperty(PLUGIN_PREFIX, "countrycodes.iso3166.field");
|
iso3166Field = taskProperty("iso3166.field");
|
||||||
iso3166Alpha2Field = ConfigurationManager.getProperty(PLUGIN_PREFIX, "countrycodes.iso3166-alpha2.field");
|
iso3166Alpha2Field = taskProperty("iso3166-alpha2.field");
|
||||||
|
forceupdate = taskBooleanProperty("forceupdate", false);
|
||||||
|
|
||||||
if (dso.getType() == Constants.ITEM)
|
if (dso.getType() == Constants.ITEM)
|
||||||
{
|
{
|
||||||
@ -85,15 +85,19 @@ public class CountryCodeTagger extends AbstractCurationTask
|
|||||||
|
|
||||||
//System.out.println(itemHandle + ": " + itemCountries.length + " countries possibly need tagging");
|
//System.out.println(itemHandle + ": " + itemCountries.length + " countries possibly need tagging");
|
||||||
|
|
||||||
|
// split the alpha2 country code field into schema, element, and qualifier so we can use it with item.addMetadata()
|
||||||
|
String[] iso3166Alpha2FieldParts = iso3166Alpha2Field.split("\\.");
|
||||||
|
|
||||||
|
if (forceupdate) {
|
||||||
|
item.clearMetadata(iso3166Alpha2FieldParts[0], iso3166Alpha2FieldParts[1], iso3166Alpha2FieldParts[2], Item.ANY);
|
||||||
|
}
|
||||||
|
|
||||||
// check the item's country codes, if any
|
// check the item's country codes, if any
|
||||||
Metadatum[] itemAlpha2CountryCodes = item.getMetadataByMetadataString(iso3166Alpha2Field);
|
Metadatum[] itemAlpha2CountryCodes = item.getMetadataByMetadataString(iso3166Alpha2Field);
|
||||||
|
|
||||||
if (itemAlpha2CountryCodes.length == 0) {
|
if (itemAlpha2CountryCodes.length == 0) {
|
||||||
//System.out.println(itemHandle + ": Should add codes for " + itemCountries.length + " countries.");
|
//System.out.println(itemHandle + ": Should add codes for " + itemCountries.length + " countries.");
|
||||||
|
|
||||||
// split the alpha2 country code field into schema, element, and qualifier so we can use it with item.addMetadata()
|
|
||||||
String[] iso3166Alpha2FieldParts = iso3166Alpha2Field.split("\\.");
|
|
||||||
|
|
||||||
Integer addedCodeCount = 0;
|
Integer addedCodeCount = 0;
|
||||||
for (Metadatum itemCountry : itemCountries) {
|
for (Metadatum itemCountry : itemCountries) {
|
||||||
//check ISO 3166-1 countries
|
//check ISO 3166-1 countries
|
||||||
|
Loading…
Reference in New Issue
Block a user