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; ingo@2808: ingo@2809: import java.util.List; ingo@2809: ingo@2809: import org.apache.log4j.Logger; ingo@2809: ingo@2809: import org.hibernate.Session; ingo@2809: import org.hibernate.Query; ingo@2809: teichmann@5829: import org.dive4elements.river.model.ElevationModel; ingo@2808: ingo@2808: ingo@2808: public class ImportElevationModel { ingo@2808: ingo@2809: private static final Logger log = ingo@2809: Logger.getLogger(ImportElevationModel.class); ingo@2809: ingo@2808: protected String name; ingo@2808: ingo@2808: protected ImportUnit unit; ingo@2808: ingo@2809: protected ElevationModel peer; ingo@2809: ingo@2808: ingo@2808: public ImportElevationModel(String name, ImportUnit unit) { ingo@2808: this.name = name; ingo@2808: this.unit = unit; ingo@2808: } ingo@2809: ingo@2809: ingo@2809: public void storeDependencies() { ingo@2809: ElevationModel model = getPeer(); ingo@2809: } ingo@2809: ingo@2809: public ElevationModel getPeer() { ingo@3949: if (unit == null) { ingo@3949: log.warn("No elevation model specified."); ingo@3949: return null; ingo@3949: } sascha@3952: ingo@2809: if (peer == null) { tom@8856: Session session = ImporterSession.getInstance() tom@8856: .getDatabaseSession(); ingo@2809: Query query = session.createQuery( ingo@2809: "from ElevationModel where " + ingo@2809: "name=:name and unit=:unit"); ingo@2809: query.setParameter("name", name); ingo@2809: query.setParameter("unit", unit.getPeer()); ingo@2809: List models = query.list(); ingo@2809: ingo@2809: if (models.isEmpty()) { ingo@2809: log.info("Create new ElevationModel DB instance."); ingo@2809: ingo@2809: peer = new ElevationModel(name, unit.getPeer()); ingo@2809: session.save(peer); ingo@2809: } ingo@2809: else { ingo@2809: peer = models.get(0); ingo@2809: } ingo@2809: } ingo@2809: ingo@2809: return peer; ingo@2809: } ingo@2808: } ingo@2808: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :