# HG changeset patch # User Raimund Renkert # Date 1381323374 -7200 # Node ID 816291da1ddeb06c878adc5c9b4958139d299c7e # Parent ea4d2d685f3263131d32a455b0855be205427db3 Added service with filter. Filter uses the sql 'LIKE' operation to request items. diff -r ea4d2d685f32 -r 816291da1dde src/main/java/de/intevation/lada/rest/SVerwaltungseinheitService.java --- a/src/main/java/de/intevation/lada/rest/SVerwaltungseinheitService.java Wed Oct 09 14:54:34 2013 +0200 +++ b/src/main/java/de/intevation/lada/rest/SVerwaltungseinheitService.java Wed Oct 09 14:56:14 2013 +0200 @@ -11,9 +11,12 @@ import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import javax.ws.rs.core.HttpHeaders; +import javax.ws.rs.core.MultivaluedMap; +import javax.ws.rs.core.UriInfo; import de.intevation.lada.auth.Authentication; import de.intevation.lada.auth.AuthenticationException; +import de.intevation.lada.data.QueryBuilder; import de.intevation.lada.data.Repository; import de.intevation.lada.model.SVerwaltungseinheit; @@ -46,7 +49,7 @@ * @param headers The HTTP header containing authorization information. * @return Response object. */ - @GET +/* @GET @Produces("text/json") public Response findAll(@Context HttpHeaders headers) { try { @@ -59,7 +62,7 @@ return new Response(false, 699, new ArrayList()); } } - +*/ /** * Request a SVerwaltungseinheit object via its id. * @@ -84,4 +87,37 @@ return new Response(false, 699, new ArrayList()); } } + + /** + * Request SVerwaltungseinheit objects filtered by the given criteria. + * + * @param filter The filter string. + * @param headers The HTTP header containing authorization information. + * @return Response object. + */ + @GET + @Produces("text/json") + public Response filter( + @Context UriInfo info, + @Context HttpHeaders headers + ){ + try { + if (!authentication.isAuthorizedUser(headers)) { + return new Response(false, 699, null); + } + MultivaluedMap params = info.getQueryParameters(); + if (params.isEmpty() || !params.containsKey("query")) { + return repository.findAll(SVerwaltungseinheit.class); + } + String filter = params.getFirst("query"); + QueryBuilder builder = + new QueryBuilder( + repository.getEntityManager(), SVerwaltungseinheit.class); + builder.andLike("bezeichnung", filter + "%"); + return repository.filter(builder.getQuery()); + } + catch(AuthenticationException ae) { + return new Response(false, 699, null); + } + } }