changeset 1253:f434ccd64864

merged.
author Raimund Renkert <raimund.renkert@intevation.de>
date Mon, 19 Dec 2016 10:53:42 +0100
parents 7610f8f58c9c (current diff) 3d0d401b9d9a (diff)
children 23b75545dbf0
files src/main/java/de/intevation/lada/validation/rules/ortszuordnung/CoordinatesInVE.java
diffstat 19 files changed, 273 insertions(+), 173 deletions(-) [+]
line wrap: on
line diff
--- a/.hgtags	Mon Dec 19 10:52:48 2016 +0100
+++ b/.hgtags	Mon Dec 19 10:53:42 2016 +0100
@@ -39,3 +39,4 @@
 d4d43d846a60211b935d673a0e34f89e260cf16d 2.2.0
 effef57f3f7e1587cae44b5907cf624105ced0db 2.3.0
 fb90e4d8bd0d09fb7bc638e67b4f482ba830e3b7 2.4.0
+204fb75b0c06e2f760dfe37d2fb0845ec31b68f1 2.4.1
--- a/Dockerfile	Mon Dec 19 10:52:48 2016 +0100
+++ b/Dockerfile	Mon Dec 19 10:53:42 2016 +0100
@@ -76,7 +76,7 @@
 #
 # Build and deploy LADA-server
 #
-ENV LADA_VERSION 2.4.1-SNAPSHOT
+ENV LADA_VERSION 2.5-SNAPSHOT
 RUN mvn clean compile package && \
     mv target/lada-server-$LADA_VERSION.war \
        $JBOSS_HOME/standalone/deployments && \
--- a/db_schema/stammdaten_fill_verwaltungsgrenze.sql	Mon Dec 19 10:52:48 2016 +0100
+++ b/db_schema/stammdaten_fill_verwaltungsgrenze.sql	Mon Dec 19 10:53:42 2016 +0100
@@ -1,7 +1,7 @@
-insert into stammdaten.verwaltungsgrenze(gem_id, shape)
-SELECT 
+INSERT INTO stammdaten.verwaltungsgrenze(gem_id, shape)
+SELECT
   verwaltungseinheit.id,
   gem_utm.geom
-FROM 
+FROM
   stammdaten.verwaltungseinheit
-left join geo.gem_utm on verwaltungseinheit.id = gem_utm.ags;
+JOIN geo.gem_utm ON verwaltungseinheit.id = gem_utm.ags;
--- a/db_schema/stammdaten_schema.sql	Mon Dec 19 10:52:48 2016 +0100
+++ b/db_schema/stammdaten_schema.sql	Mon Dec 19 10:53:42 2016 +0100
@@ -167,7 +167,7 @@
 CREATE TABLE verwaltungsgrenze (
     id serial PRIMARY KEY,
     gem_id character varying(8) NOT NULL REFERENCES verwaltungseinheit,
-    shape public.geometry(MultiPolygon, 4326)
+    shape public.geometry(MultiPolygon, 4326) NOT NULL
 );
 CREATE INDEX verwaltungsgrenze_sp_idx ON verwaltungsgrenze USING gist (shape);
 
--- a/pom.xml	Mon Dec 19 10:52:48 2016 +0100
+++ b/pom.xml	Mon Dec 19 10:53:42 2016 +0100
@@ -137,6 +137,7 @@
             <groupId>org.geotools</groupId>
             <artifactId>gt-epsg-hsql</artifactId>
             <version>14.5</version>
+            <scope>runtime</scope>
         </dependency>
         <dependency>
             <groupId>org.geotools</groupId>
@@ -368,5 +369,5 @@
             <url>http://www.hibernatespatial.org/repository</url>
         </repository>
     </repositories>
-    <version>2.4.1-SNAPSHOT</version>
+    <version>2.5-SNAPSHOT</version>
 </project>
--- a/src/main/java/de/intevation/lada/importer/laf/LafObjectMapper.java	Mon Dec 19 10:52:48 2016 +0100
+++ b/src/main/java/de/intevation/lada/importer/laf/LafObjectMapper.java	Mon Dec 19 10:53:42 2016 +0100
@@ -842,6 +842,16 @@
             }
         }
 
