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@1218: teichmann@5829: import org.dive4elements.river.model.HYK; teichmann@5829: import org.dive4elements.river.model.River; sascha@1218: sascha@1218: import java.util.List; sascha@1218: import java.util.ArrayList; sascha@1218: sascha@1218: import org.hibernate.Session; sascha@1218: import org.hibernate.Query; sascha@1218: sascha@1224: import org.apache.log4j.Logger; sascha@1224: sascha@1218: public class ImportHYK sascha@1218: { sascha@1224: private static Logger log = Logger.getLogger(ImportHYK.class); sascha@1224: sascha@1218: protected ImportRiver river; sascha@1218: protected String description; sascha@1218: sascha@1218: protected List entries; sascha@1218: sascha@1218: protected HYK peer; sascha@1218: sascha@1218: public ImportHYK() { sascha@1218: entries = new ArrayList(); sascha@1218: } sascha@1218: sascha@1218: public ImportHYK(ImportRiver river, String description) { sascha@1218: this(); sascha@1218: this.river = river; sascha@1218: this.description = description; sascha@1218: } sascha@1218: sascha@1219: public ImportRiver getRiver() { sascha@1219: return river; sascha@1219: } sascha@1219: sascha@1219: public void setRiver(ImportRiver river) { sascha@1219: this.river = river; sascha@1219: } sascha@1219: sascha@1218: public void addEntry(ImportHYKEntry entry) { sascha@1218: entries.add(entry); sascha@1218: entry.setHYK(this); sascha@1218: } sascha@1218: sascha@1221: public void storeDependencies() { sascha@1224: log.info("store HYK '" + description + "'"); sascha@1221: getPeer(); sascha@1224: for (int i = 0, N = entries.size(); i < N; ++i) { sascha@1224: ImportHYKEntry entry = entries.get(i); sascha@1224: log.info(" store km " + entry.getKm() + sascha@1224: " (" + (i+1) + " of " + N + ")"); sascha@1221: entry.storeDependencies(); sascha@1221: } sascha@1221: } sascha@1221: sascha@1218: public HYK getPeer() { sascha@1218: if (peer == null) { sascha@1218: River r = river.getPeer(); sascha@1218: Session session = ImporterSession.getInstance() sascha@1218: .getDatabaseSession(); sascha@1218: Query query = session.createQuery( sascha@1218: "from HYK where river=:river and description=:description"); sascha@1218: query.setParameter("river", r); sascha@1218: query.setParameter("description", description); sascha@1218: List hyks = query.list(); sascha@1218: if (hyks.isEmpty()) { sascha@1218: peer = new HYK(r, description); sascha@1218: session.save(peer); sascha@1218: } sascha@1218: else { sascha@1218: peer = hyks.get(0); sascha@1218: } sascha@1218: } sascha@1218: return peer; sascha@1218: } sascha@1218: } sascha@1218: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :