teichmann@5844: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde teichmann@5844: * Software engineering by Intevation GmbH teichmann@5844: * teichmann@5992: * This file is Free Software under the GNU AGPL (>=v3) teichmann@5844: * and comes with ABSOLUTELY NO WARRANTY! Check out the teichmann@5992: * documentation coming with Dive4Elements River for details. teichmann@5844: */ teichmann@5844: teichmann@5829: package org.dive4elements.river.importer; sascha@196: mschaefer@8986: import java.util.List; mschaefer@8986: mschaefer@8986: import org.dive4elements.river.importer.common.StoreMode; mschaefer@8986: import org.dive4elements.river.model.River; mschaefer@8986: import org.dive4elements.river.model.WstColumn; teichmann@5829: import org.dive4elements.river.model.WstColumnQRange; teichmann@5829: import org.dive4elements.river.model.WstQRange; mschaefer@8986: import org.hibernate.Query; sascha@201: import org.hibernate.Session; sascha@196: sascha@196: public class ImportWstColumnQRange sascha@196: { sascha@201: protected ImportWstColumn wstColumn; sascha@201: protected ImportWstQRange qRange; sascha@201: mschaefer@8986: protected StoreMode storeMode; mschaefer@8986: sascha@196: protected WstColumnQRange peer; sascha@196: sascha@196: public ImportWstColumnQRange() { sascha@196: } sascha@196: sascha@201: public ImportWstColumnQRange( mschaefer@8986: final ImportWstColumn wstColumn, mschaefer@8986: final ImportWstQRange qRange mschaefer@8986: ) { sascha@201: this.wstColumn = wstColumn; sascha@201: this.qRange = qRange; mschaefer@8986: this.storeMode = StoreMode.NONE; sascha@201: } sascha@201: sascha@201: public ImportWstColumn getWstColumn() { mschaefer@8986: return this.wstColumn; sascha@201: } sascha@201: mschaefer@8986: public void setWstColumn(final ImportWstColumn wstColumn) { sascha@201: this.wstColumn = wstColumn; sascha@201: } sascha@201: sascha@201: public ImportWstQRange getQRange() { mschaefer@8986: return this.qRange; sascha@201: } sascha@201: mschaefer@8986: public void setQRange(final ImportWstQRange qRange) { sascha@201: this.qRange = qRange; sascha@201: } sascha@201: mschaefer@8986: public WstColumnQRange getPeer(final River river) { mschaefer@8986: if (this.peer == null) { mschaefer@8986: final WstColumn c = this.wstColumn.getPeer(river); mschaefer@8986: final WstQRange q = this.qRange.getPeer(river); mschaefer@8986: List cols; mschaefer@8986: final Session session = ImporterSession.getInstance() mschaefer@8986: .getDatabaseSession(); mschaefer@8986: if (this.wstColumn.storeMode == StoreMode.INSERT) mschaefer@8986: cols = null; mschaefer@8986: else { mschaefer@8986: final Query query = session.createQuery( mschaefer@8986: "from WstColumnQRange where " + mschaefer@8986: "wstColumn=:c and wstQRange=:q"); mschaefer@8986: query.setParameter("c", c); mschaefer@8986: query.setParameter("q", q); mschaefer@8986: cols = query.list(); mschaefer@8986: } mschaefer@8986: if ((cols == null) || cols.isEmpty()) { mschaefer@8986: this.peer = new WstColumnQRange(c, q); mschaefer@8986: session.save(this.peer); mschaefer@8986: this.storeMode = StoreMode.INSERT; sascha@201: } sascha@201: else { mschaefer@8986: this.peer = cols.get(0); mschaefer@8986: this.storeMode = StoreMode.UPDATE; sascha@201: } sascha@196: } mschaefer@8986: return this.peer; sascha@196: } sascha@196: } sascha@196: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :