diff backend/src/main/java/org/dive4elements/river/importer/sinfo/importitem/FlowDepthColumnSeriesImport.java @ 9656:31549fdfaf4f

Importer (s/u-info) extensions: flow-depth: uniform formatting of from-to series names, warning instead of cancelling in case of missing column values, detecting, logging and skipping columns with wrong unit, better counting of inserted/updated values for each column
author mschaefer
date Mon, 23 Mar 2020 15:21:39 +0100
parents 50416a0df385
children
line wrap: on
line diff
--- a/backend/src/main/java/org/dive4elements/river/importer/sinfo/importitem/FlowDepthColumnSeriesImport.java	Mon Mar 23 15:16:35 2020 +0100
+++ b/backend/src/main/java/org/dive4elements/river/importer/sinfo/importitem/FlowDepthColumnSeriesImport.java	Mon Mar 23 15:21:39 2020 +0100
@@ -18,7 +18,7 @@
 import org.dive4elements.river.model.River;
 import org.dive4elements.river.model.sinfo.FlowDepthColumn;
 import org.dive4elements.river.model.sinfo.FlowDepthValue;
-import org.hibernate.SQLQuery;
+import org.hibernate.Query;
 import org.hibernate.Session;
 
 /**
@@ -55,7 +55,11 @@
     public FlowDepthColumnSeriesImport(final String filename, final FlowDepthSeriesImport parent, final String colName, final File relativeFilePath) {
         super(filename);
         this.parent = parent;
-        this.colName = colName;
+        final String[] items = (colName == null) ? new String[] {} : colName.split("\\-");
+        if (items.length == 2)
+            this.colName = items[0].trim() + " - " + items[1].trim();
+        else
+            this.colName = colName;
         this.relativeFilePath = relativeFilePath;
     }
 
@@ -91,20 +95,22 @@
         return log;
     }
 
-    @Override
-    public List<FlowDepthColumn> querySeriesItem(final Session session, final River river) {
-        /*
-         * final Query query = session.createQuery("FROM FlowDepthColumn WHERE (FlowDepth=:parent) AND lower(name)=:colname");
-         * query.setParameter("parent", this.parent.getPeer(river));
-         * query.setParameter("colname", this.colName.toLowerCase());
-         */
-        // FIXME the normal query raises a null pointer exception
-        final SQLQuery query = session.createSQLQuery("SELECT * FROM flow_depth_column WHERE (flow_depth_id=:parent) AND (lower(name)=:colname)");
-        query.setParameter("parent", this.parent.getPeer(river).getId());
+    private List<FlowDepthColumn> querySeriesItem(final Session session, final River river) {
+        final Query query = session.createQuery("FROM FlowDepthColumn WHERE flowDepth=:parent AND lower(name)=:colname");
+        query.setParameter("parent", this.parent.getPeer(river));
         query.setParameter("colname", this.colName.toLowerCase());
         return query.list();
     }
 
+    @Override
+    public List<FlowDepthColumn> querySeriesItem(final Session session, final River river, final boolean doQueryParent) {
+        final Query query = session.createQuery("FROM FlowDepthColumn c INNER JOIN c.flowDepth s"
+                + " WHERE s.river=:river AND lower(s.filename)=:filename AND lower(c.name)=:colname");
+        query.setParameter("river", river);
+        query.setParameter("filename", this.filename.toLowerCase());
+        query.setParameter("colname", this.colName.toLowerCase());
+        return query.list();
+    }
 
     @Override
     public FlowDepthColumn createSeriesItem(final River river) {

http://dive4elements.wald.intevation.org