sascha@196: package de.intevation.flys.importer; sascha@196: sascha@196: import de.intevation.flys.model.WstColumnValue; sascha@202: import de.intevation.flys.model.WstColumn; sascha@202: import de.intevation.flys.model.River; sascha@202: sascha@202: import java.math.BigDecimal; sascha@202: ingo@478: import org.apache.log4j.Logger; ingo@478: sascha@202: import org.hibernate.Session; sascha@202: ingo@478: import java.util.Map; ingo@478: sascha@196: sascha@196: public class ImportWstColumnValue sascha@196: { ingo@478: protected Logger logger = Logger.getLogger(ImportWstColumnValue.class); ingo@478: sascha@202: protected BigDecimal position; sascha@202: protected BigDecimal w; sascha@202: protected ImportWstColumn wstColumn; sascha@202: ingo@478: protected Map cache; ingo@478: sascha@202: protected WstColumnValue peer; sascha@196: sascha@196: public ImportWstColumnValue() { sascha@196: } sascha@196: sascha@202: public ImportWstColumnValue( sascha@202: ImportWstColumn wstColumn, sascha@202: BigDecimal position, ingo@478: BigDecimal w, ingo@478: Map cache sascha@202: ) { sascha@202: this.wstColumn = wstColumn; sascha@202: this.position = position; sascha@202: this.w = w; ingo@478: this.cache = cache; sascha@202: } sascha@202: sascha@202: public BigDecimal getPosition() { sascha@202: return position; sascha@202: } sascha@202: sascha@202: public void setPosition(BigDecimal position) { sascha@202: this.position = position; sascha@202: } sascha@202: sascha@202: public BigDecimal getW() { sascha@202: return w; sascha@202: } sascha@202: sascha@202: public void setW(BigDecimal w) { sascha@202: this.w = w; sascha@202: } sascha@202: sascha@202: public ImportWstColumn getWstColumn() { sascha@202: return wstColumn; sascha@202: } sascha@202: sascha@202: public void setWstColumn(ImportWstColumn wstColumn) { sascha@202: this.wstColumn = wstColumn; sascha@202: } sascha@202: sascha@202: public WstColumnValue getPeer(River river) { sascha@196: if (peer == null) { sascha@202: WstColumn c = wstColumn.getPeer(river); ingo@478: ingo@478: // check the cache before we fire a db query ingo@478: WstColumnValue value = cache.get(new WstColumnValueKey( ingo@478: c.getId(), ingo@478: position.doubleValue(), ingo@478: w.doubleValue())); ingo@478: ingo@478: if (value != null) { ingo@478: peer = value; ingo@478: return peer; ingo@478: } ingo@478: sascha@202: Session session = Importer.sessionHolder.get(); ingo@478: peer = new WstColumnValue(c, position, w); ingo@478: session.save(peer); ingo@478: ingo@478: cache.put(new WstColumnValueKey(peer), peer); sascha@196: } ingo@478: sascha@196: return peer; sascha@196: } sascha@196: } sascha@196: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :