Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/artifacts/model/GaugesFactory.java @ 5838:5aa05a7a34b7
Rename modules to more fitting names.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Thu, 25 Apr 2013 15:23:37 +0200 |
parents | flys-artifacts/src/main/java/org/dive4elements/river/artifacts/model/GaugesFactory.java@bd047b71ab37 |
children | 4897a58c8746 |
comparison
equal
deleted
inserted
replaced
5837:d9901a08d0a6 | 5838:5aa05a7a34b7 |
---|---|
1 package org.dive4elements.river.artifacts.model; | |
2 | |
3 import java.util.List; | |
4 import java.util.ArrayList; | |
5 | |
6 import org.dive4elements.river.backend.SessionHolder; | |
7 import org.dive4elements.river.model.River; | |
8 import org.dive4elements.river.model.Gauge; | |
9 import org.dive4elements.river.model.Range; | |
10 | |
11 import org.hibernate.Session; | |
12 import org.hibernate.Query; | |
13 | |
14 public class GaugesFactory | |
15 { | |
16 public static List<Gauge> getGauges(River river) { | |
17 return getGauges(river.getName()); | |
18 } | |
19 | |
20 | |
21 public static Gauge getGauge(String gaugeName) { | |
22 Session session = SessionHolder.HOLDER.get(); | |
23 Query query = session.createQuery( | |
24 "from Gauge where name=:name"); | |
25 query.setParameter("name", gaugeName); | |
26 | |
27 List<Gauge> res = query.list(); | |
28 | |
29 return res.isEmpty() ? null : res.get(0); | |
30 } | |
31 | |
32 | |
33 public static List<Gauge> getGauges(String river) { | |
34 Session session = SessionHolder.HOLDER.get(); | |
35 Query query = session.createQuery( | |
36 "from Gauge where river.name=:name"); | |
37 query.setParameter("name", river); | |
38 return query.list(); | |
39 } | |
40 | |
41 public static List<Gauge> filterRanges( | |
42 List<Gauge> gauges, | |
43 List<double []> ranges | |
44 ) { | |
45 // XXX: Inefficent! | |
46 ArrayList<Range> rs = new ArrayList<Range>(); | |
47 for (double [] range: ranges) { | |
48 double a = range[0]; | |
49 double b = range[1]; | |
50 rs.add(new Range(Math.min(a, b), Math.max(a, b), null)); | |
51 } | |
52 return filter(gauges, rs); | |
53 } | |
54 | |
55 public static List<Gauge> filter(List<Gauge> gauges, List<Range> ranges) { | |
56 // TODO: Make it an HQL filter! | |
57 ArrayList<Gauge> out = new ArrayList<Gauge>(); | |
58 for (Gauge gauge: gauges) { | |
59 Range range = gauge.getRange(); | |
60 for (Range cmp: ranges) { | |
61 if (range.intersects(cmp)) { | |
62 out.add(gauge); | |
63 break; | |
64 } | |
65 } | |
66 } | |
67 return out; | |
68 } | |
69 } | |
70 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : |