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 :