]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
UJ-2: added test for 13 apr 15, cleaned up code
authorcesarvh <cesarv.h@berkeley.edu>
Mon, 5 Nov 2018 22:29:04 +0000 (14:29 -0800)
committercesarvh <cesarv.h@berkeley.edu>
Tue, 19 Mar 2019 19:37:36 +0000 (12:37 -0700)
services/structureddate/structureddate/src/main/java/org/collectionspace/services/structureddate/antlr/ANTLRStructuredDateEvaluator.java
services/structureddate/structureddate/src/test/resources/test-dates.yaml

index 1160a5aa2af1a2e09cdaefcead5ecaf01d8c4a4e..5c9066ff97796275958c24c9fdaa963664c883c2 100644 (file)
@@ -388,7 +388,7 @@ public class ANTLRStructuredDateEvaluator extends StructuredDateBaseListener imp
                // Expect the canonical year-month-day-era ordering
                // to be on the stack.
 
-               Era era = (Era) stack.pop();
+               Era era = (stack.size() == 3) ? null : (Era) stack.pop();
                Integer dayOfMonth = (Integer) stack.pop();
                Integer numMonth = (Integer) stack.pop();
                Integer year = (Integer) stack.pop();
@@ -494,18 +494,18 @@ public class ANTLRStructuredDateEvaluator extends StructuredDateBaseListener imp
        public void exitDayOrYearFirstDate(DayOrYearFirstDateContext ctx) {
                if (ctx.exception != null) return;
 
-               Era era = (stack.size() == 3) ? null : (Era) stack.pop();
-               Integer year = (Integer) stack.pop();
+               Era era = null;
+               Integer num2 = (Integer) stack.pop();
                Integer numMonth = (Integer) stack.pop();
-               Integer dayOfMonth = (Integer) stack.pop();
+               Integer num1 = (Integer) stack.pop();
 
-               Integer num1 = year;
-               Integer num2 = dayOfMonth;
+               Integer year = num1;
+               Integer dayOfMonth = num2;
 
-               if (DateUtils.isValidDate(num1, numMonth, num2, era)) {
-                       // Do nothing, it is already In the right format
+               if (DateUtils.isValidDate(num1, numMonth, num2, era)) {
+                       // The first number is a year. Already correct
                } else if (DateUtils.isValidDate(num2, numMonth, num1, era)) {
-                       // Then the first number is a year. Fix:
+                       // The second number is a year.
                        year = num2;
                        dayOfMonth = num1;
                }
@@ -513,7 +513,6 @@ public class ANTLRStructuredDateEvaluator extends StructuredDateBaseListener imp
                stack.push(year);
                stack.push(numMonth);
                stack.push(dayOfMonth);
-               stack.push(era);
 
                if (dayOfMonth > 31 || dayOfMonth <= 0) {
                        throw new StructuredDateFormatException("unexpected day of month '" + Integer.toString(dayOfMonth) + "'");
index eb1edd456233b3ffae37e9cf93c2f421953fd1ea..28583a5b5068f608ddd516ffaef8d6c5e1c565db 100644 (file)
                                          earliestSingleDate: [1995,  4,  13, CE]
                                          latestDate:         [1999,  5,  5, CE]
 
+  "13 april 15":                        # oneDisplayDate - ambigous day and year - should be Year month day
+                                         earliestSingleDate: [13,  4,  15, CE]
+
 
 # -------------------------------------------------------------------------------------------------------
 # Invalid dates