teichmann@5829: package org.dive4elements.river.importer; sascha@195: sascha@195: import java.util.List; sascha@195: sascha@195: import java.math.BigDecimal; sascha@195: teichmann@5829: import org.dive4elements.river.model.MainValue; teichmann@5829: import org.dive4elements.river.model.Gauge; teichmann@5829: import org.dive4elements.river.model.River; teichmann@5829: import org.dive4elements.river.model.NamedMainValue; teichmann@5829: import org.dive4elements.river.model.TimeInterval; sascha@195: sascha@195: import org.hibernate.Session; sascha@195: import org.hibernate.Query; sascha@195: sascha@195: public class ImportMainValue sascha@195: { sascha@195: protected ImportGauge gauge; sascha@195: protected ImportNamedMainValue mainValue; sascha@195: protected BigDecimal value; teichmann@5735: protected ImportTimeInterval timeInterval; sascha@195: sascha@195: protected MainValue peer; sascha@195: sascha@195: public ImportMainValue() { sascha@195: } sascha@195: sascha@195: public ImportMainValue( sascha@195: ImportGauge gauge, sascha@195: ImportNamedMainValue mainValue, teichmann@5735: BigDecimal value, teichmann@5735: ImportTimeInterval timeInterval sascha@195: ) { teichmann@5735: this.gauge = gauge; teichmann@5735: this.mainValue = mainValue; teichmann@5735: this.value = value; teichmann@5735: this.timeInterval = timeInterval; sascha@195: } sascha@195: sascha@195: public ImportGauge getGauge() { sascha@195: return gauge; sascha@195: } sascha@195: sascha@195: public void setGauge(ImportGauge gauge) { sascha@195: this.gauge = gauge; sascha@195: } sascha@195: sascha@195: public ImportNamedMainValue getMainValue() { sascha@195: return mainValue; sascha@195: } sascha@195: sascha@195: public void setMainValue(ImportNamedMainValue mainValue) { sascha@195: this.mainValue = mainValue; sascha@195: } sascha@195: sascha@195: public BigDecimal getValue() { sascha@195: return value; sascha@195: } sascha@195: sascha@195: public void setValue(BigDecimal value) { sascha@195: this.value = value; sascha@195: } sascha@195: sascha@195: public MainValue getPeer(River river) { sascha@195: if (peer == null) { sascha@497: Session session = ImporterSession.getInstance().getDatabaseSession(); sascha@195: Query query = session.createQuery("from MainValue where " sascha@195: + "gauge.id=:gauge_id and mainValue.id=:name_id " teichmann@5735: + "and timeInterval = :time " sascha@195: + "and value=:value"); sascha@195: Gauge g = gauge.getPeer(river); sascha@195: NamedMainValue n = mainValue.getPeer(); teichmann@5735: TimeInterval t = timeInterval != null teichmann@5735: ? timeInterval.getPeer() teichmann@5735: : null; sascha@195: query.setParameter("gauge_id", g.getId()); sascha@195: query.setParameter("name_id", n.getId()); sascha@195: query.setParameter("value", value); teichmann@5735: query.setParameter("time", t); sascha@195: List values = query.list(); sascha@195: if (values.isEmpty()) { sascha@195: peer = new MainValue(g, n, value, null); sascha@195: session.save(peer); sascha@195: } sascha@195: else { sascha@195: peer = values.get(0); sascha@195: } sascha@195: } sascha@195: return peer; sascha@195: } sascha@195: } sascha@195: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :