changeset 993:9b126bceb0b2

gnv/issue219: Added rendering of direct links. gnv/trunk@1194 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Thu, 10 Jun 2010 22:01:23 +0000
parents 9ff116474e7b
children 541ff0db1b12
files gnv/ChangeLog gnv/src/main/java/de/intevation/gnv/action/DescribeUIAction.java gnv/src/main/java/de/intevation/gnv/action/NextArtifactStepAction.java gnv/src/main/java/de/intevation/gnv/artifactdatabase/client/ArtifactDatabaseClient.java gnv/src/main/java/de/intevation/gnv/util/XSLTransformer.java gnv/src/main/webapp/WEB-INF/config/struts-config.xml gnv/src/main/webapp/WEB-INF/config/templates/describe-ui.xsl gnv/src/main/webapp/WEB-INF/jsp/index.jsp gnv/src/main/webapp/styles/gnv.css
diffstat 9 files changed, 155 insertions(+), 46 deletions(-) [+]
line wrap: on
line diff
--- a/gnv/ChangeLog	Thu Jun 10 16:48:30 2010 +0000
+++ b/gnv/ChangeLog	Thu Jun 10 22:01:23 2010 +0000
@@ -1,3 +1,34 @@
+2010-06-10	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
+
+	Issue 219
+
+	* src/main/java/de/intevation/gnv/artifactdatabase/client/ArtifactDatabaseClient.java:
+	  Broke over long line.
+
+	* src/main/java/de/intevation/gnv/action/DescribeUIAction.java: Fed
+	  more parameters into XSL transformation to allow better form rendering.
+
+	* src/main/java/de/intevation/gnv/action/NextArtifactStepAction.java:
+	  use explicit boolean to indicate that we are still able to advance.
+
+	* src/main/java/de/intevation/gnv/util/XSLTransformer.java: Removed
+	  stupid initial size of hash map.
+
+	* src/main/webapp/styles/gnv.css: Added style to render direct
+	  links to look like buttons.
+
+	* src/main/webapp/WEB-INF/config/struts-config.xml: Added a few
+	  forwards. The log is full of unresolvable forwards. TODO: This
+	  needs to be checked and is not a problem introduced by direct
+	  link feature.
+
+	* src/main/webapp/WEB-INF/config/templates/describe-ui.xsl: Render
+	  the direct links if there are less than six item in a single
+	  select list.
+
+	* src/main/webapp/WEB-INF/jsp/index.jsp: Cleanup a bit. Removed
+	  form rendering here and moved it into the dynamic XSL transformation.
+
 2010-06-10  Ingo Weinzierl <ingo.weinzierl@intevation.de>
 
 	* src/main/java/de/intevation/gnv/action/DescribeUIAction.java: Removed some
--- a/gnv/src/main/java/de/intevation/gnv/action/DescribeUIAction.java	Thu Jun 10 16:48:30 2010 +0000
+++ b/gnv/src/main/java/de/intevation/gnv/action/DescribeUIAction.java	Thu Jun 10 22:01:23 2010 +0000
@@ -25,6 +25,8 @@
 import de.intevation.gnv.util.XMLUtils;
 import de.intevation.gnv.util.XSLTransformer;
 
+import org.apache.log4j.Logger;
+
 /**
  * This controller is called to fetch the current artifact description using the
  * describe operation. The describe document is used to feed an XSL transformer
@@ -36,6 +38,9 @@
  */
 public class DescribeUIAction extends ArtifactDatabaseActionBase {
 
+    private static Logger log = Logger
+            .getLogger(DescribeUIAction.class);
+
     public static final String XPATH_DYNAMIC_UI = "art:dynamic";
     public static final String XPATH_STATIC_UI  = "art:static";
 
@@ -58,6 +63,11 @@
         super();
     }
 
+    public static String getInputException(HttpServletRequest request) {
+        Object msg = request.getAttribute(CommunicationKeys.REQUEST_EXCEPTION_INPUT_ID);
+        return msg != null ? msg.toString() : "";
+    }
+
 
     @Override
     public ActionForward execute(
@@ -104,8 +114,10 @@
             if (currentUI != null) {
                 ResourceBundle res = ResourceBundle.getBundle(
                     "applicationMessages", locale);
-                String editText           = res.getString(
+                String editText = res.getString(
                     "gnviewer.history.back.button");
+                String submitButton = res.getString(
+                    "gnviewer.select.button.src");
                 String exampleLinestring = res.getString(
                     "gnviewer.example.linestring");
                 String examplePolygon = res.getString(
@@ -113,12 +125,37 @@
 
                 XSLTransformer transformer = new XSLTransformer();
 
+                String nextUrl = response.encodeURL(
+                    mapping.findForward("next").getPath());
+
                 String url = response.encodeURL(
                     mapping.findForward("back").getPath());
+
+
+                transformer.addParameter(
+                    "uuid",
+                    sm.getCurrentArtifact().getDescription());
+
+                transformer.addParameter(
+                    "exception",
+                    getInputException(request));
+
+
+                Object ft = request.getAttribute("furthertargets");
+
+                transformer.addParameter("further",
+                    ft == null || (ft instanceof Boolean && ((Boolean)ft).booleanValue())
+                    ? "true"
+                    : "false");
+
+                transformer.addParameter("next-url", nextUrl);
                 transformer.addParameter("back-url", url);
                 transformer.addParameter("edit", editText);
                 transformer.addParameter("example-polygon", examplePolygon);
                 transformer.addParameter(
+                    "gnviewer-select-button-src",
+                    submitButton);
+                transformer.addParameter(
                     "example-linestring",
                     exampleLinestring);
 
@@ -135,10 +172,9 @@
                 );
 
                 String ui = transformer.transform(
-                    dynamicNode,
+                    dynamicNode.getParentNode(),
                     "UTF-8",
-                    request.getRealPath(XSL_SHEET_DYNAMIC
-                ));
+                    request.getRealPath(XSL_SHEET_DYNAMIC));
 
                 if (ui != null && ui.length() > 1)
                     request.setAttribute("ui", ui);
--- a/gnv/src/main/java/de/intevation/gnv/action/NextArtifactStepAction.java	Thu Jun 10 16:48:30 2010 +0000
+++ b/gnv/src/main/java/de/intevation/gnv/action/NextArtifactStepAction.java	Thu Jun 10 22:01:23 2010 +0000
@@ -98,7 +98,7 @@
                         );
                     }
                     catch (ArtifactDatabaseInputException e) {
-                        log.error(e, e);
+                        log.debug(e, e);
                         request.setAttribute(
                             CommunicationKeys.REQUEST_EXCEPTION_INPUT_ID,
                             e.getMessage());
@@ -113,7 +113,7 @@
                     Map tmpOuts = ad.getOutputModes();
                     request.setAttribute(
                         "furthertargets",
-                        tmpOuts == null || tmpOuts.isEmpty()
+                        Boolean.valueOf(tmpOuts == null || tmpOuts.isEmpty())
                     );
                 } else {
                     try{
@@ -139,7 +139,7 @@
                             e.getMessage());
                     }
 
-                    request.setAttribute("furthertargets", false);
+                    request.setAttribute("furthertargets", Boolean.FALSE);
                 }
             }else{
                 log.warn("SessionTimeout has occured");
--- a/gnv/src/main/java/de/intevation/gnv/artifactdatabase/client/ArtifactDatabaseClient.java	Thu Jun 10 16:48:30 2010 +0000
+++ b/gnv/src/main/java/de/intevation/gnv/artifactdatabase/client/ArtifactDatabaseClient.java	Thu Jun 10 22:01:23 2010 +0000
@@ -25,9 +25,11 @@
  */
 public interface ArtifactDatabaseClient {
 
-    public final static String ARTIFACTDATABASE_COUNT_ID = "de.intevation.gnv.artifactdatabase.client.ArtifactDatabase.count";
+    public final static String ARTIFACTDATABASE_COUNT_ID =
+        "de.intevation.gnv.artifactdatabase.client.ArtifactDatabase.count";
 
-    public final static String ARTIFACTDATABASE_URL_ID = "de.intevation.gnv.artifactdatabase.client.ArtifactDatabase.url";
+    public final static String ARTIFACTDATABASE_URL_ID =
+        "de.intevation.gnv.artifactdatabase.client.ArtifactDatabase.url";
 
     /**
      * Return the Artifactfactories which can be resolved.
--- a/gnv/src/main/java/de/intevation/gnv/util/XSLTransformer.java	Thu Jun 10 16:48:30 2010 +0000
+++ b/gnv/src/main/java/de/intevation/gnv/util/XSLTransformer.java	Thu Jun 10 22:01:23 2010 +0000
@@ -98,7 +98,7 @@
      */
     public void addParameter(String name, String value) {
         if (params == null) {
-            params = new HashMap<String, String>(3);
+            params = new HashMap<String, String>();
         }
 
         params.put(name, value);
--- a/gnv/src/main/webapp/WEB-INF/config/struts-config.xml	Thu Jun 10 16:48:30 2010 +0000
+++ b/gnv/src/main/webapp/WEB-INF/config/struts-config.xml	Thu Jun 10 22:01:23 2010 +0000
@@ -91,6 +91,9 @@
            <forward
                name="back"
                path="/gnv/back.do"/>
+           <forward
+               name="next"
+               path="/gnv/next.do"/>
             <forward
                 name="selectfis"
                 path="/gnv/selectFis.do"/>
@@ -106,6 +109,9 @@
                 name="back"
                 path="/gnv/back.do"/>
             <forward
+                name="next"
+                path="/gnv/next.do"/>
+            <forward
                 name="selectfis"
                 path="/gnv/selectFis.do"/>
         </action>
@@ -124,6 +130,9 @@
            <forward
                 name="success"
                 path="/WEB-INF/jsp/mainlayout.jsp"/>
+           <forward
+               name="next"
+               path="/gnv/next.do"/>
             <forward
                 name="back"
                 path="/gnv/back.do"/>
@@ -149,6 +158,9 @@
             <forward
                 name="success"
                 path="/WEB-INF/jsp/wmslayout.jsp"/>
+           <forward
+               name="next"
+               path="/gnv/next.do"/>
             <forward
                 name="back"
                 path="/gnv/back.do"/>
@@ -180,6 +192,9 @@
             <forward
                 name="success"
                 path="/WEB-INF/jsp/mainlayout.jsp"/>
+           <forward
+               name="next"
+               path="/gnv/next.do"/>
             <forward
                 name="back"
                 path="/gnv/back.do"/>
@@ -194,6 +209,9 @@
             <forward
                 name="success"
                 path="/WEB-INF/jsp/mainlayout.jsp"/>
+           <forward
+               name="next"
+               path="/gnv/next.do"/>
             <forward
                 name="back"
                 path="/gnv/back.do"/>
@@ -208,6 +226,9 @@
             <forward
                 name="success"
                 path="/WEB-INF/jsp/mainlayout.jsp"/>
+           <forward
+               name="next"
+               path="/gnv/next.do"/>
             <forward
                 name="back"
                 path="/gnv/back.do"/>
@@ -219,6 +240,9 @@
                 type="de.intevation.gnv.action.ShowStatisticAction"
                 scope="request"
                 validate="false">
+           <forward
+               name="next"
+               path="/gnv/next.do"/>
             <forward
                 name="back"
                 path="/gnv/back.do"/>
@@ -237,6 +261,9 @@
                 name="back"
                 path="/gnv/back.do"/>
             <forward
+                name="next"
+                path="/gnv/next.do"/>
+            <forward
                 name="selectfis"
                 path="/gnv/selectFis.do"/>
             <forward
@@ -250,6 +277,9 @@
             <forward
                 name="success"
                 path="/WEB-INF/jsp/mainlayout.jsp"/>
+           <forward
+               name="next"
+               path="/gnv/next.do"/>
             <forward
                 name="back"
                 path="/gnv/back.do"/>
--- a/gnv/src/main/webapp/WEB-INF/config/templates/describe-ui.xsl	Thu Jun 10 16:48:30 2010 +0000
+++ b/gnv/src/main/webapp/WEB-INF/config/templates/describe-ui.xsl	Thu Jun 10 22:01:23 2010 +0000
@@ -11,19 +11,45 @@
 
     <xsl:param name="example-linestring"/>
     <xsl:param name="example-polygon"/>
+    <xsl:param name="next-url">/gnv/next.do</xsl:param>
+    <xsl:param name="further">false</xsl:param>
+    <xsl:param name="exception"/>
+    <xsl:param name="gnviewer-select-button-src">./images/auswaehlen.png</xsl:param>
+
+    <xsl:template match="node()">
+        <div id="timeseriesfilter"> 
+            <form id="fisSelectionForm" 
+                  onsubmit="displayOverlay()" 
+                  action="{$next-url}" 
+                  method="post">
+                <fieldset>
+                    <xsl:if test="$exception != ''">
+                         <div class="inputException"><xsl:value-of select="$exception"/></div>
+                    </xsl:if>
+                    <xsl:apply-templates mode="basic"/>
+                    <h2>Here i am</h2>
+                    <h2>"<xsl:value-of select="$further"/>"</h2>
+                    <xsl:if test="$further = 'true'">
+                        <br/>
+                        <input style="margin-top: 5px;" type="image" src="{$gnviewer-select-button-src}"/>
+                    </xsl:if>
+                </fieldset>
+            </form>
+        </div>
+    </xsl:template>
 
     <!-- single select -->
-    <xsl:template match="xform:select1">
+    <xsl:template match="xform:select1" mode="basic">
         <xsl:variable name="selectName" select="@ref"/>
         <legend><xsl:value-of select="xform:label"/></legend>
         <select name="{$selectName}">
-            <xsl:apply-templates />
+            <xsl:apply-templates  mode="basic"/>
         </select>
     </xsl:template>
 
 
     <!-- multi select -->
-    <xsl:template match="xform:select">
+    <xsl:template match="xform:select" mode="basic">
         <xsl:variable name="selectName" select="@ref"/>
         <xsl:variable name="items" select="count(//xform:item)"/>
         <legend>
@@ -38,12 +64,12 @@
             </xsl:when>
             <xsl:when test="$items &lt; 5">
                 <select name="{$selectName}" multiple="multiple" size="{$items}">
-                    <xsl:apply-templates/>
+                    <xsl:apply-templates mode="basic"/>
                 </select>
             </xsl:when>
             <xsl:otherwise>
                 <select name="{$selectName}" multiple="multiple" size="5">
-                    <xsl:apply-templates />
+                    <xsl:apply-templates  mode="basic"/>
                 </select>
             </xsl:otherwise>
         </xsl:choose>
@@ -51,7 +77,7 @@
 
 
     <!-- options for select -->
-    <xsl:template match="xform:item">
+    <xsl:template match="xform:item" mode="basic">
         <xsl:variable name="optionValue" select="xform:value"/>
         <xsl:choose>
             <xsl:when test="@selected = 'true'">
@@ -77,7 +103,7 @@
 
 
 
-    <xsl:template match="xform:group">
+    <xsl:template match="xform:group" mode="basic">
         <xsl:variable name="selectcount" select="count(xform:select)"/>
 
         <legend>
@@ -87,7 +113,7 @@
         <xsl:choose>
             <xsl:when test="$selectcount &lt; '1'">
                 <table class="dynamic">
-                    <xsl:apply-templates/>
+                    <xsl:apply-templates mode="basic"/>
                 </table>
             </xsl:when>
             <xsl:otherwise>
@@ -152,7 +178,7 @@
     </xsl:template>
 
 
-    <xsl:template match="xform:input">
+    <xsl:template match="xform:input" mode="basic">
         <xsl:variable name="inputValue" select="xform:value"/>
         <xsl:variable name="inputName" select="@ref"/>
         <xsl:variable name="label" select="xform:label"/>
@@ -181,7 +207,7 @@
     </xsl:template>
 
 
-    <xsl:template match="xform:label">
+    <xsl:template match="xform:label" mode="basic">
         <!-- do nothing here -->
     </xsl:template>
 
--- a/gnv/src/main/webapp/WEB-INF/jsp/index.jsp	Thu Jun 10 16:48:30 2010 +0000
+++ b/gnv/src/main/webapp/WEB-INF/jsp/index.jsp	Thu Jun 10 22:01:23 2010 +0000
@@ -1,13 +1,10 @@
 <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
 <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean-el" prefix="bean-el" %>
-<%@page import="java.util.Collection"%>
 <%@page import="de.intevation.gnv.artifactdatabase.objects.ArtifactObject"%>
 <%@page import="de.intevation.gnv.action.CommunicationKeys"%>
 <%@page import="de.intevation.gnv.action.sessionmodel.SessionModel"%>
 <%@page import="de.intevation.gnv.action.sessionmodel.SessionModelFactory"%>
-<%@page import="java.util.Iterator"%>
 <%  
-    String exception       = (String)request.getAttribute(CommunicationKeys.REQUEST_EXCEPTION_INPUT_ID);
     SessionModel sm        = SessionModelFactory.getInstance().getSessionModel(request);
     Object ui              = request.getAttribute("ui");
     Object staticui        = request.getAttribute("staticui");
@@ -15,7 +12,6 @@
     Object statistic       = request.getAttribute("statistic");
     Object histogram       = request.getAttribute("histogram");
     Object wms_published   = request.getAttribute("wms_published");
-    boolean furthertargets = true;
 
     if (chart == null && statistic == null && histogram == null && wms_published == null) {
         boolean supportChart = sm.getOutputMode("chart") != null;
@@ -24,10 +20,6 @@
         }
     }
 
-    Object furthertargetsObject = request.getAttribute("furthertargets");
-    if (furthertargetsObject != null){
-        furthertargets = ((Boolean)furthertargetsObject).booleanValue();
-    }
 
     Object exceptionMessage = request.getAttribute(CommunicationKeys.REQUEST_EXCEPTION_MESSAGE_ID);
     exceptionMessage = (exceptionMessage != null ? exceptionMessage.toString().replaceAll(" ", ".").replaceAll(":",".").toLowerCase() : null);
@@ -94,24 +86,8 @@
                 <%}%>
 
                 <%-- render the dynamic part to feed the state and advance to the next state --%>
-                <%if (ui != null){%> 
-                    <div id="timeseriesfilter"> 
-                        <form id="fisSelectionForm" onsubmit="displayOverlay()" action="<%=response.encodeURL("next.do")%>" method="post">
-                           <fieldset>
-
-                            <%-- error message, if user input was not valid --%>
-                            <%if (exception != null) {%>
-                                <div class="inputException"><%=exception%></div>
-                            <%}%>
-                            <%=ui != null ? ui.toString().replaceAll("&nbsp;", "") : "" %>
-
-                            <%if(furthertargets){%>
-                                <br/>
-                                <input style="margin-top: 5px;" type="image" src="<bean:message key="gnviewer.select.button.src"/>"/>
-                            <%}%>
-                            </fieldset>
-                        </form>
-                    </div>
+                <%if (ui != null) { %>
+                     <%= ui.toString().replaceAll("&nbsp;", "") %>
                 <%}%>
 
                     <%-- render export options if existing for this state --%>
--- a/gnv/src/main/webapp/styles/gnv.css	Thu Jun 10 16:48:30 2010 +0000
+++ b/gnv/src/main/webapp/styles/gnv.css	Thu Jun 10 22:01:23 2010 +0000
@@ -117,6 +117,14 @@
 }
 
 /* Some classes for the content */
+a.linkButton {
+    border:          1px solid #000000;
+    color:           #ff6600;
+    font-size:       1.2em;
+    padding:         1px;
+    text-decoration: none;
+}
+
 #contentElement {
     float:  left;
     height: 90%;

http://dive4elements.wald.intevation.org