teichmann@8025: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde teichmann@8025: * Software engineering by Intevation GmbH teichmann@8025: * teichmann@8025: * This file is Free Software under the GNU AGPL (>=v3) teichmann@8025: * and comes with ABSOLUTELY NO WARRANTY! Check out the teichmann@8025: * documentation coming with Dive4Elements River for details. teichmann@8025: */ teichmann@8025: teichmann@8025: package org.dive4elements.river.importer; teichmann@8025: teichmann@8025: import java.util.List; teichmann@8025: mschaefer@8986: import org.dive4elements.river.importer.common.StoreMode; teichmann@8025: import org.dive4elements.river.model.SedimentLoadLS; teichmann@8025: import org.dive4elements.river.model.SedimentLoadLSValue; mschaefer@8986: import org.hibernate.Query; mschaefer@8986: import org.hibernate.Session; teichmann@8025: teichmann@8025: teichmann@8025: public class ImportSedimentLoadLSValue { teichmann@8025: mschaefer@8986: private final Double station; mschaefer@8986: private final Double value; teichmann@8025: teichmann@8025: private SedimentLoadLSValue peer; teichmann@8025: teichmann@8025: mschaefer@8986: public ImportSedimentLoadLSValue(final Double station, final Double value) { teichmann@8025: this.station = station; teichmann@8025: this.value = value; teichmann@8025: } teichmann@8025: teichmann@8025: mschaefer@8986: public void storeDependencies(final SedimentLoadLS sedimentLoadLS, final StoreMode parentStoreMode) { mschaefer@8986: getPeer(sedimentLoadLS, parentStoreMode); teichmann@8025: } teichmann@8025: teichmann@8025: mschaefer@8986: public SedimentLoadLSValue getPeer(final SedimentLoadLS sedimentLoadLS, final StoreMode parentStoreMode) { mschaefer@8986: if (this.peer == null) { mschaefer@8986: List values; mschaefer@8986: final Session session = ImporterSession.getInstance().getDatabaseSession(); mschaefer@8986: if (parentStoreMode == StoreMode.INSERT) mschaefer@8986: values = null; mschaefer@8986: else { mschaefer@8986: final Query query = session.createQuery( mschaefer@8986: "from SedimentLoadLSValue where " + mschaefer@8986: " sedimentLoadLS=:sedimentLoadLS and " + mschaefer@8986: " station=:station and " + mschaefer@8986: " value=:value" mschaefer@8986: ); mschaefer@8986: query.setParameter("sedimentLoadLS", sedimentLoadLS); mschaefer@8986: query.setParameter("station", this.station); mschaefer@8986: query.setParameter("value", this.value); mschaefer@8986: values = query.list(); mschaefer@8986: } mschaefer@8986: if ((values == null) || values.isEmpty()) { mschaefer@8986: this.peer = new SedimentLoadLSValue(sedimentLoadLS, this.station, this.value); mschaefer@8986: session.save(this.peer); teichmann@8025: } teichmann@8025: else { mschaefer@8986: this.peer = values.get(0); teichmann@8025: } teichmann@8025: } teichmann@8025: mschaefer@8986: return this.peer; teichmann@8025: } teichmann@8025: } teichmann@8025: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :