Mercurial > lada > lada-server
diff src/main/java/de/intevation/lada/rest/stamm/MessprogrammKategorieService.java @ 919:e5a9c27047a4
Updated stammdaten services: allow multiselect filters and check duplicates
before update or insert
author | Raimund Renkert <raimund.renkert@intevation.de> |
---|---|
date | Wed, 13 Apr 2016 17:37:12 +0200 |
parents | c2725534f08b |
children | b0fcb034fdb0 |
line wrap: on
line diff
--- a/src/main/java/de/intevation/lada/rest/stamm/MessprogrammKategorieService.java Fri Apr 08 19:36:25 2016 +0200 +++ b/src/main/java/de/intevation/lada/rest/stamm/MessprogrammKategorieService.java Wed Apr 13 17:37:12 2016 +0200 @@ -120,7 +120,16 @@ if (param == null || param.isEmpty()) { continue; } - mBuilder.or(filter.getDataIndex(), param); + if (filter.getMultiselect()) { + param = param.trim(); + String[] parts = param.split(","); + for (String part: parts) { + mBuilder.or(filter.getDataIndex(), part); + } + } + else { + mBuilder.or(filter.getDataIndex(), param); + } } kategorie = repository.filterPlain(mBuilder.getQuery(), "stamm"); @@ -187,8 +196,21 @@ ) { return new Response(false, 699, kategorie); } + QueryBuilder<MessprogrammKategorie> builder = + new QueryBuilder<MessprogrammKategorie>( + repository.entityManager("stamm"), + MessprogrammKategorie.class + ); + builder.and("ortId", kategorie.getMplId()); + builder.and("netzbetreiberId", kategorie.getNetzbetreiberId()); - return repository.create(kategorie, "stamm"); + List<MessprogrammKategorie> kategorien = + repository.filterPlain(builder.getQuery(), "stamm"); + if (kategorien.isEmpty() || + kategorien.get(0).getId() == kategorie.getId()) { + return repository.create(kategorie, "stamm"); + } + return new Response(false, 672, null); } @PUT @@ -206,8 +228,21 @@ ) { return new Response(false, 699, kategorie); } + QueryBuilder<MessprogrammKategorie> builder = + new QueryBuilder<MessprogrammKategorie>( + repository.entityManager("stamm"), + MessprogrammKategorie.class + ); + builder.and("ortId", kategorie.getMplId()); + builder.and("netzbetreiberId", kategorie.getNetzbetreiberId()); - return repository.update(kategorie, "stamm"); + List<MessprogrammKategorie> kategorien = + repository.filterPlain(builder.getQuery(), "stamm"); + if (kategorien.isEmpty() || + kategorien.get(0).getId() == kategorie.getId()) { + return repository.update(kategorie, "stamm"); + } + return new Response(false, 672, null); } @DELETE