# HG changeset patch # User Ingo Weinzierl # Date 1263822230 0 # Node ID d265f5dc297953261f5bb5b1fea4b256a5ba324d # Parent 9da25f0c59625ae6774f07b1133dcda5de7aa899 Appended the selected fis to the describe document. gnv-artifacts/trunk@564 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 9da25f0c5962 -r d265f5dc2979 gnv-artifacts/ChangeLog --- a/gnv-artifacts/ChangeLog Mon Jan 18 11:40:41 2010 +0000 +++ b/gnv-artifacts/ChangeLog Mon Jan 18 13:43:50 2010 +0000 @@ -1,3 +1,24 @@ +2010-01-18 Ingo Weinzierl + + * src/main/java/de/intevation/gnv/artifacts/GNVDefaultArtifact.java: + Implements a single method to append the selected fis to ui's static part. + + * src/main/java/de/intevation/gnv/artifacts/fis/SelectProductArtifact.java, + src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java: Inherit + from GNVDefaultArtifact to append the selected fis to static part of the + describe document. + + * src/main/java/de/intevation/gnv/state/StateBase.java: Do not create static + and dynamic nodes of the user interface any longer - fetch these nodes via + xpath expression. The creation of these nodes takes place in the artifact + itself. + + * src/main/resources/lang/artifactMessages.properties, + src/main/resources/lang/artifactMessages_de_DE.properties, + src/main/resources/lang/artifactMessages_en.properties, + src/main/resources/lang/artifactMessages_de.propertie: Added label for + fis. + 2010-01-18 Sascha L. Teichmann * ChangeLog: Fixed indention. diff -r 9da25f0c5962 -r d265f5dc2979 gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java --- a/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Mon Jan 18 11:40:41 2010 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Mon Jan 18 13:43:50 2010 +0000 @@ -4,7 +4,6 @@ package de.intevation.gnv.artifacts; import de.intevation.artifactdatabase.Config; -import de.intevation.artifactdatabase.DefaultArtifact; import de.intevation.artifactdatabase.ProxyArtifact; import de.intevation.artifactdatabase.XMLUtils; @@ -65,7 +64,7 @@ * @author Ingo Weinzierl (ingo.weinzierl@intevation.de) * @author Sascha L. Teichmann (sascha.teichmann@intevation.de) */ -public abstract class GNVArtifactBase extends DefaultArtifact { +public abstract class GNVArtifactBase extends GNVDefaultArtifact { /** * the logger, used to log exceptions and additonaly information */ @@ -364,7 +363,6 @@ log.debug("GNVArtifactBase.getConfigurationFragment"); String xpathQuery = XPATH_ARTIFACT_CONFIGURATION.replaceAll( XPATH_IDENTIFIER_REPLACE, this.name); - log.debug(xpathQuery); Element configurationNode = (Element)Config.getNodeXPath(document, xpathQuery); @@ -424,7 +422,7 @@ log.debug("GNVArtifactBase.describe"); Document document = createDescibeOutput( - context.getMeta(), + context, identifier, getIncludeUIFromDocument(data) ); @@ -449,13 +447,6 @@ ArtifactNamespaceContext.NAMESPACE_PREFIX ); - if (staticNode != null) { - Element staticUI = createSelectBox( - artCreator, creator, document, context - ); - staticNode.insertBefore(staticUI, staticNode.getFirstChild()); - } - return document; } @@ -508,12 +499,16 @@ } } - - protected Document createDescibeOutput(CallMeta callMeta, String uuid, boolean incudeUI) { + + protected Document createDescibeOutput( + CallContext context, + String uuid, + boolean incudeUI + ) { log.debug("GNVArtifactBase.createDescibeOutput"); Document document = XMLUtils.newDocument(); - + XMLUtils.ElementCreator creator = new XMLUtils.ElementCreator( document, ArtifactNamespaceContext.NAMESPACE_URI, @@ -526,7 +521,7 @@ this.createReachableStates(creator, rootNode, document); this.createModel(creator, rootNode, document); if (incudeUI){ - this.createUserInterface(creator, rootNode, document, callMeta, uuid); + this.createUserInterface(creator, rootNode, document, context, uuid); } return document; @@ -616,6 +611,7 @@ return selectNode; } + protected void createReachableStates( XMLUtils.ElementCreator creator, Element parent, @@ -705,18 +701,37 @@ XMLUtils.ElementCreator creator, Element parent, Document document, - CallMeta callMeta, - String uuid + CallContext context, + String uuid ) { - Element uiNode = creator.create("ui"); + XMLUtils.ElementCreator xCreator = new XMLUtils.ElementCreator( + document, + XMLUtils.XFORM_URL, + XMLUtils.XFORM_PREFIX + ); + + Element uiNode = creator.create("ui"); + Element staticNode = creator.create("static"); + Element dynamic = creator.create("dynamic"); + + uiNode.appendChild(staticNode); + uiNode.appendChild(dynamic); + + parent.appendChild(uiNode); + + // append fis to dynamic part + appendFis(document, staticNode, context, product.getArtifactFactory()); if (this.current != null) { + Element staticUI = createSelectBox( + creator, xCreator, document, context + ); + staticNode.appendChild(staticUI); + this.current.describe( - document, uiNode, callMeta, uuid + document, uiNode, context.getMeta(), uuid ); } - - parent.appendChild(uiNode); } diff -r 9da25f0c5962 -r d265f5dc2979 gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/GNVDefaultArtifact.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/GNVDefaultArtifact.java Mon Jan 18 13:43:50 2010 +0000 @@ -0,0 +1,76 @@ +package de.intevation.gnv.artifacts; + +import de.intevation.artifactdatabase.DefaultArtifact; +import de.intevation.artifactdatabase.XMLUtils; + +import de.intevation.artifacts.CallContext; +import de.intevation.artifacts.CallMeta; + +import de.intevation.gnv.artifacts.ressource.RessourceFactory; + +import org.apache.log4j.Logger; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +/** + * @author Ingo Weinzierl + */ +public class GNVDefaultArtifact extends DefaultArtifact { + + private static Logger logger = Logger.getLogger(GNVDefaultArtifact.class); + + + public GNVDefaultArtifact() { + super(); + } + + + protected void appendFis( + Document document, + Element staticNode, + CallContext context, + String fisName + ) { + RessourceFactory resource = RessourceFactory.getInstance(); + CallMeta callMeta = (CallMeta) context.getMeta(); + + XMLUtils.ElementCreator creator = new XMLUtils.ElementCreator( + document, + XMLUtils.XFORM_URL, + XMLUtils.XFORM_PREFIX + ); + + Element selectNode = creator.create("select1"); + creator.addAttr(selectNode, "ref", "fis"); + + Element labelNode = creator.create("label"); + labelNode.setTextContent( + resource.getRessource(callMeta.getLanguages(), "fis", "fis") + ); + + Element choicesNode = creator.create("choices"); + + Element itemNode = creator.create("item"); + creator.addAttr(itemNode, "selected", "true"); + + Element choiceLabel = creator.create("label"); + choiceLabel.setTextContent(resource.getRessource( + callMeta.getLanguages(), + fisName, + fisName + )); + + Element choiceValue = creator.create("value"); + choiceValue.setTextContent(fisName); + + itemNode.appendChild(choiceLabel); + itemNode.appendChild(choiceValue); + choicesNode.appendChild(itemNode); + + selectNode.appendChild(labelNode); + selectNode.appendChild(choicesNode); + + staticNode.appendChild(selectNode); + } +} diff -r 9da25f0c5962 -r d265f5dc2979 gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/fis/SelectProductArtifact.java --- a/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/fis/SelectProductArtifact.java Mon Jan 18 11:40:41 2010 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/fis/SelectProductArtifact.java Mon Jan 18 13:43:50 2010 +0000 @@ -1,6 +1,5 @@ package de.intevation.gnv.artifacts.fis; -import de.intevation.artifactdatabase.DefaultArtifact; import de.intevation.artifactdatabase.ProxyArtifact; import de.intevation.artifactdatabase.XMLUtils; @@ -11,6 +10,7 @@ import de.intevation.artifacts.CallMeta; import de.intevation.gnv.artifacts.GNVArtifactBase; +import de.intevation.gnv.artifacts.GNVDefaultArtifact; import de.intevation.gnv.artifacts.GNVProductArtifactFactory; import de.intevation.gnv.artifacts.fis.product.Product; @@ -32,10 +32,11 @@ import org.w3c.dom.Element; import org.w3c.dom.Node; + /** * @author Ingo Weinzierl */ -public class SelectProductArtifact extends DefaultArtifact { +public class SelectProductArtifact extends GNVDefaultArtifact { public static final String XPATH_UUID = "art:action/art:uuid/@value"; @@ -232,13 +233,18 @@ rootNode.appendChild(model); // create ui - Element ui = creator.create("ui"); - Element dynamic = creator.create("dynamic"); + Element ui = creator.create("ui"); + Element staticNode = creator.create("static"); + Element dynamic = creator.create("dynamic"); + + appendFis(document, staticNode, context, this.name); appendSelectProducts(document, dynamic, context.getMeta()); + ui.appendChild(staticNode); ui.appendChild(dynamic); rootNode.appendChild(ui); document.appendChild(rootNode); + return document; } diff -r 9da25f0c5962 -r d265f5dc2979 gnv-artifacts/src/main/java/de/intevation/gnv/state/StateBase.java --- a/gnv-artifacts/src/main/java/de/intevation/gnv/state/StateBase.java Mon Jan 18 11:40:41 2010 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/state/StateBase.java Mon Jan 18 13:43:50 2010 +0000 @@ -46,6 +46,8 @@ import java.util.Map; import java.util.Set; +import javax.xml.xpath.XPathConstants; + import org.apache.log4j.Logger; import org.w3c.dom.Document; @@ -77,6 +79,9 @@ public final static String DESCRIBEDATAKEY = "_DESCRIBEDATA"; + public final static String XPATH_STATIC_UI = "art:static"; + public final static String XPATH_DYNAMIC_UI = "art:dynamic"; + private String id = null; private String description = null; @@ -553,11 +558,20 @@ ArtifactNamespaceContext.NAMESPACE_URI, ArtifactNamespaceContext.NAMESPACE_PREFIX ); - Node staticNode = creator.create("static"); - Node dynamic = creator.create("dynamic"); - rootNode.appendChild(staticNode); - rootNode.appendChild(dynamic); + Node staticNode = (Node) XMLUtils.xpath( + rootNode, + XPATH_STATIC_UI, + XPathConstants.NODE, + ArtifactNamespaceContext.INSTANCE + ); + + Node dynamic = (Node) XMLUtils.xpath( + rootNode, + XPATH_DYNAMIC_UI, + XPathConstants.NODE, + ArtifactNamespaceContext.INSTANCE + ); XMLUtils.ElementCreator xCreator = new XMLUtils.ElementCreator( document, diff -r 9da25f0c5962 -r d265f5dc2979 gnv-artifacts/src/main/resources/lang/artifactMessages.properties --- a/gnv-artifacts/src/main/resources/lang/artifactMessages.properties Mon Jan 18 11:40:41 2010 +0000 +++ b/gnv-artifacts/src/main/resources/lang/artifactMessages.properties Mon Jan 18 13:43:50 2010 +0000 @@ -16,6 +16,7 @@ fis_icestations = Ice Station Report meshid= Mesh +fis = Data set product= Product timeSeries= Timeseries verticalProfile = Verticalprofile diff -r 9da25f0c5962 -r d265f5dc2979 gnv-artifacts/src/main/resources/lang/artifactMessages_de.properties --- a/gnv-artifacts/src/main/resources/lang/artifactMessages_de.properties Mon Jan 18 11:40:41 2010 +0000 +++ b/gnv-artifacts/src/main/resources/lang/artifactMessages_de.properties Mon Jan 18 13:43:50 2010 +0000 @@ -15,6 +15,7 @@ fis_currentmeter = Strommesser fis_icestations = Eismeldungen +fis = Fachinformationssystem product= Produkt timeSeries= Zeitserie verticalProfile = Vertikalprofil diff -r 9da25f0c5962 -r d265f5dc2979 gnv-artifacts/src/main/resources/lang/artifactMessages_de_DE.properties --- a/gnv-artifacts/src/main/resources/lang/artifactMessages_de_DE.properties Mon Jan 18 11:40:41 2010 +0000 +++ b/gnv-artifacts/src/main/resources/lang/artifactMessages_de_DE.properties Mon Jan 18 13:43:50 2010 +0000 @@ -15,6 +15,7 @@ fis_currentmeter = Strommesser fis_icestations = Eismeldungen +fis= Fachinformationssystem product= Produkt timeSeries= Zeitserie verticalProfile = Vertikalprofil diff -r 9da25f0c5962 -r d265f5dc2979 gnv-artifacts/src/main/resources/lang/artifactMessages_en.properties --- a/gnv-artifacts/src/main/resources/lang/artifactMessages_en.properties Mon Jan 18 11:40:41 2010 +0000 +++ b/gnv-artifacts/src/main/resources/lang/artifactMessages_en.properties Mon Jan 18 13:43:50 2010 +0000 @@ -16,6 +16,7 @@ fis_icestations = Ice Station Report meshid= Mesh +fis = Data set product= Product timeSeries= Timeseries verticalProfile = Verticalprofile