annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/RiverFactory.java @ 6152:0587819960c3

Waterlevel differences & bed height differences: Add new model LinearInterpolated intented to unify the two very similiar calculations. The focus of the current implementation is correctness and not speed! The fact that the data sets more mostly sorted by station is not exploited. Doing so would improve performance significantly.
author Sascha L. Teichmann <teichmann@intevation.de>
date Sun, 02 Jun 2013 17:52:53 +0200
parents af13ceeba52a
children
rev   line source
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
6 * documentation coming with Dive4Elements River for details.
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3143
diff changeset
9 package org.dive4elements.river.artifacts.model;
114
394b9580ceae Added mockup classes for working with rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
394b9580ceae Added mockup classes for working with rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
11 import java.util.List;
394b9580ceae Added mockup classes for working with rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3143
diff changeset
13 import org.dive4elements.river.backend.SessionHolder;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3143
diff changeset
14 import org.dive4elements.river.model.River;
132
8be4a837f20a Added support for the flys backend and an example how to use it.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 114
diff changeset
15
312
0c6328c227f1 Added a new function to RiverFactory that retrieves a River object based on a given river name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 311
diff changeset
16 import org.hibernate.Query;
132
8be4a837f20a Added support for the flys backend and an example how to use it.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 114
diff changeset
17 import org.hibernate.Session;
114
394b9580ceae Added mockup classes for working with rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18
394b9580ceae Added mockup classes for working with rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19 /**
394b9580ceae Added mockup classes for working with rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
394b9580ceae Added mockup classes for working with rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
21 */
394b9580ceae Added mockup classes for working with rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
22 public class RiverFactory {
394b9580ceae Added mockup classes for working with rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23
394b9580ceae Added mockup classes for working with rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24 /** We don't need to instantiate concrete objects of this class. */
394b9580ceae Added mockup classes for working with rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25 private RiverFactory() {
394b9580ceae Added mockup classes for working with rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26 }
394b9580ceae Added mockup classes for working with rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27
394b9580ceae Added mockup classes for working with rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28
394b9580ceae Added mockup classes for working with rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29 /**
394b9580ceae Added mockup classes for working with rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30 * Returns all rivers that were found in the backend.
394b9580ceae Added mockup classes for working with rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31 *
394b9580ceae Added mockup classes for working with rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32 * @return all rivers.
394b9580ceae Added mockup classes for working with rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
33 */
394b9580ceae Added mockup classes for working with rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34 public static List<River> getRivers() {
308
084995dd1c9c Added a session holder to hold hibernate sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 146
diff changeset
35 Session session = SessionHolder.HOLDER.get();
1631
26e19cdaed5e Improved database session handling in services and artifacts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1075
diff changeset
36
26e19cdaed5e Improved database session handling in services and artifacts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1075
diff changeset
37 return session.createQuery("from River order by name").list();
114
394b9580ceae Added mockup classes for working with rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38 }
312
0c6328c227f1 Added a new function to RiverFactory that retrieves a River object based on a given river name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 311
diff changeset
39
0c6328c227f1 Added a new function to RiverFactory that retrieves a River object based on a given river name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 311
diff changeset
40
0c6328c227f1 Added a new function to RiverFactory that retrieves a River object based on a given river name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 311
diff changeset
41 /**
1075
feaf778d510e Changed the way of collecting the data for the RiverAxisArtifact - use the database instead of a Master-Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 315
diff changeset
42 * Returns a River object fetched from database based on its id.
feaf778d510e Changed the way of collecting the data for the RiverAxisArtifact - use the database instead of a Master-Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 315
diff changeset
43 *
feaf778d510e Changed the way of collecting the data for the RiverAxisArtifact - use the database instead of a Master-Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 315
diff changeset
44 * @param river_id The id of the desired river.
feaf778d510e Changed the way of collecting the data for the RiverAxisArtifact - use the database instead of a Master-Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 315
diff changeset
45 *
feaf778d510e Changed the way of collecting the data for the RiverAxisArtifact - use the database instead of a Master-Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 315
diff changeset
46 * @return the river.
feaf778d510e Changed the way of collecting the data for the RiverAxisArtifact - use the database instead of a Master-Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 315
diff changeset
47 */
feaf778d510e Changed the way of collecting the data for the RiverAxisArtifact - use the database instead of a Master-Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 315
diff changeset
48 public static River getRiver(int river_id) {
feaf778d510e Changed the way of collecting the data for the RiverAxisArtifact - use the database instead of a Master-Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 315
diff changeset
49 Session session = SessionHolder.HOLDER.get();
feaf778d510e Changed the way of collecting the data for the RiverAxisArtifact - use the database instead of a Master-Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 315
diff changeset
50
feaf778d510e Changed the way of collecting the data for the RiverAxisArtifact - use the database instead of a Master-Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 315
diff changeset
51 Query query = session.createQuery("from River where id=:river_id");
feaf778d510e Changed the way of collecting the data for the RiverAxisArtifact - use the database instead of a Master-Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 315
diff changeset
52 query.setParameter("river_id", river_id);
feaf778d510e Changed the way of collecting the data for the RiverAxisArtifact - use the database instead of a Master-Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 315
diff changeset
53
feaf778d510e Changed the way of collecting the data for the RiverAxisArtifact - use the database instead of a Master-Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 315
diff changeset
54 List<River> rivers = query.list();
feaf778d510e Changed the way of collecting the data for the RiverAxisArtifact - use the database instead of a Master-Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 315
diff changeset
55
3143
29022c93027d FixA: Create a cached GaugeFinderFactory to access the gauge along a river
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1631
diff changeset
56 return rivers.isEmpty() ? null : rivers.get(0);
1075
feaf778d510e Changed the way of collecting the data for the RiverAxisArtifact - use the database instead of a Master-Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 315
diff changeset
57 }
feaf778d510e Changed the way of collecting the data for the RiverAxisArtifact - use the database instead of a Master-Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 315
diff changeset
58
feaf778d510e Changed the way of collecting the data for the RiverAxisArtifact - use the database instead of a Master-Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 315
diff changeset
59
feaf778d510e Changed the way of collecting the data for the RiverAxisArtifact - use the database instead of a Master-Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 315
diff changeset
60 /**
312
0c6328c227f1 Added a new function to RiverFactory that retrieves a River object based on a given river name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 311
diff changeset
61 * Returns a River object fetched from database based on its name.
0c6328c227f1 Added a new function to RiverFactory that retrieves a River object based on a given river name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 311
diff changeset
62 *
0c6328c227f1 Added a new function to RiverFactory that retrieves a River object based on a given river name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 311
diff changeset
63 * @param river The name of a river.
0c6328c227f1 Added a new function to RiverFactory that retrieves a River object based on a given river name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 311
diff changeset
64 *
0c6328c227f1 Added a new function to RiverFactory that retrieves a River object based on a given river name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 311
diff changeset
65 * @return the River object.
0c6328c227f1 Added a new function to RiverFactory that retrieves a River object based on a given river name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 311
diff changeset
66 */
0c6328c227f1 Added a new function to RiverFactory that retrieves a River object based on a given river name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 311
diff changeset
67 public static River getRiver(String river) {
0c6328c227f1 Added a new function to RiverFactory that retrieves a River object based on a given river name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 311
diff changeset
68 Session session = SessionHolder.HOLDER.get();
0c6328c227f1 Added a new function to RiverFactory that retrieves a River object based on a given river name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 311
diff changeset
69
0c6328c227f1 Added a new function to RiverFactory that retrieves a River object based on a given river name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 311
diff changeset
70 Query query = session.createQuery(
0c6328c227f1 Added a new function to RiverFactory that retrieves a River object based on a given river name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 311
diff changeset
71 "from River where name =:name");
0c6328c227f1 Added a new function to RiverFactory that retrieves a River object based on a given river name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 311
diff changeset
72 query.setParameter("name", river);
0c6328c227f1 Added a new function to RiverFactory that retrieves a River object based on a given river name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 311
diff changeset
73
0c6328c227f1 Added a new function to RiverFactory that retrieves a River object based on a given river name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 311
diff changeset
74 List<River> rivers = query.list();
0c6328c227f1 Added a new function to RiverFactory that retrieves a River object based on a given river name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 311
diff changeset
75
3143
29022c93027d FixA: Create a cached GaugeFinderFactory to access the gauge along a river
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1631
diff changeset
76 return rivers.isEmpty() ? null : rivers.get(0);
312
0c6328c227f1 Added a new function to RiverFactory that retrieves a River object based on a given river name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 311
diff changeset
77 }
114
394b9580ceae Added mockup classes for working with rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78 }
394b9580ceae Added mockup classes for working with rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
79 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org