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.model; ingo@1236: ingo@1236: import java.io.Serializable; ingo@1236: import java.util.List; ingo@1236: import java.math.BigDecimal; ingo@1236: ingo@1236: import javax.persistence.Column; ingo@1236: import javax.persistence.Entity; aheinecke@5098: import javax.persistence.GeneratedValue; aheinecke@5098: import javax.persistence.GenerationType; ingo@1236: import javax.persistence.Id; ingo@1236: import javax.persistence.JoinColumn; ingo@1236: import javax.persistence.OneToOne; ingo@1236: import javax.persistence.Table; aheinecke@5098: import javax.persistence.SequenceGenerator; ingo@1236: ingo@1236: import org.hibernate.Session; ingo@1236: import org.hibernate.Query; ingo@1236: teichmann@5829: import org.dive4elements.river.backend.SessionHolder; ingo@1236: ingo@1236: ingo@1236: @Entity ingo@1240: @Table(name = "dem") ingo@1236: public class DGM implements Serializable { ingo@1236: aheinecke@5210: private Integer id; aheinecke@5210: private Integer srid; ingo@1236: aheinecke@5210: private River river; ingo@1236: aheinecke@5210: private Range range; aheinecke@5210: private TimeInterval time_interval; ingo@1236: aheinecke@5210: private String path; ingo@1236: ingo@1236: ingo@1236: public DGM() { ingo@1236: } ingo@1236: ingo@1236: ingo@1236: public void setId(Integer id) { ingo@1236: this.id = id; ingo@1236: } ingo@1236: ingo@1236: @Id aheinecke@5098: @SequenceGenerator( aheinecke@5098: name = "SEQUENCE_DEM_ID_SEQ", aheinecke@5098: sequenceName = "DEM_ID_SEQ", aheinecke@5098: allocationSize = 1) aheinecke@5098: @GeneratedValue( aheinecke@5098: strategy = GenerationType.SEQUENCE, aheinecke@5098: generator = "SEQUENCE_DEM_ID_SEQ") ingo@1236: @Column(name = "id") ingo@1236: public Integer getId() { ingo@1236: return id; ingo@1236: } ingo@1236: ingo@1236: public void setRiver(River river) { ingo@1236: this.river = river; ingo@1236: } ingo@1236: ingo@1236: @OneToOne ingo@1236: @JoinColumn(name = "river_id") ingo@1236: public River getRiver() { ingo@1236: return river; ingo@1236: } ingo@1236: ingo@1236: public void setPath(String path) { ingo@1236: this.path = path; ingo@1236: } ingo@1236: ingo@1236: @Column(name = "path") ingo@1236: public String getPath() { ingo@1236: return path; ingo@1236: } ingo@1236: aheinecke@5059: public void setSrid(int srid) { aheinecke@5059: this.srid = srid; aheinecke@5059: } aheinecke@5059: aheinecke@5059: @Column(name = "srid") aheinecke@5059: public int getSrid() { aheinecke@5059: return srid; aheinecke@5059: } ingo@1236: ingo@1257: public static DGM getDGM(int id) { ingo@1257: Session session = SessionHolder.HOLDER.get(); ingo@1257: ingo@1257: Query query = session.createQuery( ingo@1257: "from DGM where Id =:id"); ingo@1257: query.setParameter("id", id); ingo@1257: ingo@1257: List result = query.list(); ingo@1257: ingo@1257: return result.isEmpty() ? null : result.get(0); ingo@1257: } ingo@1257: ingo@1257: ingo@1236: public static DGM getDGM(String river, double lower, double upper) { ingo@1236: Session session = SessionHolder.HOLDER.get(); ingo@1236: ingo@1236: Query query = session.createQuery( ingo@1236: "from DGM where river.name =:river and " + aheinecke@5210: "range.a <=:lower and range.b >=:lower and " + aheinecke@5210: "range.a <=:upper and range.b >=:upper"); ingo@1236: query.setParameter("river", river); ingo@1236: query.setParameter("lower", new BigDecimal(lower)); ingo@1236: query.setParameter("upper", new BigDecimal(upper)); ingo@1236: ingo@1236: List result = query.list(); ingo@1236: ingo@1236: return result.isEmpty() ? null : result.get(0); ingo@1236: } aheinecke@5210: aheinecke@5210: @OneToOne aheinecke@5210: @JoinColumn(name = "range_id") aheinecke@5210: public Range getRange() { aheinecke@5210: return range; aheinecke@5210: } aheinecke@5210: aheinecke@5210: public void setRange(Range range) { aheinecke@5210: this.range = range; aheinecke@5210: } aheinecke@5210: aheinecke@5210: @OneToOne aheinecke@5210: @JoinColumn(name = "time_interval_id") aheinecke@5210: public TimeInterval getTimeInterval() { aheinecke@5210: return time_interval; aheinecke@5210: } aheinecke@5210: aheinecke@5210: public void setTimeInterval(TimeInterval time_interval) { aheinecke@5210: this.time_interval = time_interval; aheinecke@5210: } aheinecke@5210: aheinecke@5210: ingo@1236: } ingo@1236: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :