ingo@2819: package de.intevation.flys.importer; ingo@2819: ingo@2819: import java.util.ArrayList; ingo@2819: import java.util.List; ingo@2819: ingo@2819: import org.apache.log4j.Logger; ingo@2819: ingo@2819: import org.hibernate.Session; ingo@2819: import org.hibernate.Query; ingo@2819: ingo@2819: import de.intevation.flys.model.MorphologicalWidth; ingo@2819: import de.intevation.flys.model.River; ingo@2819: ingo@2819: ingo@2819: public class ImportMorphWidth { ingo@2819: ingo@2819: private static Logger log = Logger.getLogger(ImportMorphWidth.class); ingo@2819: ingo@2819: ingo@2819: protected MorphologicalWidth peer; ingo@2819: ingo@2819: protected ImportUnit unit; ingo@2819: ingo@2819: protected List values; ingo@2819: ingo@2819: ingo@2819: public ImportMorphWidth(ImportUnit unit) { ingo@2819: this.unit = unit; ingo@2819: this.values = new ArrayList(); ingo@2819: } ingo@2819: ingo@2819: ingo@2819: public void addValue(ImportMorphWidthValue value) { ingo@2819: this.values.add(value); ingo@2819: } ingo@2819: ingo@2819: ingo@2819: public void storeDependencies(River river) { ingo@2819: log.info("store dependencies"); ingo@2819: ingo@2819: MorphologicalWidth peer = getPeer(river); ingo@2819: ingo@2819: log.info("store morphological width values"); ingo@2819: ingo@2819: for (ImportMorphWidthValue value: values) { ingo@2819: value.storeDependencies(peer); ingo@2819: } ingo@2819: } ingo@2819: ingo@2819: ingo@2819: public MorphologicalWidth getPeer(River river) { ingo@2819: log.info("get peer"); ingo@2819: ingo@2819: if (peer == null) { ingo@2819: Session session = ImporterSession.getInstance().getDatabaseSession(); ingo@2819: ingo@2819: Query query = session.createQuery( ingo@2819: "from MorphologicalWidth where " + ingo@2819: " river=:river and " + ingo@2819: " unit=:unit"); ingo@2819: ingo@2819: query.setParameter("river", river); ingo@2819: query.setParameter("unit", unit.getPeer()); ingo@2819: ingo@2819: List widths = query.list(); ingo@2819: ingo@2819: if (widths.isEmpty()) { ingo@2819: log.debug("Create new MorphologicalWidth DB instance."); ingo@2819: ingo@2819: peer = new MorphologicalWidth(river, unit.getPeer()); ingo@2819: ingo@2819: session.save(peer); ingo@2819: } ingo@2819: else { ingo@2819: peer = widths.get(0); ingo@2819: } ingo@2819: } ingo@2819: ingo@2819: return peer; ingo@2819: } ingo@2819: } ingo@2819: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :