diff artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/LoadSingleEpochSelectState.java @ 9245:f5cff8708531

bedheight datasource for salix.historical
author gernotbelger
date Wed, 11 Jul 2018 14:45:01 +0200
parents c3994657c15d
children 9e6b70cce337
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/LoadSingleEpochSelectState.java	Wed Jul 11 13:42:29 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/LoadSingleEpochSelectState.java	Wed Jul 11 14:45:01 2018 +0200
@@ -9,7 +9,10 @@
 package org.dive4elements.river.artifacts.uinfo.salix;
 
 import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
+import java.util.TreeMap;
 
 import org.apache.log4j.Logger;
 import org.dive4elements.artifacts.Artifact;
@@ -17,6 +20,8 @@
 import org.dive4elements.artifacts.common.utils.XMLUtils.ElementCreator;
 import org.dive4elements.river.artifacts.states.AddTableDataHelper;
 import org.dive4elements.river.artifacts.states.DefaultState;
+import org.dive4elements.river.artifacts.uinfo.UINFOArtifact;
+import org.dive4elements.river.model.BedHeight;
 import org.w3c.dom.Element;
 
 public class LoadSingleEpochSelectState extends DefaultState {
@@ -38,32 +43,12 @@
     @Override
     protected void appendItems(final Artifact artifact, final ElementCreator creator, final String name, final CallContext context, final Element select) {
         final String datakey = "singleepoch";
-        // TODO: MAKE DATASOURCE
+
         try {
             if (datakey.equals(name)) {
-
-                final AddTableDataHelper helper = new AddTableDataHelper(creator, select, "year", context.getMeta());
-
-                helper.addColumn(0, "pinfrom", "40", "common.client.ui.from", "ICON", "CENTER", "from");
-                helper.addColumn(1, "pinto", "40", "common.client.ui.to", "ICON", "CENTER", "to");
-                helper.addColumn(2, "year", "60", "year", "INTEGER", "LEFT", null);
-                helper.addColumn(3, "sounding", "200", "uinfo.salix.soundings", "STRING", "LEFT", null);
-                // final CollisionAccess access = new CollisionAccess((SINFOArtifact) artifact); // Der River wurde im vorigen State
-                // bereits gesetzt
-
-                // final List<Collision> collisions = CollisionHibernateFactory.getCollisionsByRiver(access.getRiver());
-                // for (final Collision coll : collisions) { // TODO: Filter on Range (?)
-                // final Integer year = coll.getYear();
-                // for (final Collision coll : collisions) {
-                for (int i = 0; i < 3; i++) {// : Collision.getYearsOfRiver(access.getRiver())) {
-                    // final Integer year = coll.getYear();
-                    final Map<String, String> row = new HashMap<>();
-                    row.put("year", String.valueOf(1995 + i)); // Nullpointer?
-                    row.put("sounding", "TODO: Peilungen für das Jahr in dieser Zelle auflisten.");
-                    helper.addRow(row);
-                }
-                // }
-                helper.submitMapToXml();
+                final SalixLineAccess access = new SalixLineAccess((UINFOArtifact) artifact);
+                final List<BedHeight> bhs = BedHeight.getBedHeightEpochs(access.getRiver(), access.getLowerKm(), access.getUpperKm());
+                makeDataSourceYearEpoch(artifact, creator, select, context, bhs);
             }
         }
         catch (
@@ -72,4 +57,34 @@
             iae.printStackTrace();
         }
     }
+
+    public static final void makeDataSourceYearEpoch(final Artifact artifact, final ElementCreator creator, final Element select, final CallContext context,
+            final List<BedHeight> bedheights) { // TODO: maybe move to appropriate helper...
+
+        final AddTableDataHelper helper = new AddTableDataHelper(creator, select, "year", context.getMeta());
+
+        helper.addColumn(0, "pinfrom", "40", "common.client.ui.from", "ICON", "CENTER", "from");
+        helper.addColumn(1, "year", "60", "year", "INTEGER", "LEFT", null);
+        helper.addColumn(2, "sounding", "500", "uinfo.salix.soundings", "STRING", "LEFT", null);
+
+        final TreeMap<Integer, String> bedHeightSorted = new TreeMap<>();
+
+        for (final BedHeight bh : bedheights) {
+            final int year = bh.getYear();
+            final String soundings = bedHeightSorted.containsKey(year) ? bedHeightSorted.get(year) + ", " : "";
+            bedHeightSorted.put(year, soundings + bh.getDescription());
+        }
+        final Iterator<Integer> iterator = bedHeightSorted.keySet().iterator();
+        while (iterator.hasNext()) {
+            final int year = iterator.next();
+            final String soundings = bedHeightSorted.get(year);
+            final Map<String, String> row = new HashMap<>();
+            row.put("year", String.valueOf(year));
+            row.put("sounding", soundings);
+            helper.addRow(row);
+        }
+
+        helper.submitMapToXml();
+    }
+
 }

http://dive4elements.wald.intevation.org