+        ortFactory.transformCoordinates(ort);
+        if (hasKoord && !hasGem) {
+            ortFactory.findVerwaltungseinheit(ort);
+        }
+        if (ortFactory.hasErrors()) {
+            // Add to warnings because Probe object might be imported
+            currentWarnings.addAll(ortFactory.getErrors());
+            return null;
+        }
+
         Violation violation = ortValidator.validate(ort);
         for (Entry<String, List<Integer>> warn :
                  violation.getWarnings().entrySet()) {
@@ -862,17 +872,6 @@
             return null;
         }
 
-        ortFactory.transformCoordinates(ort);
-        if (hasKoord && !hasGem) {
-            logger.debug("find Verwaltungseinheit");
-            ortFactory.findVerwaltungseinheit(ort);
-        }
-        if (ortFactory.hasErrors()) {
-            // Add to warnings because Probe object might be imported
-            currentWarnings.addAll(ortFactory.getErrors());
-            return null;
-        }
-
         repository.create(ort, "stamm");
         return ort;
     }
--- a/src/main/java/de/intevation/lada/rest/stamm/DeskriptorService.java	Mon Dec 19 10:52:48 2016 +0100
+++ b/src/main/java/de/intevation/lada/rest/stamm/DeskriptorService.java	Mon Dec 19 10:53:42 2016 +0100
@@ -104,20 +104,20 @@
         QueryBuilder<Deskriptoren> builder = new QueryBuilder<Deskriptoren>(
             repository.entityManager("stamm"),
             Deskriptoren.class);
-        builder.andNot("sn", 0);
-        if (params.containsKey("layer") &&
-            !params.containsKey("parents")) {
-            String layer = params.getFirst("layer");
-            builder.and("ebene", layer);
-        }
-        else {
-            String layer = params.getFirst("layer");
-            String parents = params.getFirst("parents");
-            builder.and("ebene", layer);
-            List<String> parentList = new ArrayList<String>();
-            String[] parentArray = parents.split(", ");
-            parentList = Arrays.asList(parentArray);
-            builder.andIn("vorgaenger", parentList);
+        builder.and("sn", 0).not();
+        try {
+            builder.and("ebene",
+                Integer.valueOf(params.getFirst("layer")));
+            builder.and("ebene", params.getFirst("layer"));
+            if (params.containsKey("parents")) {
+                String parents = params.getFirst("parents");
+                List<String> parentList = new ArrayList<String>();
+                String[] parentArray = parents.split(", ");
+                parentList = Arrays.asList(parentArray);
+                builder.andIn("vorgaenger", parentList);
+            }
+        } catch (NumberFormatException nfe) {
+            return new Response(false, 612, null);
         }
         return repository.filter(builder.getQuery(), "stamm");
     }
--- a/src/main/java/de/intevation/lada/rest/stamm/OrtService.java	Mon Dec 19 10:52:48 2016 +0100
+++ b/src/main/java/de/intevation/lada/rest/stamm/OrtService.java	Mon Dec 19 10:53:42 2016 +0100
@@ -271,14 +271,6 @@
             return new Response(false, 699, ort);
         }
 
-        Violation violation = validator.validate(ort);
-        if (violation.hasErrors()) {
-            Response response = new Response(false, 604, ort);
-            response.setErrors(violation.getErrors());
-            response.setWarnings(violation.getWarnings());
-            return response;
-        }
-
         ortFactory.transformCoordinates(ort);
         if (ortFactory.hasErrors()) {
             Violation factoryErrs = new Violation();
@@ -289,6 +281,15 @@
             response.setErrors(factoryErrs.getErrors());
             return response;
         }
+
+        Violation violation = validator.validate(ort);
+        if (violation.hasErrors()) {
+            Response response = new Response(false, 604, ort);
+            response.setErrors(violation.getErrors());
+            response.setWarnings(violation.getWarnings());
+            return response;
+        }
+
         Response response = repository.create(ort, "stamm");
         if(violation.hasWarnings()) {
             response.setWarnings(violation.getWarnings());
@@ -341,14 +342,6 @@
             return new Response(false, 699, ort);
         }
 
-        Violation violation = validator.validate(ort);
-        if (violation.hasErrors()) {
-            Response response = new Response(false, 604, ort);
-            response.setErrors(violation.getErrors());
-            response.setWarnings(violation.getWarnings());
-            return response;
-        }
-
         ortFactory.transformCoordinates(ort);
         if (ortFactory.hasErrors()) {
             Violation factoryErrs = new Violation();
@@ -359,6 +352,15 @@
             response.setErrors(factoryErrs.getErrors());
             return response;
         }
+
+        Violation violation = validator.validate(ort);
+        if (violation.hasErrors()) {
+            Response response = new Response(false, 604, ort);
+            response.setErrors(violation.getErrors());
+            response.setWarnings(violation.getWarnings());
+            return response;
+        }
+
         Response response = repository.update(ort, "stamm");
         if(violation.hasWarnings()) {
             response.setWarnings(violation.getWarnings());
--- a/src/main/java/de/intevation/lada/util/data/QueryBuilder.java	Mon Dec 19 10:52:48 2016 +0100
+++ b/src/main/java/de/intevation/lada/util/data/QueryBuilder.java	Mon Dec 19 10:53:42 2016 +0100
@@ -79,20 +79,14 @@
     }
 
     /**
-     * Logical AND NOT operation.
+     * Negate filter.
      *
-     * @param id    The database column name.
-     * @param value The filter value
-     * @return The builder itself.
      */
-    public QueryBuilder<T> andNot(String id, Object value) {
-        Predicate p = this.builder.equal(this.root.get(id), value);
-        if (this.filter != null) {
-            this.filter = this.builder.and(this.filter, p).not();
+    public QueryBuilder<T> not() {
+        if (this.filter == null) {
+            return this;
         }
-        else {
-            this.filter = this.builder.and(p).not();
-        }
+        this.filter = this.filter.not();
         return this;
     }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/de/intevation/lada/validation/rules/ort/CoordinatesInVE.java	Mon Dec 19 10:53:42 2016 +0100
@@ -0,0 +1,88 @@
+/* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz
+ * Software engineering by Intevation GmbH
+ *
+ * This file is Free Software under the GNU GPL (v>=3)
+ * and comes with ABSOLUTELY NO WARRANTY! Check out
+ * the documentation coming with IMIS-Labordaten-Application for details.
+ */
+package de.intevation.lada.validation.rules.ort;
+
+import java.util.List;
+
+import javax.inject.Inject;
+
+import com.vividsolutions.jts.geom.Point;
+
+import org.apache.log4j.Logger;
+
+import de.intevation.lada.model.stammdaten.Ort;
+import de.intevation.lada.model.stammdaten.Verwaltungseinheit;
+import de.intevation.lada.model.stammdaten.Verwaltungsgrenze;
+import de.intevation.lada.util.annotation.RepositoryConfig;
+import de.intevation.lada.util.data.QueryBuilder;
+import de.intevation.lada.util.data.Repository;
+import de.intevation.lada.util.data.RepositoryType;
+import de.intevation.lada.validation.Violation;
+import de.intevation.lada.validation.annotation.ValidationRule;
+import de.intevation.lada.validation.rules.Rule;
+
+/**
+ * Validation rule for ort.
+ * Validates if the coordinates are in the specified "Verwaltungseinheit".
+ *
+ * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a>
+ */
+@ValidationRule("Ort")
+public class CoordinatesInVE implements Rule {
+
+    @Inject
+    private Logger logger;
+
+    @Inject
+    @RepositoryConfig(type=RepositoryType.RO)
+    private Repository repository;
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public Violation execute(Object object) {
+        Ort ort = (Ort)object;
+
+        String gemId = "".equals(ort.getGemId())
+            ? null
+            : ort.getGemId();
+
+        if (gemId != null) {
+
+            QueryBuilder<Verwaltungsgrenze> vg =
+                new QueryBuilder<Verwaltungsgrenze>(
+                    repository.entityManager("stamm"),
+                    Verwaltungsgrenze.class);
+            vg.and("gemId", gemId);
+            List<Verwaltungsgrenze> vgs = repository.filterPlain(
+                vg.getQuery(), "stamm");
+            if (vgs == null || vgs.isEmpty()) {
+                Violation violation = new Violation();
+                violation.addWarning("verwaltungsgrenze", 600);
+                return violation;
+            }
+
+            Point p = ort.getGeom();
+            if (p == null) {
+                logger.error("geom is null. "
+                    + "Probably OrtFactory.transformCoordinates() has not "
+                    + "been called on this ort.");
+            }
+            for (Verwaltungsgrenze singlevg : vgs) {
+                if(singlevg.getShape().contains(p)) {
+                    return null;
+                }
+            }
+            Violation violation = new Violation();
+            violation.addWarning("verwaltungsgrenze", 651);
+            return violation;
+        }
+
+        return null;
+    }
+
+}
--- a/src/main/java/de/intevation/lada/validation/rules/ort/IsUnique.java	Mon Dec 19 10:52:48 2016 +0100
+++ b/src/main/java/de/intevation/lada/validation/rules/ort/IsUnique.java	Mon Dec 19 10:53:42 2016 +0100
@@ -31,12 +31,12 @@
 
         QueryBuilder<Ort> builder = new QueryBuilder<Ort>(
             repository.entityManager("stamm"), Ort.class);
+        if (ort.getId() != null) {
+            // Consider UPDATE
+            builder.and("id", ort.getId()).not();
+        }
         builder.and("netzbetreiberId", ort.getNetzbetreiberId());
         builder.and("ortId", ort.getOrtId());
-        if (ort.getId() != null) {
-            // Consider UPDATE
-            builder.andNot("id", ort.getId());
-        }
         if (!repository.filterPlain(builder.getQuery(), "stamm").isEmpty()) {
             Violation violation = new Violation();
             violation.addError("ortId", 672);
--- a/src/main/java/de/intevation/lada/validation/rules/ortszuordnung/CoordinatesInVE.java	Mon Dec 19 10:52:48 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-/* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz
- * Software engineering by Intevation GmbH
- *
- * This file is Free Software under the GNU GPL (v>=3)
- * and comes with ABSOLUTELY NO WARRANTY! Check out
- * the documentation coming with IMIS-Labordaten-Application for details.
- */
-package de.intevation.lada.validation.rules.ort;
-
-import java.util.List;
-
-import javax.inject.Inject;
-
-import com.vividsolutions.jts.geom.Point;
-
-import de.intevation.lada.model.land.Ortszuordnung;
-import de.intevation.lada.model.stammdaten.Ort;
-import de.intevation.lada.model.stammdaten.Verwaltungseinheit;
-import de.intevation.lada.model.stammdaten.Verwaltungsgrenze;
-import de.intevation.lada.util.annotation.RepositoryConfig;
-import de.intevation.lada.util.data.QueryBuilder;
-import de.intevation.lada.util.data.Repository;
-import de.intevation.lada.util.data.RepositoryType;
-import de.intevation.lada.validation.Violation;
-import de.intevation.lada.validation.annotation.ValidationRule;
-import de.intevation.lada.validation.rules.Rule;
-
-/**
- * Validation rule for ort.
- * Validates if the coordinates are in the specified "Verwaltungseinheit".
- *
- * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a>
- */
-@ValidationRule("Ortszuordnung")
-public class CoordinatesInVE implements Rule {
-
-    @Inject
-    @RepositoryConfig(type=RepositoryType.RO)
-    private Repository repository;
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Violation execute(Object object) {
-        Ortszuordnung oz = (Ortszuordnung)object;
-        if (!"E".equals(oz.getOrtszuordnungTyp())) {
-            return null;
-        }
-
-        Ort ort = repository.getByIdPlain(Ort.class, oz.getOrtId(), "stamm");
-        String gemId = ort.getGemId();
-        if (gemId == null) {
-            Violation violation = new Violation();
-            violation.addWarning("gemId", 631);
-            return violation;
-        }
-
-        QueryBuilder<Verwaltungsgrenze> vg =
-            new QueryBuilder<Verwaltungsgrenze>(
-                repository.entityManager("stamm"), Verwaltungsgrenze.class);
-        vg.and("gemId", gemId);
-        List<Verwaltungsgrenze> vgs = repository.filterPlain(
-            vg.getQuery(), "stamm");
-        if (vgs == null || vgs.isEmpty()) {
-            Violation violation = new Violation();
-            violation.addWarning("verwaltungsgrenze", 600);
-            return violation;
-        }
-
-        Point p = ort.getGeom();
-        boolean hit = false;
-        for (Verwaltungsgrenze singlevg : vgs) {
-            if(singlevg.getShape().contains(p)) {
-                hit = true;
-            }
-        }
-        if (!hit) {
-            Violation violation = new Violation();
-            violation.addWarning("verwaltungsgrenze", 651);
-            return violation;
-        }
-        return null;
-    }
-
-}
--- a/src/test/java/de/intevation/lada/BaseTest.java	Mon Dec 19 10:52:48 2016 +0100
+++ b/src/test/java/de/intevation/lada/BaseTest.java	Mon Dec 19 10:53:42 2016 +0100
@@ -44,26 +44,23 @@
      */
     @Deployment(testable=true)
     public static WebArchive createDeployment() throws Exception {
-        File[] files = Maven.resolver().loadPomFromFile("pom.xml")
-            .importRuntimeAndTestDependencies().resolve().withTransitivity().asFile();
+        File antlr = Maven.resolver().loadPomFromFile("pom.xml")
+            .resolve("org.antlr:antlr4-runtime")
+            .withoutTransitivity().asSingleFile();
 
         WebArchive archive = ShrinkWrap.create(WebArchive.class, ARCHIVE_NAME)
             .addPackages(true, Package.getPackage("de.intevation.lada"))
             .addAsResource("log4j.properties", "log4j.properties")
             .addAsResource("shibboleth.properties", "shibboleth.properties")
             .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
+            .addAsLibrary(antlr)
             .addAsResource("META-INF/test-persistence.xml",
                 "META-INF/persistence.xml");
-        for (File f : files) {
-            if (f.getName().contains("antlr4")
-                || f.getName().contains("gt-metadata")
-                || f.getName().contains("gt-opengis")
-                || f.getName().contains("gt-referencing")
-                //TODO: still something missing. One test will fail.
-            ) {
-                archive.addAsLibrary(f);
-            }
-        }
+        addWithDependencies("org.geotools:gt-api", archive);
+        addWithDependencies("org.geotools:gt-referencing", archive);
+        addWithDependencies("org.geotools:gt-epsg-hsql", archive);
+        addWithDependencies("org.geotools:gt-opengis", archive);
+
         return archive;
     }
 
@@ -78,4 +75,12 @@
     public static final void afterTests() {
         System.out.println("");
     }
+
+    private static void addWithDependencies(String coordinate, WebArchive archive) {
+        File[] files = Maven.resolver().loadPomFromFile("pom.xml")
+            .resolve(coordinate).withTransitivity().asFile();
+        for (File f : files) {
+            archive.addAsLibrary(f);
+        }
+    }
 }
--- a/src/test/java/de/intevation/lada/StammdatenTest.java	Mon Dec 19 10:52:48 2016 +0100
+++ b/src/test/java/de/intevation/lada/StammdatenTest.java	Mon Dec 19 10:53:42 2016 +0100
@@ -34,10 +34,12 @@
 import de.intevation.lada.model.stammdaten.MessprogrammKategorie;
 import de.intevation.lada.model.stammdaten.Ort;
 import de.intevation.lada.model.stammdaten.Probenehmer;
+import de.intevation.lada.model.stammdaten.Deskriptoren;
 import de.intevation.lada.test.stamm.DatensatzErzeugerTest;
 import de.intevation.lada.test.stamm.MessprogrammKategorieTest;
 import de.intevation.lada.test.stamm.OrtTest;
 import de.intevation.lada.test.stamm.ProbenehmerTest;
+import de.intevation.lada.test.stamm.DeskriptorenTest;
 import de.intevation.lada.test.stamm.Stammdaten;
 
 
@@ -59,6 +61,7 @@
     private ProbenehmerTest probenehmerTest;
     private MessprogrammKategorieTest messprogrammkategorieTest;
     private OrtTest ortTest;
+    private DeskriptorenTest deskriptorenTest;
 
     public StammdatenTest () {
         stammdatenTest = new Stammdaten();
@@ -66,6 +69,7 @@
         probenehmerTest = new ProbenehmerTest();
         messprogrammkategorieTest = new MessprogrammKategorieTest();
         ortTest = new OrtTest();
+        deskriptorenTest = new DeskriptorenTest();
         testProtocol = new ArrayList<Protocol>();
         verboseLogging = false;
     }
@@ -382,4 +386,36 @@
         stammdatenTest.getById(baseUrl, "verwaltungseinheit",
             "11000000", testProtocol);
     }
+
+    /**
+     * Insert deskriptoren into the database.
+     */
+    @Test
+    @InSequence(35)
+    @UsingDataSet("datasets/dbUnit_deskriptor.json")
+    @DataSource("java:jboss/lada-stamm")
+    @Cleanup(phase=TestExecutionPhase.NONE)
+    public final void prepareDatabaseDeskriptoren() throws Exception {
+        Protocol protocol = new Protocol();
+        protocol.setName("database");
+        protocol.setType("insert deskriptor");
+        protocol.addInfo("database", "Insert deskriptor into database");
+        testProtocol.add(protocol);
+        Deskriptoren deskriptor = em.find(Deskriptoren.class, 1000);
+        Assert.assertNotNull(deskriptor);
+        protocol.setPassed(true);
+    }
+
+    /**
+     * Tests deskriptoren service
+     */
+    @Test
+    @InSequence(36)
+    @RunAsClient
+    public final void testDeskriptoren(@ArquillianResource URL baseUrl)
+    throws Exception {
+        deskriptorenTest.init(baseUrl, testProtocol);
+        deskriptorenTest.execute();
+    }
+
 }
