Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/FLYSArtifact.java @ 120:5243ac559e16
Added a TODO file.
flys-artifacts/trunk@1440 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Wed, 09 Mar 2011 14:07:03 +0000 |
parents | 84c0b151203e |
children | e0ded17a4846 |
line wrap: on
line source
package de.intevation.flys.artifacts; import java.util.List; import org.apache.log4j.Logger; import org.w3c.dom.Document; import de.intevation.artifacts.ArtifactFactory; import de.intevation.artifacts.CallContext; import de.intevation.artifacts.common.ArtifactNamespaceContext; import de.intevation.artifacts.common.utils.XMLUtils; import de.intevation.artifactdatabase.DefaultArtifact; import de.intevation.artifactdatabase.data.StateData; import de.intevation.artifactdatabase.state.State; import de.intevation.artifactdatabase.state.StateEngine; import de.intevation.flys.artifacts.context.FLYSContext; /** * The defaul FLYS artifact. * * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> */ public abstract class FLYSArtifact extends DefaultArtifact { /** The logger that is used in this artifact.*/ private static Logger logger = Logger.getLogger(FLYSArtifact.class); /** The XPath to the name of the artifact in its configuration. */ public static final String XPATH_ARTIFACT_NAME = "@name"; /** The identifier of the current state. */ protected String currentStateId; /** The name of the artifact.*/ protected String name; /** * Initialize the artifact and insert new data if <code>data</code> contains * information necessary for this artifact. * * @param identifier The UUID. * @param factory The factory that is used to create this artifact. * @param context The CallContext. * @param data Some optional data. */ @Override public void setup( String identifier, ArtifactFactory factory, Object context, Document data) { logger.debug("Setup this artifact with the uuid: " + identifier); super.setup(identifier, factory, context, data); String name = XMLUtils.xpathString( data, XPATH_ARTIFACT_NAME, ArtifactNamespaceContext.INSTANCE); setName(name); FLYSContext flysContext = (FLYSContext) context; StateEngine engine = (StateEngine) flysContext.get( FLYSContext.STATE_ENGINE_KEY); List<State> states = engine.getStates(name); setCurrentState(states.get(0)); } /** * Insert new data included in <code>input</code> into the current state. * * @param target XML document that contains new data. * @param context The CallContext. * * @return a document that contains a SUCCESS or FAILURE message. */ @Override public Document feed(Document target, CallContext context) { Document result = XMLUtils.newDocument(); // TODO IMPLEMENT ME return result; } /** * This method returns the name of the concrete artifact. * * @return the name of the concrete artifact. */ public String getName() { return name; } /** * This method sets the name of this artifact. * * @param name the name for this artifact. */ protected void setName(String name) { this.name = name; } /** * Returns the identifier of the current state. * * @return the identifier of the current state. */ protected String getCurrentStateId() { return currentStateId; } /** * Sets the identifier of the current state. * * @param id the identifier of a state. */ protected void setCurrentStateId(String id) { currentStateId = id; } /** * Set the current state of this artifact. <b>NOTE</b>We don't store the * State object itself - which is not necessary - but its identifier. So * this method will just call the setCurrentStateId() method with the * identifier of <i>state</i>. * * @param state The new current state. */ protected void setCurrentState(State state) { setCurrentStateId(state.getID()); } /** * Returns the current state of the artifact. * * @return the current State of the artifact. */ protected State getCurrentState(Object context) { FLYSContext flysContext = (FLYSContext) context; StateEngine engine = (StateEngine) flysContext.get( FLYSContext.STATE_ENGINE_KEY); return engine.getState(getCurrentStateId()); } /** * This method extracts the data that is contained in the FEED document. * * @param feed The FEED document. * @param xpath The XPath that points to the data nodes. * * @return a StateData array. */ public StateData[] extractData(Document feed, String xpath) { // TODO IMPLEMENT ME return null; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :