ingo@105: package de.intevation.flys.artifacts;
ingo@105:
ingo@105: import java.io.IOException;
ingo@105: import java.io.OutputStream;
ingo@109: import java.util.List;
ingo@109:
ingo@109: import javax.xml.xpath.XPathConstants;
ingo@105:
ingo@105: import org.w3c.dom.Document;
ingo@105:
ingo@105: import org.apache.log4j.Logger;
ingo@105:
ingo@105: import de.intevation.artifacts.ArtifactFactory;
ingo@105: import de.intevation.artifacts.CallContext;
ingo@105:
ingo@109: import de.intevation.artifacts.common.utils.XMLUtils;
ingo@109:
ingo@105: import de.intevation.artifactdatabase.DefaultArtifact;
ingo@109: import de.intevation.artifactdatabase.state.State;
ingo@109: import de.intevation.artifactdatabase.state.StateEngine;
ingo@109:
ingo@109: import de.intevation.flys.artifacts.context.FLYSContext;
ingo@105:
ingo@105:
ingo@105: /**
ingo@105: * The default WINFO artifact.
ingo@105: *
ingo@105: * @author Ingo Weinzierl
ingo@105: */
ingo@105: public class WINFOArtifact extends DefaultArtifact {
ingo@105:
ingo@105: /** The logger for this class */
ingo@105: private static Logger logger = Logger.getLogger(WINFOArtifact.class);
ingo@105:
ingo@109: /** The name of the artifact. */
ingo@109: public static final String ARTIFACT_NAME = "winfo";
ingo@109:
ingo@109: /** The XPath to the name of the artifact in its configuration. */
ingo@109: public static final String XPATH_ARTIFACT_NAME = "@name";
ingo@109:
ingo@109: /** The current state. */
ingo@109: protected State currentState;
ingo@109:
ingo@105:
ingo@105: /**
ingo@105: * The default constructor.
ingo@105: */
ingo@105: public WINFOArtifact() {
ingo@105: super();
ingo@105: }
ingo@105:
ingo@105:
ingo@105: /**
ingo@109: * Set the current state of this artifact.
ingo@109: *
ingo@109: * @param state The new current state.
ingo@109: */
ingo@109: protected void setCurrentState(State state) {
ingo@109: currentState = state;
ingo@109: }
ingo@109:
ingo@109:
ingo@109: /**
ingo@105: * Initialize the artifact and insert new data if data
contains
ingo@105: * information necessary for this artifact.
ingo@105: *
ingo@105: * @param identifier The UUID.
ingo@105: * @param factory The factory that is used to create this artifact.
ingo@105: * @param context The CallContext.
ingo@105: * @param data Some optional data.
ingo@105: */
ingo@105: @Override
ingo@105: public void setup(
ingo@105: String identifier,
ingo@105: ArtifactFactory factory,
ingo@105: Object context,
ingo@105: Document data)
ingo@105: {
ingo@105: logger.debug("Setup this artifact with the uuid: " + identifier);
ingo@105:
ingo@105: super.setup(identifier, factory, context, data);
ingo@105:
ingo@109: FLYSContext flysContext = (FLYSContext) context;
ingo@109: StateEngine engine = (StateEngine) flysContext.get(
ingo@109: FLYSContext.STATE_ENGINE_KEY);
ingo@105:
ingo@109: List states = engine.getStates(ARTIFACT_NAME);
ingo@105:
ingo@109: setCurrentState(states.get(0));
ingo@105: }
ingo@105:
ingo@105:
ingo@105: /**
ingo@105: * This method returns a description of this artifact.
ingo@105: *
ingo@105: * @param data Some data.
ingo@105: * @param CallContext The CallContext.
ingo@105: *
ingo@105: * @return the description of this artifact.
ingo@105: */
ingo@105: public Document describe(Document data, CallContext context) {
ingo@105: logger.debug("Describe the artifact.");
ingo@109: logger.debug("The current state is: " + currentState.getID());
ingo@105:
ingo@105: return super.describe(data, context);
ingo@105: }
ingo@105: }
ingo@105: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :