sascha@151: package de.intevation.flys.artifacts.model; sascha@151: sascha@151: import java.util.List; sascha@151: import java.util.ArrayList; sascha@151: sascha@151: import de.intevation.flys.backend.SessionFactoryProvider; sascha@151: sascha@151: import de.intevation.flys.model.River; sascha@151: import de.intevation.flys.model.Gauge; sascha@151: import de.intevation.flys.model.Range; sascha@151: sascha@151: import org.hibernate.SessionFactory; sascha@151: import org.hibernate.Session; sascha@151: import org.hibernate.Query; sascha@151: sascha@151: public class GaugesFactory sascha@151: { sascha@151: public static List getGauges(River river) { sascha@151: return getGauges(river.getName()); sascha@151: } sascha@151: sascha@151: public static List getGauges(String river) { sascha@151: SessionFactory sf = SessionFactoryProvider.getSessionFactory(); sascha@151: Session session = sf.openSession(); sascha@151: try { sascha@151: Query query = session.createQuery( sascha@151: "from Gauge where river.name=:name"); sascha@151: query.setParameter("name", river); sascha@151: return query.list(); sascha@151: } sascha@151: finally { sascha@151: session.close(); sascha@151: } sascha@151: } sascha@151: sascha@151: public static List filterRanges( sascha@151: List gauges, sascha@151: List ranges sascha@151: ) { sascha@151: // XXX: Inefficent! sascha@151: ArrayList rs = new ArrayList(); sascha@151: for (double [] range: ranges) { sascha@151: double a = range[0]; sascha@151: double b = range[1]; sascha@151: rs.add(new Range(Math.min(a, b), Math.max(a, b), null)); sascha@151: } sascha@151: return filter(gauges, rs); sascha@151: } sascha@151: sascha@151: public static List filter(List gauges, List ranges) { sascha@151: // TODO: Make it an HQL filter! sascha@151: ArrayList out = new ArrayList(); sascha@151: for (Gauge gauge: gauges) { sascha@151: Range range = gauge.getRange(); sascha@151: for (Range cmp: ranges) { sascha@151: if (range.intersects(cmp)) { sascha@151: out.add(gauge); sascha@151: break; sascha@151: } sascha@151: } sascha@151: } sascha@151: return out; sascha@151: } sascha@151: } sascha@151: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :