teichmann@5831: package org.dive4elements.river.artifacts.states; ingo@2191: ingo@2191: import org.apache.log4j.Logger; ingo@2191: ingo@2191: import org.w3c.dom.Element; ingo@2191: teichmann@5831: import org.dive4elements.artifacts.Artifact; teichmann@5831: import org.dive4elements.artifacts.ArtifactNamespaceContext; teichmann@5831: import org.dive4elements.artifacts.CallContext; teichmann@5831: import org.dive4elements.artifacts.CallMeta; ingo@2191: teichmann@5831: import org.dive4elements.artifacts.common.utils.XMLUtils.ElementCreator; ingo@2191: teichmann@5831: import org.dive4elements.river.artifacts.resources.Resources; ingo@2191: ingo@2191: ingo@2191: /** ingo@2191: * @author Ingo Weinzierl ingo@2191: */ ingo@2191: public class HistoricalDischargeState extends DefaultState { ingo@2191: ingo@2191: private static final Logger logger = ingo@2191: Logger.getLogger(HistoricalDischargeState.class); ingo@2191: ingo@2210: public static final String I18N_MODE_W = "historical.mode.w"; ingo@2210: public static final String I18N_MODE_Q = "historical.mode.q"; ingo@2210: ingo@2191: public static final String DATA_MODE = "historical_mode"; ingo@2191: public static final String DATA_VALUES = "historical_values"; ingo@2191: public static final int DATA_MODE_W = 0; ingo@2191: public static final int DATA_MODE_Q = 1; ingo@2191: ingo@2191: ingo@2191: @Override ingo@2191: protected String getUIProvider() { ingo@2191: return "wq_simple_array"; ingo@2191: } ingo@2191: felix@5335: @Override ingo@2191: protected void appendItems( ingo@2191: Artifact artifact, ingo@2191: ElementCreator creator, ingo@2191: String name, ingo@2191: CallContext context, ingo@2191: Element select ingo@2191: ) { ingo@2191: if (name != null && name.equals(DATA_VALUES)) { ingo@2191: select.setAttributeNS( ingo@2191: ArtifactNamespaceContext.NAMESPACE_URI, ingo@2191: "art:type", ingo@2255: "doublearray"); ingo@2191: } ingo@2191: else if (name != null && name.equals(DATA_MODE)) { ingo@2191: select.setAttributeNS( ingo@2191: ArtifactNamespaceContext.NAMESPACE_URI, ingo@2191: "art:type", ingo@2191: "intoptions"); ingo@2191: } ingo@2191: ingo@2191: super.appendItems(artifact, creator, name, context, select); ingo@2191: } ingo@2191: ingo@2191: ingo@2191: @Override ingo@2191: protected Element[] createItems( ingo@2191: ElementCreator creator, ingo@2191: Artifact artifact, ingo@2191: String name, ingo@2191: CallContext context ingo@2191: ) { ingo@2191: logger.debug("createItems()"); ingo@2191: ingo@2191: if (name != null && name.equals(DATA_MODE)) { ingo@2191: return createModeItem(creator, artifact, name, context); ingo@2191: } ingo@2191: else if (name != null && name.equals(DATA_VALUES)) { ingo@2191: return createValuesItem(creator, artifact, name, context); ingo@2191: } ingo@2191: ingo@2191: logger.warn("Tried to create item for invalid data: " + name); ingo@2191: ingo@2191: return new Element[0]; ingo@2191: } ingo@2191: ingo@2191: felix@5335: /** Get label for display in client, depending on chosen W or Q input. */ ingo@2210: @Override ingo@2210: protected String getLabelFor( ingo@2210: CallContext cc, ingo@2210: String name, ingo@2210: String value, ingo@2210: String type ingo@2210: ) { ingo@2210: CallMeta meta = cc.getMeta(); ingo@2210: ingo@2210: if (name.equals(DATA_MODE)) { ingo@2210: if (value.equals(String.valueOf(DATA_MODE_W))) { ingo@2210: return Resources.getMsg(meta, I18N_MODE_W, I18N_MODE_W); ingo@2210: } ingo@2210: else { ingo@2210: return Resources.getMsg(meta, I18N_MODE_Q, I18N_MODE_Q); ingo@2210: } ingo@2210: } ingo@2210: else { ingo@2210: return value; ingo@2210: } ingo@2210: } ingo@2210: ingo@2210: ingo@2191: protected Element[] createModeItem( ingo@2191: ElementCreator creator, ingo@2191: Artifact artifact, ingo@2191: String name, ingo@2191: CallContext context ingo@2191: ) { ingo@2191: logger.debug("createModeItem()"); ingo@2191: ingo@2191: CallMeta meta = context.getMeta(); ingo@2191: ingo@2191: Element modeW = createItem( ingo@2191: creator, ingo@2191: new String[] { ingo@2210: Resources.getMsg(meta, I18N_MODE_W, I18N_MODE_W), ingo@2191: String.valueOf(DATA_MODE_W) } ); ingo@2191: ingo@2191: Element modeQ = createItem( ingo@2191: creator, ingo@2191: new String[] { ingo@2210: Resources.getMsg(meta, I18N_MODE_Q, I18N_MODE_Q), ingo@2191: String.valueOf(DATA_MODE_Q) } ); ingo@2191: ingo@2191: return new Element[] { modeW, modeQ }; ingo@2191: } ingo@2191: ingo@2191: ingo@2191: protected Element[] createValuesItem( ingo@2191: ElementCreator creator, ingo@2191: Artifact artifact, ingo@2191: String name, ingo@2191: CallContext context ingo@2191: ) { ingo@2191: logger.debug("createValuesItem()"); ingo@2191: ingo@2191: Element valuesW = createItem( ingo@2191: creator, new String[] { "ws", "" } ); ingo@2191: ingo@2191: Element valuesQ = createItem( ingo@2191: creator, new String[] { "qs", "" } ); ingo@2191: ingo@2191: return new Element[] { valuesW, valuesQ }; ingo@2191: } ingo@2191: } ingo@2191: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :