diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/AnnotationsFactory.java @ 301:1a00cb4998a8

Implemented a service that retrieves distance information for a specific river. flys-artifacts/trunk@1660 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Mon, 11 Apr 2011 12:54:03 +0000
parents
children ea3a438a7021
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/AnnotationsFactory.java	Mon Apr 11 12:54:03 2011 +0000
@@ -0,0 +1,46 @@
+package de.intevation.flys.artifacts.model;
+
+import java.util.List;
+
+import de.intevation.flys.backend.SessionFactoryProvider;
+
+import de.intevation.flys.model.Annotation;
+import de.intevation.flys.model.Range;
+import de.intevation.flys.model.River;
+
+import org.hibernate.SessionFactory;
+import org.hibernate.Session;
+import org.hibernate.Query;
+
+
+/**
+ * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
+ */
+public class AnnotationsFactory {
+
+    public static List<Annotation> getAnnotations(River river) {
+        return getAnnotations(river.getName());
+    }
+
+
+    public static List<Annotation> getAnnotations(String river) {
+        SessionFactory sf = SessionFactoryProvider.getSessionFactory();
+        Session session   = sf.openSession();
+
+        try {
+            Query rangesQuery = session.createQuery(
+                "from Range where river.name=:name");
+            rangesQuery.setParameter("name", river);
+            List<Range> ranges = rangesQuery.list();
+
+            Query query = session.createQuery(
+                "from Annotation where range in (:ranges)");
+            query.setParameterList("ranges", ranges);
+            return query.list();
+        }
+        finally {
+            session.close();
+        }
+    }
+}
+// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org