Mercurial > dive4elements > river
annotate flys-backend/src/main/java/de/intevation/flys/backend/SessionHolder.java @ 5509:627584bc0586
Datacage: Added <dc:filter> element. This allows cleaner way to narrow the datasets.
Example:
<dc:context>
<dc:statement>
SELECT DISTINCT
name AS hws_name,
official AS hws_official,
kind_id AS hws_kind
FROM hws_lines
WHERE river_id = ${river_id}
</dc:statement>
<dc:if test="dc:has-result()">
<lines>
<dc:macro name="hws-lines">
<dc:elements>
<hws factory="hwsfactory" name="{$hws_name}"/>
</dc:elements>
</dc:macro>
<dc:filter expr="$hws_official=1">
<dc:if test="dc:has-result()">
<official>
<dc:filter expr="$hws_kind=1">
<dc:if test="dc:has-result()">
<Durchlass><dc:call-macro name="hws-lines"></Durchlass>
</dc:if>
</dc:filter>
<dc:filter expr="$hws_kind=2">
<dc:if test="dc:has-result()">
<Damm><dc:call-macro name="hws-lines"></Damm>
</dc:if>
</dc:filter>
<dc:filter expr="$hws_kind=3">
<dc:if test="dc:has-result()">
<Graben><dc:call-macro name="hws-lines"></Graben>
</dc:if>
</dc:filter>
</official>
</dc:if>
</dc:filter>
</lines>
</dc:if>
</dc:context>
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Thu, 28 Mar 2013 16:51:15 +0100 |
parents | 76c75c8b9ee0 |
children |
rev | line source |
---|---|
466
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.flys.backend; |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
2 |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
3 import org.apache.log4j.Logger; |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
4 |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
5 import org.hibernate.Session; |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
6 import org.hibernate.SessionFactory; |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
7 |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
8 |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
9 public class SessionHolder |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
10 { |
3333
76c75c8b9ee0
SedDB: Make access to SedDB configurable over conf.xml and provide access to sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
466
diff
changeset
|
11 private static Logger log = |
466
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
12 Logger.getLogger(SessionHolder.class); |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
13 |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
14 public static final ThreadLocal<Session> HOLDER = |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
15 new ThreadLocal<Session>() { |
3333
76c75c8b9ee0
SedDB: Make access to SedDB configurable over conf.xml and provide access to sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
466
diff
changeset
|
16 @Override |
466
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
17 protected Session initialValue() { |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
18 return create(); |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
19 } |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
20 }; |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
21 |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
22 private SessionHolder() { |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
23 } |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
24 |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
25 public synchronized static Session create() { |
3333
76c75c8b9ee0
SedDB: Make access to SedDB configurable over conf.xml and provide access to sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
466
diff
changeset
|
26 log.debug("create"); |
466
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
27 SessionFactory sessionFactory = |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
28 SessionFactoryProvider.getSessionFactory(); |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
29 return sessionFactory.openSession(); |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
30 } |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
31 |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
32 public static Session acquire() { |
3333
76c75c8b9ee0
SedDB: Make access to SedDB configurable over conf.xml and provide access to sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
466
diff
changeset
|
33 log.debug("acquire"); |
466
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
34 Session session = create(); |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
35 HOLDER.set(session); |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
36 return session; |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
37 } |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
38 |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
39 public static void release() { |
3333
76c75c8b9ee0
SedDB: Make access to SedDB configurable over conf.xml and provide access to sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
466
diff
changeset
|
40 log.debug("release"); |
466
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
41 HOLDER.remove(); |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
42 } |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
43 } |
8bd50b41dea6
Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
44 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |