# HG changeset patch # User Raimund Renkert # Date 1424786206 -3600 # Node ID deb3fec601edd39c49b86f5f50366a6da1d743c8 # Parent fd927b584c54ce737e3d74175981439efe117d34 Use multivalued map for errors and warnings to be able to store more than one error/warning per item. diff -r fd927b584c54 -r deb3fec601ed src/main/java/de/intevation/lada/util/rest/Response.java --- a/src/main/java/de/intevation/lada/util/rest/Response.java Tue Feb 24 10:58:06 2015 +0100 +++ b/src/main/java/de/intevation/lada/util/rest/Response.java Tue Feb 24 14:56:46 2015 +0100 @@ -11,6 +11,9 @@ import java.util.HashMap; import java.util.Map; +import javax.ws.rs.core.MultivaluedHashMap; +import javax.ws.rs.core.MultivaluedMap; + /** * Response object storing information about success, warnings, errors and @@ -25,8 +28,8 @@ private Boolean success; private String message; private Object data; - private Map errors; - private Map warnings; + private MultivaluedMap errors; + private MultivaluedMap warnings; private Boolean readonly; private int totalCount; @@ -41,8 +44,8 @@ this.success = success; this.message = Integer.toString(code); this.data = data; - this.errors = new HashMap(); - this.warnings = new HashMap(); + this.errors = new MultivaluedHashMap(); + this.warnings = new MultivaluedHashMap(); this.readonly = Boolean.FALSE; this.totalCount = 0; } @@ -58,8 +61,8 @@ this.success = success; this.message = Integer.toString(code); this.data = data; - this.errors = new HashMap(); - this.warnings = new HashMap(); + this.errors = new MultivaluedHashMap(); + this.warnings = new MultivaluedHashMap(); this.readonly = Boolean.FALSE; this.totalCount = totalCount; } @@ -88,20 +91,22 @@ this.data = data; } - public Map getErrors() { + public MultivaluedMap getErrors() { return errors; } - public void setErrors(Map errors) { - this.errors = this.convertCodes(errors); + public void setErrors(MultivaluedMap errors) { + this.errors.putAll(errors); +// this.errors = this.convertCodes(errors); } - public Map getWarnings() { + public MultivaluedMap getWarnings() { return warnings; } - public void setWarnings(Map warnings) { - this.warnings = this.convertCodes(warnings); + public void setWarnings(MultivaluedMap warnings) { + this.warnings.putAll(warnings); + //this.warnings = this.convertCodes(warnings); } public Boolean getReadonly() { @@ -126,6 +131,7 @@ this.totalCount = totalCount; } + @SuppressWarnings("unused") private HashMap convertCodes(Map codes) { HashMap converted = new HashMap(); if (codes == null || codes.isEmpty()) { diff -r fd927b584c54 -r deb3fec601ed src/main/java/de/intevation/lada/validation/Violation.java --- a/src/main/java/de/intevation/lada/validation/Violation.java Tue Feb 24 10:58:06 2015 +0100 +++ b/src/main/java/de/intevation/lada/validation/Violation.java Tue Feb 24 14:56:46 2015 +0100 @@ -7,8 +7,8 @@ */ package de.intevation.lada.validation; -import java.util.HashMap; -import java.util.Map; +import javax.ws.rs.core.MultivaluedHashMap; +import javax.ws.rs.core.MultivaluedMap; /** * @@ -16,37 +16,41 @@ */ public class Violation { - private Map warnings; + private MultivaluedMap warnings; - private Map errors; + private MultivaluedMap errors; public Violation() { - this.warnings = new HashMap(); - this.errors = new HashMap(); + this.warnings = new MultivaluedHashMap(); + this.errors = new MultivaluedHashMap(); } - public Map getWarnings() { + public MultivaluedMap getWarnings() { return this.warnings; } - public Map getErrors() { + public MultivaluedMap getErrors() { return this.errors; } public void addWarning(String key, Integer value) { - this.warnings.put(key, value); + this.warnings.add(key, value); } public void addError(String key, Integer value) { - this.errors.put(key, value); + this.errors.add(key, value); } - public void addWarnings(Map warnings) { - this.warnings.putAll(warnings); + public void addWarnings(MultivaluedMap warnings) { + for (String key: warnings.keySet()) { + this.warnings.addAll(key, warnings.get(key)); + } } - public void addErrors(Map errors) { - this.errors.putAll(errors); + public void addErrors(MultivaluedMap errors) { + for (String key: errors.keySet()) { + this.errors.addAll(key, errors.get(key)); + } } public boolean hasWarnings() { diff -r fd927b584c54 -r deb3fec601ed src/test/java/de/intevation/lada/test/validator/Probe.java --- a/src/test/java/de/intevation/lada/test/validator/Probe.java Tue Feb 24 10:58:06 2015 +0100 +++ b/src/test/java/de/intevation/lada/test/validator/Probe.java Tue Feb 24 14:56:46 2015 +0100 @@ -45,7 +45,7 @@ Violation violation = validator.validate(probe); Assert.assertTrue(violation.hasErrors()); Assert.assertTrue(violation.getErrors().containsKey("hauptprobenNr")); - Assert.assertTrue(violation.getErrors().get("hauptprobenNr") == 631); + Assert.assertTrue(violation.getErrors().get("hauptprobenNr").contains(631)); prot.setPassed(true); } @@ -61,7 +61,7 @@ Violation violation = validator.validate(probe); Assert.assertTrue(violation.hasErrors()); Assert.assertTrue(violation.getErrors().containsKey("hauptprobenNr")); - Assert.assertTrue(violation.getErrors().get("hauptprobenNr") == 611); + Assert.assertTrue(violation.getErrors().get("hauptprobenNr").contains(611)); prot.setPassed(true); } @@ -113,7 +113,7 @@ Violation violation = validator.validate(probe); Assert.assertTrue(violation.hasErrors()); Assert.assertTrue(violation.getErrors().containsKey("hauptprobenNr")); - Assert.assertTrue(violation.getErrors().get("hauptprobenNr") == 611); + Assert.assertTrue(violation.getErrors().get("hauptprobenNr").contains(611)); prot.setPassed(true); } @@ -143,7 +143,7 @@ Violation violation = validator.validate(probe); Assert.assertTrue(violation.hasWarnings()); Assert.assertTrue(violation.getWarnings().containsKey("entnahmeOrt")); - Assert.assertTrue(violation.getWarnings().get("entnahmeOrt") == 631); + Assert.assertTrue(violation.getWarnings().get("entnahmeOrt").contains(631)); prot.setPassed(true); } @@ -155,6 +155,7 @@ protocol.add(prot); LProbe probe = new LProbe(); probe.setProbeentnahmeBeginn(new Timestamp(1376287046510l)); + probe.setProbeentnahmeEnde(new Timestamp(1376287046511l)); Violation violation = validator.validate(probe); if (violation.hasWarnings()) { Assert.assertFalse(violation.getWarnings().containsKey("probeentnahmeBegin")); @@ -172,7 +173,9 @@ Violation violation = validator.validate(probe); Assert.assertTrue(violation.hasWarnings()); Assert.assertTrue(violation.getWarnings().containsKey("probeentnahmeBegin")); - Assert.assertTrue(violation.getWarnings().get("probeentnahmeBegin") == 631); + Assert.assertTrue(violation.getWarnings().get("probeentnahmeBegin").contains(631)); + prot.setPassed(true); + } prot.setPassed(true); } }