From 520843660738cdcb8a040bb3a8798f3c15449a6c Mon Sep 17 00:00:00 2001 From: Timm Fitschen <t.fitschen@indiscale.com> Date: Mon, 7 Jun 2021 13:20:58 +0200 Subject: [PATCH] fix parsing of the unit --- src/main/java/org/caosdb/server/query/POV.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/caosdb/server/query/POV.java b/src/main/java/org/caosdb/server/query/POV.java index a1008bd6..b1a45752 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()); -- GitLab