# HG changeset patch # User Raimund Renkert # Date 1370001841 -7200 # Node ID 54ff6ded05b25a9bc66e0dd5d26c5fc85d0628a8 # Parent 8078fde8b02b77871a79299a87c7a2123ebb46f0 New service to create a LProbe. diff -r 8078fde8b02b -r 54ff6ded05b2 src/main/java/de/intevation/lada/rest/LProbeService.java --- a/src/main/java/de/intevation/lada/rest/LProbeService.java Fri May 31 14:02:45 2013 +0200 +++ b/src/main/java/de/intevation/lada/rest/LProbeService.java Fri May 31 14:04:01 2013 +0200 @@ -1,11 +1,14 @@ package de.intevation.lada.rest; import java.util.List; +import java.util.Map; import java.util.logging.Logger; import javax.enterprise.context.RequestScoped; import javax.inject.Inject; +import javax.ws.rs.Consumes; import javax.ws.rs.GET; +import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; @@ -91,13 +94,66 @@ return repository.filter(mstId, uwbId, begin); } + @POST + @Path("/create") + @Produces("text/json") + @Consumes("application/json") + public String create(LProbe probe) { + boolean success = repository.create(probe); + if(success) { + return "[{" + + "returncode: 200," + + "errorfields: []," + + createWarningFields() + + "}]"; + } + else { + int generalError = repository.getGeneralError(); + String response = "[{ \"returncode\": " + generalError + ", "; + response += "\"errors\": {" + createErrorFields() + "}, "; + response += "\"warnings\": {" + createWarningFields() + "}"; + response += "}]"; + return response; + } + } - // 200 Ok - // Anderes ist Fehler. - // { - // returncode: 500, - // field: [ - // {fieldname: validator_error_code}, - // ] - // } + private String createWarningFields() { + Map warnings = repository.getWarnings(); + String response = "\"fields\": ["; + if (warnings == null || warnings.isEmpty()) { + response += "]"; + return response; + } + boolean first = true; + for (Map.Entry entry: warnings.entrySet()) { + if (!first) { + response +=","; + } + response += "{" + "\"" + entry.getKey() + + "\": " + entry.getValue() + "}"; + first = false; + } + response += "]"; + return response; + } + + private String createErrorFields() { + Map errors = repository.getErrors(); + String response = "\"fields\": ["; + if (errors.isEmpty()) { + response += "]"; + return response; + } + boolean first = true; + for (Map.Entry entry: errors.entrySet()) { + if (!first) { + response +=","; + } + response += "{" + "\"" + entry.getKey() + + "\": " + entry.getValue() + "}"; + first = false; + } + response += "]"; + return response; + } }