diff --git a/src/main/java/org/caosdb/server/query/POV.java b/src/main/java/org/caosdb/server/query/POV.java index a1008bd6a67a8712baf2c9b52ab164f619236263..b1a457529a0199edcc5061110ee97e416a264fff 100644 --- a/src/main/java/org/caosdb/server/query/POV.java +++ b/src/main/java/org/caosdb/server/query/POV.java @@ -70,8 +70,8 @@ public class POV implements EntityFilterInterface { private String propertiesTable = null; private String refIdsTable = null; private final HashMap<String, String> statistics = new HashMap<>(); - private Logger logger = LoggerFactory.getLogger(getClass()); - private Stack<String> prefix = new Stack<>(); + private final Logger logger = LoggerFactory.getLogger(getClass()); + private final Stack<String> prefix = new Stack<>(); private Unit getUnit(final String s) throws ParserException { return CaosDBSystemOfUnits.getUnit(s); @@ -116,7 +116,7 @@ public class POV implements EntityFilterInterface { // try and parse as integer try { - final Pattern dp = Pattern.compile("^(-?[0-9]++)([^(\\.[0-9])-][^-]*)?$"); + final Pattern dp = Pattern.compile("^(-?[0-9]++)\\s*([^(\\.[0-9])-][^-]*)?$"); final Matcher m = dp.matcher(value); if (!m.matches()) { throw new NumberFormatException(); @@ -133,7 +133,7 @@ public class POV implements EntityFilterInterface { this.vDouble = (double) this.vInt; } else { try { - final Pattern dp = Pattern.compile("^(-?[0-9]+(?:\\.[0-9]+))([^-]*)$"); + final Pattern dp = Pattern.compile("^(-?[0-9]+(?:\\.[0-9]+))\\s*([^-]*)$"); final Matcher m = dp.matcher(value); if (!m.matches()) { throw new NumberFormatException(); @@ -142,7 +142,7 @@ public class POV implements EntityFilterInterface { unitStr = m.group(2); this.vDouble = Double.parseDouble(vDoubleStr); - if ((this.vDouble % 1) == 0) { + if (this.vDouble % 1 == 0) { this.vInt = (int) Math.floor(this.vDouble); } } catch (final NumberFormatException e) { @@ -509,14 +509,16 @@ public class POV implements EntityFilterInterface { return this.aggregate; } - private String measurement(String m) { + private String measurement(final String m) { return String.join("", prefix) + m; } @Override public String getCacheKey() { - StringBuilder sb = new StringBuilder(); - if (this.getAggregate() != null) sb.append(this.aggregate); + final StringBuilder sb = new StringBuilder(); + if (this.getAggregate() != null) { + sb.append(this.aggregate); + } sb.append(toString()); if (this.hasSubProperty()) { sb.append(getSubProperty().getCacheKey());