Bueno lo prometido es deuda, y os debía una segunda parte sobre las tareas de curación.
Como os acordaréis en la primera parte, se habló de como configurar DSpace para que aceptase las tareas de curación, es decir, su configuración, su manejo, etc.. Ahora con este post vamos a proporcionar un esquema básico de una tarea de curación, junto con algún consejo a la hora de acometer la construcción de una tarea de curación.
El código, como expliqué en el post anterior, es un fichero java incluido dentro del código fuente de DSpace, este código debe tener una estructura básica tal que así:
public class ArvoCuration extends AbstractCurationTask{ private static Logger log = Logger.getLogger(ArvoCuration.class); @Override public void init(Curator curator, String taskId) throws IOException { } @Override public int perform(DSpaceObject dso) throws IOException { return 0; }
Esta clase java debe heredar de la clase AbstractCurationTask, y «usa» dos métodos init y perform. El método init no es estrictamente necesario incluirlo, pero es aconsejable puesto que esta función nos permite inicializar valores en nuestro código es decir, que cuando ejecutamos una tarea de curación primero se va a ejecutar el método init, el cual es útil para inicializar Bases de Datos u otras variables… En segundo lugar se ejecutará el método perform, y es aquí donde ha de ir el código que nuestra tarea de curación ejecutará.
El método perform recibe un parámetro que indica el objeto que se ha de evaluar, es decir un objeto de una colección…. Por lo que para trabajar con él hay que hacerle un cast y comprobar que lo que recibimos es un item, ya que a fin de cuentas el propósito de las tareas de curación es ejecutar tareas de curación-preservación (efectuar el mantenimiento) de items en el tiempo.
El retorno de la tarea de curación depende de que el proceso que se ejecute sea exitoso o fallido, y para ello hay unos códigos de error que vienen definidos en el manual de DSpace por lo que debemos de identificar si nuestra tarea se ejecutó correctamente o no. Os aconsejo usar la clase Curator invocándola así
import org.dspace.curate.Curator;
Esta clase al llamarla tiene definidas unas variables estáticas que nos definen de forma textual el código que ha de devolver el método perform.
Estas variables son:
Curator.CURATE_ERROR; (la tarea tiene un error) Curator.CURATE_SUCCESS; (la tarea se ejecuta correctamente) Curator.CURATE_FAIL; (la tarea falló) Curator.CURATE_SKIP; (la tarea no se realizó)
De ti depende usar esos códigos (CURATE_ERROR….) correctamente, puesto que a fin de cuentas tu eres el encargado de programar la tarea de curación.
Otro apunte importante a la hora de programar nuestra tarea de curación es usar el log de DSpace para reflejar cualquier error, en caso de fallo. En el esqueleto del código os dejé como se llama al log de DSpace de tal forma que luego haciendo un log.error(«»); podéis escribir el fallo u otra información proporcionada por la tarea. Por ejemplo, si queréis notificar por log que la tarea se está ejecutando, podéis usar el método info del log así:
log.info("Se ha ejecutado mi tarea");
En serio, os recomiendo un uso amplio de esta característica..
Bueno y esto es (casi) todo. Si necesitáis mas información acerca de las tareas de curación, enviad vuestras comentarios a este post.
Un saludo, DSpace users.
Hola, el código de la clase ArvoCuration completo la tienen disponible para el público?
Gracias
Gracias a la respuesta de Emilio Lorenzo se pueden encontrar algunas clases en el link que aparece más abajo:
AddCoverPage.java
AnnotateWithBitstreamFormats.java
ExtractPdfMetadata.java
MakeThesisPrimaryBitstream.java
ProtectSensitiveBundles.java
RepairEmbargoPermissions.java
RetroactivelyAssignAuthorityValue.java
https://github.com/lconz-irr/Curation-Tasks/tree/master/src/main/java/nz/ac/lconz/irr/curate/task
Saludos