From a50ec980771cc5a1a6988641c3880acc4a1a4d40 Mon Sep 17 00:00:00 2001 From: Jonas Blatt <jonasblatt@uni-koblenz.de> Date: Wed, 25 Sep 2019 16:22:11 +0200 Subject: [PATCH] Add date formatted text --- .../utils/boundary/impl/DateBoundary.java | 51 ++++++++++++++++++- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/impl/DateBoundary.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/impl/DateBoundary.java index ef5b28d9..2e40eb6d 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/impl/DateBoundary.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/impl/DateBoundary.java @@ -2,11 +2,17 @@ package de.unikoblenz.fgbks.base.utils.boundary.impl; import static de.unikoblenz.fgbks.base.utils.boundary.BoundType.EXCLUSIVE; import static de.unikoblenz.fgbks.base.utils.boundary.BoundType.INCLUSIVE; +import static java.time.format.DateTimeFormatter.ISO_LOCAL_DATE; +import static java.time.temporal.ChronoField.HOUR_OF_DAY; +import static java.time.temporal.ChronoField.MINUTE_OF_HOUR; +import static java.time.temporal.ChronoField.SECOND_OF_MINUTE; import de.unikoblenz.fgbks.base.utils.boundary.AbstractGrowingBoundary; import de.unikoblenz.fgbks.base.utils.boundary.BoundType; import de.unikoblenz.fgbks.base.utils.boundary.BoundaryParseException; import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeFormatterBuilder; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.commons.lang3.Validate; @@ -19,9 +25,28 @@ public class DateBoundary extends AbstractGrowingBoundary<LocalDateTime> { + dateGroupName + ">(?:19|20)\\d{2}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d)\"\\)$"; public static final Pattern datePattern = Pattern.compile(datePatternString); + public static final DateTimeFormatter CAMUNDA_DATE_TIME_FORMAT; + + static { + CAMUNDA_DATE_TIME_FORMAT = + new DateTimeFormatterBuilder() + .appendLiteral("date and time(\"") + .parseCaseInsensitive() + .append(ISO_LOCAL_DATE) + .appendLiteral('T') + .appendValue(HOUR_OF_DAY, 2) + .appendLiteral(':') + .appendValue(MINUTE_OF_HOUR, 2) + .optionalStart() + .appendLiteral(':') + .appendValue(SECOND_OF_MINUTE, 2) + .appendLiteral("\")") + .toFormatter(); + } public DateBoundary(String text) { super(text, LocalDateTime.class); + System.out.println("---> " + getParsedText()); } private DateBoundary() { @@ -45,12 +70,12 @@ public class DateBoundary extends AbstractGrowingBoundary<LocalDateTime> { @Override public LocalDateTime getMinValue() { - return LocalDateTime.MAX; + return LocalDateTime.MIN; } @Override public LocalDateTime getMaxValue() { - return LocalDateTime.MIN; + return LocalDateTime.MAX; } @Override @@ -119,4 +144,26 @@ public class DateBoundary extends AbstractGrowingBoundary<LocalDateTime> { throw new BoundaryParseException("Date value " + this.getText() + " couldn't be parsed."); } } + + @Override + public String getParsedText() { + if (lowerBound.equals(getMinValue()) && upperBound.equals(getMaxValue())) { + return ""; + } + StringBuilder sb = new StringBuilder(); + if (lowerBound.equals(getMinValue())) { + sb.append("< "); + sb.append(CAMUNDA_DATE_TIME_FORMAT.format(upperBound)); + } else if (upperBound.equals(getMaxValue())) { + sb.append("> "); + sb.append(CAMUNDA_DATE_TIME_FORMAT.format(lowerBound)); + } else { + sb.append("["); + sb.append(CAMUNDA_DATE_TIME_FORMAT.format(lowerBound)); + sb.append(".."); + sb.append(CAMUNDA_DATE_TIME_FORMAT.format(upperBound)); + sb.append("]"); + } + return sb.toString(); + } } -- GitLab