felix@1964: package de.intevation.flys.artifacts; felix@1964: felix@1964: import java.util.ArrayList; felix@1964: import java.util.List; felix@1964: felix@1964: import org.apache.log4j.Logger; felix@1964: felix@1964: import org.w3c.dom.Document; felix@1964: felix@1964: import de.intevation.artifacts.Artifact; felix@1964: import de.intevation.artifacts.ArtifactFactory; felix@1964: import de.intevation.artifacts.CallMeta; felix@1964: felix@1964: import de.intevation.flys.artifacts.model.CrossSectionFacet; felix@1964: felix@1964: import de.intevation.artifacts.common.ArtifactNamespaceContext; felix@1964: import de.intevation.artifacts.common.utils.XMLUtils; felix@1964: felix@1964: import de.intevation.flys.artifacts.states.StaticState; felix@1964: felix@1964: import de.intevation.artifactdatabase.data.DefaultStateData; felix@1964: import de.intevation.artifactdatabase.state.DefaultOutput; felix@1964: import de.intevation.artifactdatabase.state.Facet; felix@1964: import de.intevation.artifactdatabase.state.State; felix@1964: felix@1964: import de.intevation.flys.artifacts.states.WMSBackgroundState; felix@1964: felix@1964: felix@1964: public class CrossSectionArtifact extends StaticFLYSArtifact { felix@1964: felix@1964: /** Access ids of doc. */ felix@1964: public static final String XPATH_IDS = "/art:action/art:ids/@value"; felix@1964: felix@1964: /** Name of Artifact. */ felix@1964: public static final String CS_ARTIFACT_NAME = "cross_section"; felix@1964: felix@1964: /** Name of state. */ felix@1964: public static final String STATIC_STATE_NAME = "state.cross_section"; felix@1964: felix@1964: /** Own logger. */ felix@1964: private static final Logger logger = felix@1964: Logger.getLogger(CrossSectionArtifact.class); felix@1964: felix@1964: felix@1964: /** Return given name. */ felix@1964: @Override felix@1964: public String getName() { felix@1964: return CS_ARTIFACT_NAME; felix@1964: } felix@1964: felix@1964: felix@1964: /** Store ids, create a (broken) CrossSectionFacet. */ felix@1964: @Override felix@1964: public void setup( felix@1964: String identifier, felix@1964: ArtifactFactory factory, felix@1964: Object context, felix@1964: CallMeta callMeta, felix@1964: Document data) felix@1964: { felix@1964: logger.info("CrossSectionArtifact.setup"); felix@1964: felix@1964: super.setup(identifier, factory, context, callMeta, data); felix@1964: felix@1964: String ids = XMLUtils.xpathString( felix@1964: data, XPATH_IDS, ArtifactNamespaceContext.INSTANCE); felix@1964: felix@1964: if (ids != null && ids.length() > 0) { felix@1964: addStringData("ids", ids); felix@1964: } felix@1964: else { felix@1964: throw new IllegalArgumentException("No attribute 'ids' found!"); felix@1964: } felix@1964: felix@1964: List fs = new ArrayList(); felix@1964: fs.add(new CrossSectionFacet(0, "TODO GET NAME FROM DB")); felix@1964: felix@1964: StaticState state = (StaticState) getCurrentState(context); felix@1964: state.computeInit(this, hash(), context, callMeta, fs); felix@1964: felix@1964: if (!fs.isEmpty()) { felix@1964: facets.put(getCurrentStateId(), fs); felix@1964: } felix@1964: } felix@1964: felix@1964: felix@1964: /** Do not copy data from daddyfact. */ felix@1964: @Override felix@1964: protected void initialize( felix@1964: Artifact artifact, felix@1964: Object context, felix@1964: CallMeta callMeta) felix@1964: { felix@1964: // do nothing felix@1964: } felix@1964: felix@1964: felix@1964: /** felix@1964: * Create and return a new StaticState with charting output. felix@1964: */ felix@1964: @Override felix@1964: public State getCurrentState(Object cc) { felix@1964: State state = new StaticState(STATIC_STATE_NAME); felix@1964: felix@1964: List fs = facets.get(getCurrentStateId()); felix@1964: felix@1964: DefaultOutput o = new DefaultOutput( felix@1964: "cross_section", felix@1964: "cross_section", felix@1964: "image/png", felix@1964: fs, felix@1964: "chart"); felix@1964: felix@1964: state.getOutputs().add(o); felix@1964: felix@1964: return state; felix@1964: } felix@1964: felix@1964: felix@1964: /** felix@1964: * Get a list containing the one and only State. felix@1964: * @param context ignored. felix@1964: * @return list with one and only state. felix@1964: */ felix@1964: @Override felix@1964: protected List getStates(Object context) { felix@1964: ArrayList states = new ArrayList(); felix@1964: states.add(getCurrentState(context)); felix@1964: felix@1964: return states; felix@1964: } felix@1964: } felix@1964: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :