Mercurial > dive4elements > river
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) {