# HG changeset patch # User Sascha L. Teichmann # Date 1405008128 -7200 # Node ID cdb9f6d97f6aa3fca8d6745781362b8ea80cd47a # Parent aa054f72e88705d4a728724d29551e8ef72fe869 Added method to importer session to fetch the measurement station for given (river, km). diff -r aa054f72e887 -r cdb9f6d97f6a backend/src/main/java/org/dive4elements/river/importer/ImportMeasurementStation.java --- a/backend/src/main/java/org/dive4elements/river/importer/ImportMeasurementStation.java Thu Jul 10 16:57:32 2014 +0200 +++ b/backend/src/main/java/org/dive4elements/river/importer/ImportMeasurementStation.java Thu Jul 10 18:02:08 2014 +0200 @@ -40,6 +40,10 @@ public ImportMeasurementStation() { } + public ImportMeasurementStation(MeasurementStation peer) { + this.peer = peer; + } + private Gauge getGaugeFromDB() { Session session = ImporterSession.getInstance().getDatabaseSession(); @@ -53,9 +57,7 @@ } public boolean storeDependencies(River river) { - getPeer(river); - - return peer != null; + return getPeer(river) != null; } public MeasurementStation getPeer(River river) { diff -r aa054f72e887 -r cdb9f6d97f6a backend/src/main/java/org/dive4elements/river/importer/ImporterSession.java --- a/backend/src/main/java/org/dive4elements/river/importer/ImporterSession.java Thu Jul 10 16:57:32 2014 +0200 +++ b/backend/src/main/java/org/dive4elements/river/importer/ImporterSession.java Thu Jul 10 18:02:08 2014 +0200 @@ -8,8 +8,10 @@ package org.dive4elements.river.importer; +import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; +import java.util.List; import java.util.Map; import java.util.TreeMap; import java.math.BigDecimal; @@ -17,22 +19,20 @@ import org.hibernate.SessionFactory; import org.hibernate.Session; import org.hibernate.Query; -import org.hibernate.FlushMode; import org.dive4elements.river.backend.SessionFactoryProvider; import org.dive4elements.river.model.GrainFraction; +import org.dive4elements.river.model.MeasurementStation; import org.dive4elements.river.model.WstColumnValue; import org.dive4elements.river.model.WstColumn; import org.dive4elements.river.model.DischargeTableValue; import org.dive4elements.river.model.DischargeTable; import org.dive4elements.river.model.Range; import org.dive4elements.river.model.River; -import org.apache.log4j.Logger; +import org.dive4elements.river.utils.EpsilonComparator; import org.dive4elements.artifacts.common.utils.LRUCache; public class ImporterSession { - private static Logger log = Logger.getLogger(ImporterSession.class); - private static final ThreadLocal SESSION = new ThreadLocal() { @Override @@ -43,17 +43,20 @@ protected Session databaseSession; - protected LRUCache> + private LRUCache> wstColumnValues; - protected LRUCache> + private LRUCache> dischargeTableValues; - protected LRUCache> + private LRUCache> ranges; private Map grainFractions; + private Map>> + riversToMeasurementStations; + public static ImporterSession getInstance() { return SESSION.get(); } @@ -202,5 +205,34 @@ return range; } + + public List getMeasurementStations(String river, double station) { + if (riversToMeasurementStations == null) { + riversToMeasurementStations = + new HashMap>>(); + } + + Map> km2Stations = + riversToMeasurementStations.get(river); + if (km2Stations == null) { + km2Stations = + new TreeMap>(EpsilonComparator.CMP); + riversToMeasurementStations.put(river, km2Stations); + Query query = databaseSession.createQuery( + "from MeasurementStation where river.name = :name"); + query.setParameter("name", river); + for (Iterator iter = query.iterate(); iter.hasNext();) { + MeasurementStation st = (MeasurementStation)iter.next(); + List ms = km2Stations.get(st.getStation()); + if (ms == null) { + ms = new ArrayList(2); + km2Stations.put(st.getStation(), ms); + } + ms.add(st); + } + + } + return km2Stations.get(station); + } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :