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
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)