--- a/src/test/java/de/intevation/lada/test/ServiceTest.java	Mon Dec 19 10:52:48 2016 +0100
+++ b/src/test/java/de/intevation/lada/test/ServiceTest.java	Mon Dec 19 10:53:42 2016 +0100
@@ -48,7 +48,7 @@
 
     protected List<Protocol> protocol;
 
-    protected List<String> timestampAttributes;
+    protected List<String> timestampAttributes = new ArrayList<String>();
     protected List<String> geomPointAttributes = new ArrayList<String>();
 
     protected URL baseUrl;
@@ -159,7 +159,6 @@
     /**
      * Test the GET Service by requesting a single object by id.
      *
-     * @param baseUrl The url pointing to the test deployment.
      */
     public JsonObject getById(
         String name,
@@ -218,7 +217,6 @@
     /**
      * Test the GET service using filters.
      *
-     * @param baseUrl The url poining to the test deployment.
      */
     public JsonObject filter(String name, String parameter) {
         System.out.print(".");
@@ -230,8 +228,8 @@
         /* Create a client*/
         Client client = ClientBuilder.newClient();
         WebTarget target =
-            client.target(baseUrl + parameter);//"probe?qid=2&mst_id=11010&umw_id=N24");
-        prot.addInfo("filter", parameter);//"qid=2&mst_id=11010&umw_id=N24");
+            client.target(baseUrl + parameter);
+        prot.addInfo("filter", parameter);
         /* Request the objects using the filter*/
         Response response = target.request()
             .header("X-SHIB-user", BaseTest.TEST_USER)
@@ -264,7 +262,6 @@
     /**
      * Test the CREATE Service.
      *
-     * @param baseUrl The url pointing to the test deployment.
      */
     public JsonObject create(String name, String parameter, JsonObject create) {
         System.out.print(".");
@@ -276,7 +273,7 @@
         /* Create a client*/
         Client client = ClientBuilder.newClient();
         WebTarget target = client.target(baseUrl + parameter);
-        /* Send a post request containing a new probe*/
+        /* Send a post request containing a new object*/
         Response response = target.request()
             .header("X-SHIB-user", BaseTest.TEST_USER)
             .header("X-SHIB-roles", BaseTest.TEST_ROLES)
@@ -305,9 +302,8 @@
     }
 
     /**
-     * Test the probe update service.
+     * Test an update service.
      *
-     * @param baseUrl The url pointing to the test deployment.
      */
     public JsonObject update(
         String name,
@@ -326,7 +322,7 @@
             /* Create a client*/
             Client client = ClientBuilder.newClient();
             WebTarget target = client.target(baseUrl + parameter);
-            /* Request a with the saved id*/
+            /* Request object corresponding to id in URL */
             Response response = target.request()
                 .header("X-SHIB-user", BaseTest.TEST_USER)
                 .header("X-SHIB-roles", BaseTest.TEST_ROLES)
@@ -335,18 +331,21 @@
             /* Try to parse the response*/
             JsonReader reader = Json.createReader(new StringReader(entity));
             JsonObject oldObject = reader.readObject().getJsonObject("data");
-            /* Change the hauptprobenNr*/
+
+            /* Value replacement */
             String updatedEntity =
                 oldObject.toString().replace(oldValue, newValue);
             prot.addInfo("updated datafield", updateAttribute);
             prot.addInfo("updated value", oldValue);
             prot.addInfo("updated to", newValue);
-            /* Send the updated probe via put request*/
+
+            /* Send modified object via put request*/
             WebTarget putTarget = client.target(baseUrl + parameter);
             Response updated = putTarget.request()
                 .header("X-SHIB-user", BaseTest.TEST_USER)
                 .header("X-SHIB-roles", BaseTest.TEST_ROLES)
                 .put(Entity.entity(updatedEntity, MediaType.APPLICATION_JSON));
+
             /* Try to parse the response*/
             JsonReader updatedReader = Json.createReader(
                 new StringReader(updated.readEntity(String.class)));
@@ -373,7 +372,6 @@
     /**
      * Test the DELETE Service.
      *
-     * @param baseUrl The url pointing to the test deployment.
      */
     public JsonObject delete(String name, String parameter) {
         System.out.print(".");
@@ -387,7 +385,7 @@
         WebTarget target =
             client.target(baseUrl + parameter);
         prot.addInfo("parameter", parameter);
-        /* Delete a probe with the id saved when created a probe*/
+        /* Delete object with ID given in URL */
         Response response = target.request()
             .header("X-SHIB-user", BaseTest.TEST_USER)
             .header("X-SHIB-roles", BaseTest.TEST_ROLES)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/test/java/de/intevation/lada/test/stamm/DeskriptorenTest.java	Mon Dec 19 10:53:42 2016 +0100
@@ -0,0 +1,53 @@
+/* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz
+ * Software engineering by Intevation GmbH
+ *
+ * This file is Free Software under the GNU GPL (v>=3)
+ * and comes with ABSOLUTELY NO WARRANTY! Check out
+ * the documentation coming with IMIS-Labordaten-Application for details.
+ */
+package de.intevation.lada.test.stamm;
+
+import java.net.URL;
+import java.util.List;
+
+import javax.json.JsonObject;
+import javax.json.JsonObjectBuilder;
+
+import org.junit.Assert;
+
+import de.intevation.lada.Protocol;
+import de.intevation.lada.test.ServiceTest;
+
+public class DeskriptorenTest extends ServiceTest {
+    private JsonObject expectedById;
+    private JsonObject create;
+
+    /**
+     * @return The test protocol
+     */
+    public List<Protocol> getProtocol() {
+        return protocol;
+    }
+
+    @Override
+    public void init(
+        URL baseUrl,
+        List<Protocol> protocol
+    ) {
+        super.init(baseUrl, protocol);
+
+        // Prepare expected object
+        JsonObject content = readJsonResource("/datasets/dbUnit_deskriptor.json")
+            .getJsonArray("stammdaten.deskriptoren").getJsonObject(0);
+        JsonObjectBuilder builder = convertObject(content);
+        expectedById = builder.build();
+        Assert.assertNotNull(expectedById);
+    }
+
+    public final void execute() {
+        getAll("deskriptor", "rest/deskriptor");
+        getAll("deskriptor", "rest/deskriptor?layer=1");
+        getAll("deskriptor", "rest/deskriptor?layer=1&parents=1, 2");
+        getById("deskriptor", "rest/deskriptor/1000", expectedById);
+    }
+}
--- a/src/test/resources/datasets/clean_and_seed.sql	Mon Dec 19 10:52:48 2016 +0100
+++ b/src/test/resources/datasets/clean_and_seed.sql	Mon Dec 19 10:53:42 2016 +0100
@@ -20,6 +20,7 @@
 DELETE FROM staat;
 DELETE FROM umwelt;
 DELETE FROM verwaltungseinheit;
+DELETE FROM deskriptoren;
 
 -- seed
 -- minimal master data to make interface tests runnable
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/test/resources/datasets/dbUnit_deskriptor.json	Mon Dec 19 10:53:42 2016 +0100
@@ -0,0 +1,5 @@
+{
+    "stammdaten.deskriptoren": [{
+        "id": 1000
+    }]
+}
--- a/src/test/resources/log4j.properties	Mon Dec 19 10:52:48 2016 +0100
+++ b/src/test/resources/log4j.properties	Mon Dec 19 10:53:42 2016 +0100
@@ -3,6 +3,7 @@
 log4j.logger.org.xnio=WARN
 log4j.logger.org.hibernate=INFO
 log4j.logger.org.jboss=INFO
+log4j.logger.org.geotools=WARN
 log4j.appender.lada=org.apache.log4j.RollingFileAppender
 log4j.appender.lada.File=/var/log/wildfly/lada-server-test.log
 log4j.appender.lada.MaxFileSize=5MB
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)