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 :

http://dive4elements.wald.intevation.org