ingo@106: package de.intevation.flys.artifacts.transitions;
ingo@106:
ingo@106: import java.util.HashMap;
ingo@106: import java.util.List;
ingo@106: import java.util.Map;
ingo@106:
ingo@106: import org.apache.log4j.Logger;
ingo@106:
ingo@106: /**
ingo@106: * The TransitionEngine stores all transitions for each Artifact and should be
ingo@106: * used to determine, if an Artifact is able to advance from one to another
ingo@106: * state.
ingo@106: *
ingo@106: * @author Ingo Weinzierl
ingo@106: */
ingo@106: public class TransitionEngine {
ingo@106:
ingo@106: /** The logger used in this class. */
ingo@106: private static Logger logger = Logger.getLogger(TransitionEngine.class);
ingo@106:
ingo@106: /**
ingo@106: * A map that contains the transitions of the artifacts. The key is the name
ingo@106: * of the artifact, its value is a list of all transitions of this artifact.
ingo@106: */
ingo@106: protected Map transitions;
ingo@106:
ingo@106:
ingo@106: /**
ingo@106: * The default constructor.
ingo@106: */
ingo@106: public TransitionEngine() {
ingo@106: transitions = new HashMap();
ingo@106: }
ingo@106:
ingo@106:
ingo@106: /**
ingo@106: * Add new transitions for a specific artifact.
ingo@106: *
ingo@106: * @param artifact the name of the Artifact.
ingo@106: * @param transitions the list of transition of the artifact.
ingo@106: *
ingo@106: * @return true, if the transitions were added, otherwise false.
ingo@106: */
ingo@106: public boolean addTransition(String artifact, List transitions) {
ingo@106: List tmp = this.transitions.get(artifact);
ingo@106:
ingo@106: if (tmp != null) {
ingo@106: logger.info(
ingo@106: "Transitions for the artifact '"
ingo@106: + artifact
ingo@106: + "' already stored.");
ingo@106:
ingo@106: return false;
ingo@106: }
ingo@106:
ingo@106: logger.debug("Add new transitions for artifact '" + artifact + "'");
ingo@106: return this.transitions.put(artifact, transitions) != null;
ingo@106: }
ingo@106: }
ingo@106: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :