diff gwt-client/src/main/java/org/dive4elements/river/client/client/ui/DatacageTwinPanel.java @ 8719:36f52c80b7ac

Deduplicate W / BedHeight Difference selection panel code
author Andre Heinecke <andre.heinecke@intevation.de>
date Mon, 27 Apr 2015 14:50:38 +0200
parents 5dfb3ff98bc6
children 8f6d6d26e96f 5e38e2924c07
line wrap: on
line diff
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/DatacageTwinPanel.java	Mon Apr 27 12:48:41 2015 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/DatacageTwinPanel.java	Mon Apr 27 14:50:38 2015 +0200
@@ -113,11 +113,10 @@
 
     /**
      * Create a recommendation from a string representation of it.
-     * @TODO describe format of input string
      * @param from string in format as shown above.
      * @return recommendation from input string.
      */
-    public Recommendation createRecommendationFromString(String from) {
+    public Recommendation createRecommendationFromString(String from, String factory) {
         // TODO Construct "real" filter.
         String[] parts = unbracket(from).split(";");
         Recommendation.Filter filter = new Recommendation.Filter();
@@ -129,7 +128,7 @@
             ();
         facets.add(facet);
         filter.add("longitudinal_section", facets);
-        Recommendation r = new Recommendation("waterlevel", parts[0],
+        Recommendation r = new Recommendation(factory, parts[0],
             this.artifact.getUuid(), filter);
         r.setDisplayName(parts[3]);
         return r;
@@ -139,16 +138,16 @@
     /**
      * Add RecomendationPairRecords from input String to the ListGrid.
      */
-    public void populateGridFromString(String from){
+    public void populateGridFromString(String from, String factory){
         // Split this string.
         // Create according recommendations and display strings.
         String[] recs = from.split("#");
         if (recs.length % 2 != 0) return;
         for (int i = 0; i < recs.length; i+=2) {
             Recommendation minuend =
-                createRecommendationFromString(recs[i+0]);
+                createRecommendationFromString(recs[i+0], factory);
             Recommendation subtrahend =
-                createRecommendationFromString(recs[i+1]);
+                createRecommendationFromString(recs[i+1], factory);
 
             RecommendationPairRecord pr = new RecommendationPairRecord(
                 minuend, subtrahend);
@@ -182,19 +181,22 @@
         layout.setMembersMargin(10);
         this.helperContainer.addMember(helperLayout);
 
-        // Find old data, if any, handle "diffids".
+        populateGrid(dataList, "waterlevel");
+        return layout;
+    }
+
+    protected void populateGrid(DataList dataList, String factory) {
         Data data     = dataList.get(0);
         this.dataName = data.getLabel();
         for (int i = 0; i < dataList.size(); i++) {
             if (dataList.get(i) != null && dataList.get(i).getItems() != null) {
                 if (dataList.get(i).getItems() != null) {
                     populateGridFromString(
-                        dataList.get(i).getItems()[0].getStringValue());
+                        dataList.get(i).getItems()[0].getStringValue(),
+                        factory);
                 }
             }
         }
-
-        return layout;
     }
 
 
@@ -339,7 +341,6 @@
 
                 Recommendation secondR = r.getSecond();
                 adjustRecommendation(secondR);
-
                 ar.add(firstR);
                 ar.add(secondR);
             }
@@ -468,14 +469,20 @@
     }
 
 
+    protected String createDataString(String artifact, Recommendation recommendation) {
+        return createDataString(artifact, recommendation, "staticwkms");
+    }
+
     /**
      * Creates part of the String that encodes minuend or subtrahend.
      * @param artifact Artifacts UUID.
      * @param recommendation Recommendation to wrap in string.
+     * @param factory The factory to encode.
      */
     protected String createDataString(
         String artifact,
-        Recommendation recommendation)
+        Recommendation recommendation,
+        String factory)
     {
         Filter filter = recommendation.getFilter();
         Facet  f      = null;
@@ -503,7 +510,7 @@
         else {
             return "["
                 + artifact
-                + ";staticwkms;0;"
+                + ";" + factory + ";0;"
                 + recommendation.getDisplayName() + "]";
         }
     }

http://dive4elements.wald.intevation.org