# HG changeset patch # User Raimund Renkert # Date 1369395578 -7200 # Node ID 3a00c8fd5a8e1cebcb09ba683b93d4ea4c0d4023 # Parent 8b29e54a44ebb5c72964a60d46c62ad27e0e8182 New path in 'proben' REST service: '/details/{id}'. Delivering more detials for a LProbe. diff -r 8b29e54a44eb -r 3a00c8fd5a8e src/main/java/de/intevation/lada/data/LProbeRepository.java --- a/src/main/java/de/intevation/lada/data/LProbeRepository.java Fri May 24 13:38:32 2013 +0200 +++ b/src/main/java/de/intevation/lada/data/LProbeRepository.java Fri May 24 13:39:38 2013 +0200 @@ -12,7 +12,9 @@ import javax.persistence.criteria.Root; import de.intevation.lada.manage.LProbeManager; +import de.intevation.lada.model.LOrt; import de.intevation.lada.model.LProbe; +import de.intevation.lada.model.LProbeDetails; /** * This Container is an interface to request, filter and select LProbe @@ -77,4 +79,22 @@ } return em.createQuery(criteria).getResultList(); } + + public LProbeDetails details(String probeId) { + LProbeDetails details = new LProbeDetails(); + LProbe probe = em.find(LProbe.class, probeId); + if (probe == null) { + return new LProbeDetails(); + } + details.setLprobe(probe); + + CriteriaBuilder cbLorts = em.getCriteriaBuilder(); + CriteriaQuery criteriaLorts = cbLorts.createQuery(LOrt.class); + Root member = criteriaLorts.from(LOrt.class); + criteriaLorts.where(cbLorts.equal(member.get("probeId"), probe.getProbeId())); + List lorts = em.createQuery(criteriaLorts).getResultList(); + details.setLorts(lorts); + + return details; + } } diff -r 8b29e54a44eb -r 3a00c8fd5a8e src/main/java/de/intevation/lada/rest/LProbeService.java --- a/src/main/java/de/intevation/lada/rest/LProbeService.java Fri May 24 13:38:32 2013 +0200 +++ b/src/main/java/de/intevation/lada/rest/LProbeService.java Fri May 24 13:39:38 2013 +0200 @@ -15,6 +15,7 @@ import de.intevation.lada.data.LProbeRepository; import de.intevation.lada.model.LProbe; +import de.intevation.lada.model.LProbeDetails; /** * This class produces a RESTful service to read the contents of LProbe table. @@ -89,4 +90,11 @@ } return repository.filter(mstId, uwbId, begin); } + + @GET + @Path("/details/{id}") + @Produces("text/json") + public LProbeDetails details(@PathParam("id") String id) { + return repository.details(id); + } }