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