Mercurial > dive4elements > river
view backend/src/main/java/org/dive4elements/river/importer/sinfo/importitem/TkhColumnSeriesImport.java @ 9655:1f57381b3bb5
Importer (s/u-info) extensions: uniform formatting of from-to series names,
warning instead of cancelling in case of missing tkh column values,
detecting, logging and skipping columns with wrong unit
author | mschaefer |
---|---|
date | Mon, 23 Mar 2020 15:16:35 +0100 |
parents | 50416a0df385 |
children |
line wrap: on
line source
/* Copyright (C) 2017 by Bundesanstalt für Gewässerkunde * Software engineering by * Björnsen Beratende Ingenieure GmbH * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt * * This file is Free Software under the GNU AGPL (>=v3) * and comes with ABSOLUTELY NO WARRANTY! Check out the * documentation coming with Dive4Elements River for details. */ package org.dive4elements.river.importer.sinfo.importitem; import java.io.File; import java.util.List; import org.apache.log4j.Logger; import org.dive4elements.river.importer.common.AbstractSeriesImport; import org.dive4elements.river.model.River; import org.dive4elements.river.model.sinfo.TkhColumn; import org.dive4elements.river.model.sinfo.TkhValue; import org.hibernate.Query; import org.hibernate.Session; /** * Imported TKH data series of a river * * @author Matthias Schäfer * */ public class TkhColumnSeriesImport extends AbstractSeriesImport<TkhColumn, TkhValue, TkhKmLineImport> { /***** FIELDS *****/ private static Logger log = Logger.getLogger(TkhColumnSeriesImport.class); private int year; private String sounding_info; private String evaluation_by; private final TkhSeriesImport parent; private final String colName; private final File relativeFilePath; /***** CONSTRUCTORS *****/ public TkhColumnSeriesImport(final String filename) { this(filename, null, null, null); } public TkhColumnSeriesImport(final String filename, final TkhSeriesImport parent, final String colName, final File relativeFilePath) { super(filename); this.parent = parent; 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; } /***** METHODS *****/ public int getYear() { return this.year; } public void setYear(final int year) { this.year = year; } public String getSounding_info() { return this.sounding_info; } public void setSounding_info(final String sounding_info) { this.sounding_info = sounding_info; } public String getEvaluation_by() { return this.evaluation_by; } public void setEvaluation_by(final String evaluation_by) { this.evaluation_by = evaluation_by; } @Override public Logger getLog() { return log; } private List<TkhColumn> querySeriesItem(final Session session, final River river) { final Query query = session.createQuery("FROM TkhColumn WHERE tkh=:parent AND lower(name)=:colname"); query.setParameter("parent", this.parent.getPeer(river)); query.setParameter("colname", this.colName.toLowerCase()); return query.list(); } @Override public List<TkhColumn> querySeriesItem(final Session session, final River river, final boolean doQueryParent) { final Query query = session.createQuery("FROM TkhColumn c INNER JOIN c.tkh 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 TkhColumn createSeriesItem(final River river) { return new TkhColumn(this.parent.getPeer(river), this.colName); } @Override protected void logStoreInfo() { getLog().info(String.format("Store series column '%s':;'%s'", this.colName, this.relativeFilePath)); } }