All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.dspace.workflow.Task Maven / Gradle / Ivy

There is a newer version: 8.0
Show newest version
/**
 * The contents of this file are subject to the license and copyright
 * detailed in the LICENSE and NOTICE files at the root of the source
 * tree and available online at
 *
 * http://www.dspace.org/license/
 */
package org.dspace.workflow;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.validation.constraints.NotNull;

/**
 * An association between a {@link org.dspace.curate.CurationTask curation task}
 * and the workflow system.  A single curation task may be associated with more
 * than one workflow, and each association may be configured differently.
 *
 * 

A curation task can be given {@link addPower "powers"} to affect the * progress of a workflow. For example, a curation task can cause a workflow * item to be rejected if it fails. * *

A curation task can be associated with {@link addContact "contacts"} * (email addresses) to be notified when the curation task returns a given status. */ public class Task { /** Name of the curation task. */ public final String name; /** Effects of curation task completion on the workflow step. */ public final List powers = new ArrayList<>(); /** Contacts to be notified on a given completion status. */ public final Map> contacts = new HashMap<>(); /** * Create an instance of an association with a given curation task. * @param name the name of a curation task to be attached to some workflow. */ public Task(@NotNull String name) { this.name = name; } /** * Empower this attachment to affect a workflow in some way. * @param power the given power. See {@link org.dspace.curate.XmlWorkflowCuratorServiceImpl#curate}. * TODO should use schema-generated {@code enum}? */ public void addPower(@NotNull String power) { powers.add(power); } /** * Associate a contact with a given curation status such as * {@link org.dspace.curate.Curator#CURATE_ERROR}. * * @param status an exit status of the curation task. * TODO should use schema-generated {@code enum}? * @param contact an address to be notified of this status. */ public void addContact(@NotNull String status, @NotNull String contact) { List sContacts = contacts.get(status); if (sContacts == null) { sContacts = new ArrayList<>(); contacts.put(status, sContacts); } sContacts.add(contact); } /** * Get the collection of contacts for a given status such as * {@link org.dspace.curate.Curator#CURATE_SUCCESS}. * * @param status the given status. * TODO should use schema-generated {@code enum}? * @return contacts associated with this status. */ @NotNull public List getContacts(@NotNull String status) { List ret = contacts.get(status); return (ret != null) ? ret : new ArrayList<>(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy