Mercurial > dive4elements > river
changeset 126:b18aebd1342f
Added an abstract base class DefaultState for States.
flys-artifacts/trunk@1466 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Mon, 14 Mar 2011 15:43:12 +0000 |
parents | 25593857b8f8 |
children | 21d791e21aca |
files | flys-artifacts/ChangeLog flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/DefaultState.java flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/GaugeSelect.java flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/RiverSelect.java |
diffstat | 4 files changed, 166 insertions(+), 70 deletions(-) [+] |
line wrap: on
line diff
--- a/flys-artifacts/ChangeLog Mon Mar 14 14:16:37 2011 +0000 +++ b/flys-artifacts/ChangeLog Mon Mar 14 15:43:12 2011 +0000 @@ -1,3 +1,13 @@ +2011-03-14 Ingo Weinzierl <ingo@intevation.de> + + * src/main/java/de/intevation/flys/artifacts/states/DefaultState.java: + New. This is the base state for the FLYS application. It provides a + method that creates the dynamic ui node for the DESCRIBE. + + * src/main/java/de/intevation/flys/artifacts/states/RiverSelect.java, + src/main/java/de/intevation/flys/artifacts/states/GaugeSelect.java: Both + classes extend the abstract base class DefaultState. + 2011-03-14 Ingo Weinzierl <ingo@intevation.de> * src/main/java/de/intevation/flys/artifacts/resources/Resources.java:
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/DefaultState.java Mon Mar 14 15:43:12 2011 +0000 @@ -0,0 +1,118 @@ +package de.intevation.flys.artifacts.states; + +import java.util.Collection; +import java.util.Map; + +import org.apache.log4j.Logger; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; + +import de.intevation.artifacts.CallContext; +import de.intevation.artifacts.ArtifactNamespaceContext; + +import de.intevation.artifacts.common.utils.XMLUtils; + +import de.intevation.artifactdatabase.ProtocolUtils; +import de.intevation.artifactdatabase.data.StateData; +import de.intevation.artifactdatabase.state.AbstractState; + +import de.intevation.flys.artifacts.resources.Resources; + + +/** + * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> + */ +public abstract class DefaultState extends AbstractState { + + /** The logger that is used in this class.*/ + private static Logger logger = Logger.getLogger(DefaultState.class); + + + public Element describe( + Document document, + Node root, + CallContext context, + String uuid) + { + XMLUtils.ElementCreator creator = new XMLUtils.ElementCreator( + document, + ArtifactNamespaceContext.NAMESPACE_URI, + ArtifactNamespaceContext.NAMESPACE_PREFIX); + + Element ui = ProtocolUtils.createArtNode( + creator, "dynamic", null, null); + + Map<String, StateData> theData = getData(); + if (theData == null) { + return ui; + } + + Collection<StateData> dataItems = theData.values(); + + for (StateData data: dataItems) { + String name = data.getName(); + Element select = createData(creator, data, context); + + Element choices = ProtocolUtils.createArtNode( + creator, "choices", null, null); + + select.appendChild(choices); + ui.appendChild(select); + + Element[] items = createItems(creator, name, context); + for (Element item: items) { + choices.appendChild(item); + } + } + + return ui; + } + + + /** + * This method creates the root node that contains the list of selectable + * items. + * + * @param cr The ElementCreator. + * @param name The name of the amount of data. + * + * @return the root node of the item list. + */ + protected Element createData( + XMLUtils.ElementCreator cr, + StateData data, + CallContext context) + { + Element select = ProtocolUtils.createArtNode( + cr, "select", null, null); + cr.addAttr(select, "name", data.getName()); + + Element label = ProtocolUtils.createArtNode( + cr, "label", null, null); + + label.setTextContent(Resources.getMsg( + context.getMeta(), + getID(), + getID())); + + return select; + } + + + /** + * This method creates a list of items. These items represent the amount of + * input data that is possible for this state. + * + * @param cr The ElementCreator. + * @param name The name of the amount of data. + * + * @return a list of items. + */ + protected abstract Element[] createItems( + XMLUtils.ElementCreator cr, + String name, + CallContext context); +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/GaugeSelect.java Mon Mar 14 14:16:37 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/GaugeSelect.java Mon Mar 14 15:43:12 2011 +0000 @@ -3,6 +3,7 @@ import org.apache.log4j.Logger; import org.w3c.dom.Document; +import org.w3c.dom.Element; import org.w3c.dom.Node; import de.intevation.artifacts.CallContext; @@ -31,7 +32,7 @@ } - public void describe( + public Element describe( Document document, Node root, CallContext context, @@ -39,6 +40,8 @@ { // TODO Implement me logger.error("Currently not implemented."); + + return null; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/RiverSelect.java Mon Mar 14 14:16:37 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/RiverSelect.java Mon Mar 14 15:43:12 2011 +0000 @@ -1,32 +1,28 @@ package de.intevation.flys.artifacts.states; -import java.util.Collection; import java.util.List; -import java.util.Map; import org.apache.log4j.Logger; -import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import de.intevation.artifacts.CallContext; -import de.intevation.artifacts.ArtifactNamespaceContext; import de.intevation.artifacts.common.utils.XMLUtils; import de.intevation.artifactdatabase.ProtocolUtils; import de.intevation.artifactdatabase.data.StateData; -import de.intevation.artifactdatabase.state.AbstractState; import de.intevation.flys.artifacts.model.River; import de.intevation.flys.artifacts.model.RiverFactory; +import de.intevation.flys.artifacts.resources.Resources; /** * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> */ -public class RiverSelect extends AbstractState { +public class RiverSelect extends DefaultState { /** The logger used in this class. */ private static Logger logger = Logger.getLogger(RiverSelect.class); @@ -35,7 +31,6 @@ * The default constructor that initializes an empty State object. */ public RiverSelect() { - super(null, null); } @@ -49,76 +44,46 @@ } - /** - * This method creates the UI part of the artifact's describe document. The - * ui part consists of a static - representing previous inserted data - and - * a dynamic part - representing data that is necessary to be inserted in - * the current state. - * - * @param document The describe document. - * @param root The root node of the describe document. - * @param context The CallContext. - * @param uuid The uuid of the artifact. - */ - public void describe( - Document document, - Node root, - CallContext context, - String uuid) + protected Element createData( + XMLUtils.ElementCreator cr, + StateData data, + CallContext context) { - XMLUtils.ElementCreator creator = new XMLUtils.ElementCreator( - document, - ArtifactNamespaceContext.NAMESPACE_URI, - ArtifactNamespaceContext.NAMESPACE_PREFIX); - - Element ui = ProtocolUtils.createArtNode( - creator, "ui", null, null); - - Element staticUI = ProtocolUtils.createArtNode( - creator, "static", null, null); - - // TODO Add the static data - logger.error("TODO: ADD STATIC DATA TO DESCRIBE DOCUMENT."); + Element select = ProtocolUtils.createArtNode( + cr, "select", + new String[] { "uiprovider" }, + new String[] { "select_with_map" }); + cr.addAttr(select, "name", data.getName()); - Element dynamicUI = ProtocolUtils.createArtNode( - creator, "dynamic", null, null); - - Map<String, StateData> data = getData(); - - if (data != null) { - Collection<StateData> items = data.values(); - - for (StateData item: items) { - Element select = ProtocolUtils.createArtNode( - creator, "select", - new String[] { "uiprovider" }, - new String[] { "select_with_map" }); + Element label = ProtocolUtils.createArtNode( + cr, "label", null, null); - Element label = ProtocolUtils.createArtNode( - creator, "label", null, null); - - Element choices = ProtocolUtils.createArtNode( - creator, "choices", null, null); - - label.setTextContent("River"); + Element choices = ProtocolUtils.createArtNode( + cr, "choices", null, null); - select.appendChild(label); - select.appendChild(choices); - - List<River> rivers = RiverFactory.getRivers(); + label.setTextContent(Resources.getMsg( + context.getMeta(), + getID(), + getID())); - for (River river: rivers) { - choices.appendChild(createRiverItem(creator, river)); - } + return select; + } - dynamicUI.appendChild(select); - } + + protected Element[] createItems( + XMLUtils.ElementCreator cr, + String name, + CallContext context) + { + List<River> rivers = RiverFactory.getRivers(); + Element[] items = new Element[rivers.size()]; + + int idx = 0; + for (River river: rivers) { + items[idx++] = createRiverItem(cr, river); } - ui.appendChild(staticUI); - ui.appendChild(dynamicUI); - - root.appendChild(ui); + return items; }