changeset 146:0a9bbc93d4e9

New repository for LMesswert objects.
author Raimund Renkert <rrenkert@intevation.de>
date Fri, 14 Jun 2013 10:36:28 +0200
parents 738c139b6526
children 2dd2c36a3b32
files src/main/java/de/intevation/lada/data/LMesswertRepository.java
diffstat 1 files changed, 124 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/de/intevation/lada/data/LMesswertRepository.java	Fri Jun 14 10:36:28 2013 +0200
@@ -0,0 +1,124 @@
+package de.intevation.lada.data;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import javax.ejb.EJBTransactionRolledbackException;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.persistence.EntityExistsException;
+import javax.persistence.EntityManager;
+import javax.persistence.TransactionRequiredException;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+
+import de.intevation.lada.manage.LMesswertManager;
+import de.intevation.lada.model.LMesswert;
+import de.intevation.lada.rest.Response;
+
+/**
+ * This Container is an interface to request, filter and select LMesswert
+ * obejcts from the connected database.
+ * 
+ * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a>
+ */
+@Named("lmesswertrepository")
+public class LMesswertRepository
+extends Repository
+{
+    /**
+     * The entitymanager managing the data.
+     */
+    @Inject
+    private EntityManager em;
+
+    /**
+     * Manager class for LPRobe. Used to manipulate data objects.
+     */
+    @Inject
+    private LMesswertManager manager;
+
+    @Override
+    public Response create(Object object) {
+        if (!(object instanceof LMesswert)) {
+            return new Response(false, 602, object);
+        }
+        LMesswert messwert = (LMesswert)object;
+        Response response = new Response(true, 200, messwert);
+        // Try to save the new LProbe.
+        try {
+            manager.create(messwert);
+            return response;
+        }
+        catch (EntityExistsException eee) {
+            response.setSuccess(false);
+            response.setMessage(601);
+        }
+        catch (IllegalArgumentException iae) {
+            response.setSuccess(false);
+            response.setMessage(602);
+        }
+        catch (TransactionRequiredException tre) {
+            response.setSuccess(false);
+            response.setMessage(603);
+        }
+        catch (EJBTransactionRolledbackException te) {
+            response.setSuccess(false);
+            response.setMessage(604);
+        }
+        return response;
+    }
+
+    @Override
+    public Response update(Object object) {
+        if (!(object instanceof LMesswert)) {
+            return new Response(false, 602, object);
+        }
+        LMesswert messwert = (LMesswert)object;
+        Response response = new Response(true, 200, messwert);
+        // Try to save the new LProbe.
+        try {
+            manager.update(messwert);
+            return response;
+        }
+        catch (EntityExistsException eee) {
+            response.setSuccess(false);
+            response.setMessage(601);
+        }
+        catch (IllegalArgumentException iae) {
+            response.setSuccess(false);
+            response.setMessage(602);
+        }
+        catch (TransactionRequiredException tre) {
+            response.setSuccess(false);
+            response.setMessage(603);
+        }
+        catch (EJBTransactionRolledbackException te) {
+            response.setSuccess(false);
+            response.setMessage(604);
+        }
+        return response;
+    }
+
+    @Override
+    public Response filter(Map<String, String> filter) {
+        CriteriaBuilder cb = em.getCriteriaBuilder();
+        CriteriaQuery<LMesswert> criteria = cb.createQuery(LMesswert.class);
+        Root<LMesswert> member = criteria.from(LMesswert.class);
+        List<Predicate> andFilter = new ArrayList<Predicate>();
+        if (filter.containsKey("probe")) {
+            andFilter.add(cb.equal(member.get("probeId"), filter.get("probe")));
+        }
+        if (filter.containsKey("messung")) {
+            andFilter.add(cb.equal(member.get("messungsId"), filter.get("messung")));
+        }
+        criteria.distinct(true);
+        criteria.where(andFilter.toArray(new Predicate[andFilter.size()]));
+        List<LMesswert> result = filter(criteria);
+        return new Response(true, 200, result);
+    }
+
+}
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)