From: cesarvh Date: Mon, 5 Nov 2018 22:29:04 +0000 (-0800) Subject: UJ-2: added test for 13 apr 15, cleaned up code X-Git-Url: https://git.aero2k.de/?a=commitdiff_plain;h=ce10fc5b3ff61b977e4cde98402284a4e8745a91;p=tmp%2Fjakarta-migration.git UJ-2: added test for 13 apr 15, cleaned up code --- diff --git a/services/structureddate/structureddate/src/main/java/org/collectionspace/services/structureddate/antlr/ANTLRStructuredDateEvaluator.java b/services/structureddate/structureddate/src/main/java/org/collectionspace/services/structureddate/antlr/ANTLRStructuredDateEvaluator.java index 1160a5aa2..5c9066ff9 100644 --- a/services/structureddate/structureddate/src/main/java/org/collectionspace/services/structureddate/antlr/ANTLRStructuredDateEvaluator.java +++ b/services/structureddate/structureddate/src/main/java/org/collectionspace/services/structureddate/antlr/ANTLRStructuredDateEvaluator.java @@ -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) + "'"); diff --git a/services/structureddate/structureddate/src/test/resources/test-dates.yaml b/services/structureddate/structureddate/src/test/resources/test-dates.yaml index eb1edd456..28583a5b5 100644 --- a/services/structureddate/structureddate/src/test/resources/test-dates.yaml +++ b/services/structureddate/structureddate/src/test/resources/test-dates.yaml @@ -1152,6 +1152,9 @@ 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