annotate flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/CrossSectionFactory.java @ 1965:e71615d95afb

Added method to CrossSectionFactory to get single CrossSection, employ cache. flys-artifacts/trunk@3376 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Fri, 09 Dec 2011 15:52:22 +0000
parents 59622ba800c8
children f7e2a84a6d88
rev   line source
1116
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.artifacts.model;
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
2
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
3 import java.util.List;
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
4
1965
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
5 import net.sf.ehcache.Cache;
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
6 import net.sf.ehcache.Element;
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
7
1116
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
8 import de.intevation.flys.backend.SessionHolder;
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
9 import de.intevation.flys.model.CrossSection;
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
10 import de.intevation.flys.model.River;
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
11
1965
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
12 import de.intevation.flys.artifacts.cache.CacheFactory;
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
13
1116
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
14 import org.hibernate.Session;
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
15 import org.hibernate.Query;
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
16
1965
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
17
1116
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
18 /**
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
19 * Get Cross Sections.
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
20 */
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
21 public class CrossSectionFactory {
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
22
1965
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
23 protected final static String CACHE_NAME = "cross_sections";
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
24
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
25 // TODO use caching consistently, streamline acces.
1116
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
26 /**
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
27 * Get CrossSections for an instantiated River.
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
28 *
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
29 * @param river river object.
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
30 *
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
31 * @return List of Cross Sections of river.
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
32 */
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
33 public static List<CrossSection> getCrossSections(River river) {
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
34 return getCrossSections(river.getName());
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
35 }
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
36
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
37
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
38 /**
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
39 * Get Cross Sections for a river by name.
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
40 *
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
41 * @param river name of the river of interest.
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
42 *
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
43 * @return List of Cross Sections of river.
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
44 */
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
45 public static List<CrossSection> getCrossSections(String riverName) {
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
46 Session session = SessionHolder.HOLDER.get();
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
47 Query query = session.createQuery(
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
48 "from CrossSection where river.name = :rivername");
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
49 query.setParameter("rivername", riverName);
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
50 return query.list();
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
51 }
1965
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
52
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
53
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
54 /** Get a specific CrossSection from db. */
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
55 public static CrossSection getCrossSection(int id) {
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
56 Cache cache = CacheFactory.getCache(CACHE_NAME);
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
57 if (cache != null) {
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
58 Element element = cache.get(Integer.valueOf(id));
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
59 if (element != null) {
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
60 return (CrossSection) element.getValue();
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
61 }
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
62 }
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
63
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
64 CrossSection section = getCrossSectionUncached(id);
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
65 if (cache != null) {
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
66 Element element = new Element(Integer.valueOf(id), section);
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
67 cache.put(element);
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
68 }
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
69
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
70 return section;
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
71 }
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
72
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
73
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
74 /** Get specific CrossSection from database. */
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
75 protected static CrossSection getCrossSectionUncached(int id) {
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
76 Session session = SessionHolder.HOLDER.get();
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
77 Query query = session.createQuery(
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
78 "from CrossSection where id=:id");
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
79 query.setParameter("id", id);
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
80 List<CrossSection> list = query.list();
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
81 return list.isEmpty() ? null : list.get(0);
e71615d95afb Added method to CrossSectionFactory to get single CrossSection, employ cache.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1962
diff changeset
82 }
1116
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
83 }
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
84 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org