sascha@196: package de.intevation.flys.importer; sascha@196: sascha@201: import de.intevation.flys.model.Wst; sascha@196: import de.intevation.flys.model.WstColumn; sascha@201: import de.intevation.flys.model.River; sascha@2357: import de.intevation.flys.model.TimeInterval; sascha@201: sascha@201: import org.hibernate.Session; sascha@201: import org.hibernate.Query; sascha@201: sascha@201: import java.util.List; sascha@201: import java.util.ArrayList; sascha@196: sascha@202: import java.math.BigDecimal; sascha@202: sascha@499: import org.apache.log4j.Logger; sascha@499: felix@5000: felix@5000: /** Unmapped column of a WST. */ sascha@196: public class ImportWstColumn sascha@196: { sascha@499: private static Logger log = Logger.getLogger(ImportWstColumn.class); sascha@499: sascha@201: protected ImportWst wst; sascha@201: protected String name; sascha@201: protected String description; sascha@471: protected Integer position; sascha@201: sascha@2357: protected ImportTimeInterval timeInterval; sascha@2357: sascha@201: protected List columnQRanges; sascha@202: protected List columnValues; sascha@201: sascha@196: protected WstColumn peer; sascha@196: sascha@196: public ImportWstColumn() { sascha@201: columnQRanges = new ArrayList(); sascha@202: columnValues = new ArrayList(); sascha@196: } sascha@196: sascha@201: public ImportWstColumn( sascha@201: ImportWst wst, sascha@201: String name, sascha@471: String description, sascha@497: Integer position sascha@201: ) { sascha@201: this(); sascha@201: this.wst = wst; sascha@201: this.name = name; sascha@201: this.description = description; sascha@471: this.position = position; sascha@201: } sascha@201: sascha@201: public ImportWst getWst() { sascha@201: return wst; sascha@201: } sascha@201: sascha@201: public void setWst(ImportWst wst) { sascha@201: this.wst = wst; sascha@201: } sascha@201: sascha@201: public String getName() { sascha@201: return name; sascha@201: } sascha@201: sascha@201: public void setName(String name) { sascha@201: this.name = name; sascha@201: } sascha@201: sascha@201: public String getDescription() { sascha@201: return description; sascha@201: } sascha@201: sascha@201: public void setDescription(String description) { sascha@201: this.description = description; sascha@201: } sascha@201: sascha@471: public Integer getPosition() { sascha@471: return position; sascha@471: } sascha@471: sascha@471: public void setPosition(Integer position) { sascha@471: this.position = position; sascha@471: } sascha@471: sascha@202: public void addColumnValue(BigDecimal position, BigDecimal w) { sascha@202: columnValues.add( sascha@497: new ImportWstColumnValue(this, position, w)); sascha@202: } sascha@202: sascha@201: public void addColumnQRange(ImportWstQRange columnQRange) { sascha@201: columnQRanges.add( sascha@201: new ImportWstColumnQRange(this, columnQRange)); sascha@201: } sascha@201: felix@5237: felix@5237: /** Get the Column Values stored in this column. */ felix@5237: public List getColumnValues() { felix@5237: return columnValues; felix@5237: } felix@5237: felix@5237: sascha@201: public void storeDependencies(River river) { sascha@500: log.info("store column '" + name + "'"); sascha@201: WstColumn column = getPeer(river); sascha@501: sascha@201: for (ImportWstColumnQRange columnQRange: columnQRanges) { sascha@201: columnQRange.getPeer(river); sascha@201: } sascha@499: sascha@202: for (ImportWstColumnValue columnValue: columnValues) { sascha@202: columnValue.getPeer(river); sascha@202: } sascha@201: } sascha@201: sascha@2357: public ImportTimeInterval getTimeInterval() { sascha@2357: return timeInterval; sascha@2357: } sascha@2357: sascha@2357: public void setTimeInterval(ImportTimeInterval timeInterval) { sascha@2357: this.timeInterval = timeInterval; sascha@2357: } sascha@2357: felix@5000: /** Get corresponding mapped wst-column (from database). */ sascha@201: public WstColumn getPeer(River river) { sascha@196: if (peer == null) { sascha@201: Wst w = wst.getPeer(river); sascha@497: Session session = ImporterSession.getInstance().getDatabaseSession(); sascha@201: Query query = session.createQuery( sascha@201: "from WstColumn where " + sascha@471: "wst=:wst and name=:name and description=:description" + sascha@471: " and position=:position"); sascha@201: query.setParameter("wst", w); sascha@201: query.setParameter("name", name); sascha@201: query.setParameter("description", description); sascha@471: query.setParameter("position", position); sascha@2357: sascha@2357: TimeInterval ti = timeInterval != null sascha@2357: ? timeInterval.getPeer() sascha@2357: : null; sascha@2357: sascha@201: List columns = query.list(); sascha@201: if (columns.isEmpty()) { sascha@2357: peer = new WstColumn(w, name, description, position, ti); sascha@201: session.save(peer); sascha@201: } sascha@201: else { sascha@201: peer = columns.get(0); sascha@201: } sascha@196: } sascha@196: return peer; sascha@196: } sascha@196: } sascha@196: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :