ingo@2850: package de.intevation.flys.importer; ingo@2850: ingo@2850: import java.util.ArrayList; ingo@2850: import java.util.List; ingo@2850: ingo@2850: import org.apache.log4j.Logger; ingo@2850: ingo@2850: import org.hibernate.Session; ingo@2850: import org.hibernate.Query; ingo@2850: ingo@2850: import de.intevation.flys.model.WaterlevelDifference; ingo@2850: import de.intevation.flys.model.WaterlevelDifferenceColumn; ingo@2850: ingo@2850: ingo@2850: public class ImportWaterlevelDifferenceColumn { ingo@2850: ingo@2850: private static final Logger log = ingo@2850: Logger.getLogger(ImportWaterlevelDifferenceColumn.class); ingo@2850: ingo@2850: ingo@2850: private String description; ingo@2850: ingo@2850: private List values; ingo@2850: ingo@2850: private WaterlevelDifferenceColumn peer; ingo@2850: ingo@2850: ingo@2850: public ImportWaterlevelDifferenceColumn(String description) { ingo@2850: this.values = new ArrayList(); ingo@2850: ingo@2850: this.description = description; ingo@2850: } ingo@2850: ingo@2850: felix@5228: public String getDescription() { felix@5228: return description; felix@5228: } felix@5228: felix@5228: ingo@2850: public void addValue(ImportWaterlevelDifferenceValue value) { ingo@2850: this.values.add(value); ingo@2850: } ingo@2850: felix@5228: public List getValues() { felix@5228: return values; felix@5228: } ingo@2850: ingo@2850: public void storeDependencies(WaterlevelDifference difference) { ingo@2850: log.info("store dependencies"); ingo@2850: ingo@2850: WaterlevelDifferenceColumn peer = getPeer(difference); ingo@2850: ingo@2850: int i = 0; ingo@2850: ingo@2850: for (ImportWaterlevelDifferenceValue value: values) { ingo@2850: value.storeDependencies(peer); ingo@2850: i++; ingo@2850: } ingo@2850: ingo@2850: log.info("stored " + i + " waterlevel difference values"); ingo@2850: } ingo@2850: ingo@2850: ingo@2850: public WaterlevelDifferenceColumn getPeer(WaterlevelDifference diff) { ingo@2850: if (peer == null) { ingo@2850: Session session = ImporterSession.getInstance().getDatabaseSession(); ingo@2850: Query query = session.createQuery( ingo@2850: "from WaterlevelDifferenceColumn where " + ingo@2850: " difference=:difference and " + ingo@2850: " description=:description" ingo@2850: ); ingo@2850: ingo@2850: query.setParameter("difference", diff); ingo@2850: query.setParameter("description", description); ingo@2850: ingo@2850: List cols = query.list(); ingo@2850: if (cols.isEmpty()) { ingo@2850: peer = new WaterlevelDifferenceColumn(diff, description); ingo@2850: session.save(peer); ingo@2850: } ingo@2850: else { ingo@2850: peer = cols.get(0); ingo@2850: } ingo@2850: } ingo@2850: ingo@2850: return peer; ingo@2850: } ingo@2850: } ingo@2850: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :