# HG changeset patch # User Raimund Renkert # Date 1372682727 -7200 # Node ID ad8e9cc164a84e799a0be1695fb052fea3b955dd # Parent 682a3acdae707472f7f7770d3dbf87393697846e New service and repository for 'Ort'. diff -r 682a3acdae70 -r ad8e9cc164a8 src/main/java/de/intevation/lada/data/OrtRepository.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/de/intevation/lada/data/OrtRepository.java Mon Jul 01 14:45:27 2013 +0200 @@ -0,0 +1,93 @@ +package de.intevation.lada.data; + +import javax.ejb.EJBTransactionRolledbackException; +import javax.inject.Inject; +import javax.inject.Named; +import javax.persistence.EntityExistsException; +import javax.persistence.TransactionRequiredException; + +import de.intevation.lada.manage.Manager; +import de.intevation.lada.model.Ort; +import de.intevation.lada.rest.Response; + +@Named("ortrepository") +public class OrtRepository +extends Repository +{ + @Inject + @Named("datamanager") + private Manager manager; + + @Override + public Response create(Object object) { + if (!(object instanceof Ort)) { + return new Response(false, 602, object); + } + Ort ort = (Ort)object; + try { + manager.create(ort); + return new Response(true, 200, ort); + } + catch(EntityExistsException eee) { + return new Response(false, 601, ort); + } + catch(IllegalArgumentException iae) { + return new Response(false, 602, ort); + } + catch(TransactionRequiredException tre) { + return new Response(false, 603, ort); + } + } + + @Override + public Response update(Object object) { + if (!(object instanceof Ort)) { + return new Response(false, 602, object); + } + Ort ort = (Ort)object; + Response response = new Response(true, 200, ort); + try { + manager.update(ort); + 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 delete(Object object) { + if (!(object instanceof Ort)) { + return new Response(false, 602, null); + } + Ort ort = (Ort)object; + Response response = new Response(true, 200, null); + try { + manager.delete(ort); + } + catch (IllegalArgumentException iae) { + response.setSuccess(false); + response.setMessage(602); + } + catch (TransactionRequiredException tre) { + response.setSuccess(false); + response.setMessage(603); + } + return response; + } + +} diff -r 682a3acdae70 -r ad8e9cc164a8 src/main/java/de/intevation/lada/rest/OrtService.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/de/intevation/lada/rest/OrtService.java Mon Jul 01 14:45:27 2013 +0200 @@ -0,0 +1,97 @@ +package de.intevation.lada.rest; + +import java.util.ArrayList; + +import javax.enterprise.context.RequestScoped; +import javax.inject.Inject; +import javax.inject.Named; +import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MultivaluedMap; +import javax.ws.rs.core.UriInfo; + +import de.intevation.lada.data.QueryBuilder; +import de.intevation.lada.data.Repository; +import de.intevation.lada.model.Ort; + +@Path("/ortinfo") +@RequestScoped +public class OrtService +{ + /** + * The Repository for SUmwelt. + */ + @Inject + @Named("ortrepository") + private Repository repository; + + /** + * Request a LZusatzWert via its id. + * + * @param id The LProbe id + * @return JSON Object via REST service. + */ + @GET + @Path("/{id}") + @Produces("text/json") + public Response findById(@PathParam("id") String id) { + return repository.findById(Ort.class, id); + } + + /** + * Request LMessert via a filter. + * + * Query parameters are used for the filter in form of key-value pairs. + * + * @param info The URL query parameters. + * @return JSON Object via Rest service. + */ + @GET + @Produces("text/json") + public Response filter(@Context UriInfo info) { + MultivaluedMap params = info.getQueryParameters(); + if (params.isEmpty() || !params.containsKey("probeId")) { + return new Response(false, 609, new ArrayList()); + } + String paramValue = params.getFirst("probeId"); + QueryBuilder builder = + new QueryBuilder( + repository.getEntityManager(), Ort.class); + builder.and("probeId", paramValue); + return repository.filter(builder.getQuery()); + } + + @PUT + @Produces("text/json") + @Path("/{ortId}") + @Consumes("application/json") + public Response update(Ort ort) { + return repository.update(ort); + } + + @POST + @Produces("text/json") + @Consumes("application/json") + public Response create(Ort ort) { + return repository.create(ort); + } + + @DELETE + @Path("/{ortId}") + public Response delete(@PathParam("ortId") String ortId ) { + Response response = repository.findById(Ort.class, ortId); + Ort ort = (Ort)response.getData(); + if (ort != null) { + repository.delete(ort); + return new Response(true, 200, null); + } + return new Response(false, 600, null); + } +}