diff flys-client/src/main/java/de/intevation/flys/client/client/ui/DatacageTwinPanel.java @ 1298:b0ed67cb5197

Minor refactoring, improved displayed Strings in W-Diff branch. flys-client/trunk@2920 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Mon, 10 Oct 2011 10:02:16 +0000
parents d9cb362b8b34
children 18b0414bde44
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/DatacageTwinPanel.java	Mon Oct 10 09:31:08 2011 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/DatacageTwinPanel.java	Mon Oct 10 10:02:16 2011 +0000
@@ -68,11 +68,76 @@
     }
 
 
+    /**
+     * Remove first occurrence of "[" and "]" (if both do occur).
+     * @param value String to be stripped of [] (might be null).
+     * @return input string but with [ and ] removed, or input string if no
+     *         brackets were found.
+     * @see StringUtil.unbracket
+     */
+    public static final String unbracket(String value) {
+        // null- guard.
+        if (value == null) return value;
+
+        int start = value.indexOf("[");
+        int end   = value.indexOf("]");
+
+        if (start < 0 || end < 0) {
+            return value;
+        }
+
+        value = value.substring(start + 1, end);
+
+        return value;
+    }
+
+
+    /**
+     * 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) {
+        // TODO Construct "real" filter.
+        String[] parts = unbracket(from).split(";");
+        Recommendation.Filter filter = new Recommendation.Filter();
+        Recommendation.Facet  facet  = new Recommendation.Facet(
+                parts[1],
+                parts[2]);
+
+        List<Recommendation.Facet> facets = new ArrayList<Recommendation.Facet>
+            ();
+        facets.add(facet);
+        filter.add("longitudinal_section", facets);
+        Recommendation r = new Recommendation("waterlevel", parts[0],
+            this.artifact.getUuid(), filter);
+        return r; 
+    }
+
+
+    /**
+     * Add RecomendationPairRecords from input String to the ListGrid.
+     */
+    public void populateGridFromString(String from){
+        // Split this string.
+        // Create according recommendations and display strings.
+        String[] recs = from.split("#");
+        // TODO real name
+        if (recs.length % 2 != 0) return;
+        for (int i = 0; i < recs.length; i+=2) {
+            Recommendation minuend    = createRecommendationFromString(recs[i+0]);
+            Recommendation subtrahend = createRecommendationFromString(recs[i+1]);
+            RecommendationPairRecord pr = new RecommendationPairRecord(
+               "A", minuend, "B", subtrahend);
+            this.differencesList.addData(pr);
+        }
+    }
+
+
     @Override
     public Canvas create(DataList dataList) {
         GWT.log("createData()");
-        Data   data   = dataList.get(0);
-        this.dataName = data.getLabel();
 
         // TODO use i18n of data.
         Canvas label  = new Label("Subtrahend/Minuend");//data.getDescription());
@@ -91,6 +156,24 @@
         layout.setMembersMargin(10);
         this.helperContainer.addMember(helperLayout);
 
+        // Find old data, if any.
+        Data   data   = dataList.get(0);
+        // "diffids" data handling.
+        this.dataName = data.getLabel();
+        for (int i = 0; i < dataList.size(); i++) {
+            if (dataList.get(i) != null) {
+                if (dataList.get(i).getItems() != null) {
+                    populateGridFromString(dataList.get(i).getItems()[0].getStringValue());
+                }
+                else{
+                    System.out.println("DatacageTwinPanel: Datalist for item is null");
+                }
+            }
+            else{
+                System.out.println("DatacageTwinPanel: Data " + i + " is null (not displayable).");
+            }
+        }
+
         return layout;
     }
 
@@ -146,8 +229,8 @@
 
         Set<Recommendation> ar = new HashSet<Recommendation>();
         for (ListGridRecord record : records) {
-            DatacagePairWidget.RecommendationPairRecord r =
-                (DatacagePairWidget.RecommendationPairRecord) record;
+            RecommendationPairRecord r =
+                (RecommendationPairRecord) record;
             ar.add(r.getFirst());
             ar.add(r.getSecond());
         }

http://dive4elements.wald.intevation.org