From: cesarvh Date: Wed, 17 Oct 2018 19:28:58 +0000 (-0700) Subject: HM-5: Added Day X-Git-Url: https://git.aero2k.de/?a=commitdiff_plain;h=a3973b2175ff993705758b4819c3d8b1e0c6d514;p=tmp%2Fjakarta-migration.git HM-5: Added Day Month Year Era format --- diff --git a/services/structureddate/structureddate/src/main/antlr4/org/collectionspace/services/structureddate/antlr/StructuredDate.g4 b/services/structureddate/structureddate/src/main/antlr4/org/collectionspace/services/structureddate/antlr/StructuredDate.g4 index 9045f658e..7a0793055 100644 --- a/services/structureddate/structureddate/src/main/antlr4/org/collectionspace/services/structureddate/antlr/StructuredDate.g4 +++ b/services/structureddate/structureddate/src/main/antlr4/org/collectionspace/services/structureddate/antlr/StructuredDate.g4 @@ -8,14 +8,17 @@ grammar StructuredDate; /* * Parser rules */ +// unknownDisplayDate: -oneDisplayDate: displayDate ( DOT | QUESTION )? EOF ; +oneDisplayDate: displayDate ( DOT | QUESTION )? EOF ; displayDate: uncertainDate | certainDate /* TODO: Need to decide what "before" and "after" actually mean | beforeOrAfterDate */ +| beforeOrAfterDate +// | unknownDate ; uncertainDate: CIRCA certainDate ; @@ -93,26 +96,22 @@ century: ( strCentury | numCentury ) era? ; millennium: nth MILLENNIUM era? ; -strDate: strMonth ( numDayOfMonth | nth ) COMMA? numYear era?; +strDate: strMonth ( numDayOfMonth | nth ) COMMA? numYear era; invStrDate: era num COMMA? strMonth num -| era? num COMMA strMonth num ; -dayFirstDate: num strMonth COMMA? num era -| num strMonth COMMA num era? -| nth strMonth COMMA? num era? ; -dayOrYearFirstDate: num strMonth num ; -invStrDateEraLastDate: num COMMA strMonth num era? ; -strDayInMonthRange: strMonth numDayOfMonth ( HYPHEN | DASH ) numDayOfMonth COMMA? numYear era? ; -monthInYearRange: strMonth ( HYPHEN | DASH ) strMonth COMMA? numYear era? ; -nthQuarterInYearRange: nthQuarter ( HYPHEN | DASH ) nthQuarter COMMA? numYear era? ; -strSeasonInYearRange: strSeason ( HYPHEN | DASH ) strSeason COMMA? numYear era? ; -numDayInMonthRange: numMonth SLASH numDayOfMonth ( HYPHEN | DASH ) numDayOfMonth SLASH numYear era? ; -numDate: num SLASH num SLASH num era? -| num HYPHEN num HYPHEN num era? ; -monthYear: strMonth COMMA? numYear era? ; -invMonthYear: era? numYear COMMA? strMonth ; -seasonYear: strSeason COMMA? numYear era? ; -invSeasonYear: era? numYear COMMA? strSeason ; -nthQuarterYear: nthQuarter numYear era? ; +| ( num | nth ) strMonth COMMA? num era ; +strDayInMonthRange: strMonth numDayOfMonth ( HYPHEN | DASH ) numDayOfMonth COMMA? numYear era ; +monthInYearRange: strMonth ( HYPHEN | DASH ) strMonth COMMA? numYear era ; +nthQuarterInYearRange: nthQuarter ( HYPHEN | DASH ) nthQuarter COMMA? numYear era ; +strSeasonInYearRange: strSeason ( HYPHEN | DASH ) strSeason COMMA? numYear era ; +numDayInMonthRange: numMonth SLASH numDayOfMonth ( HYPHEN | DASH ) numDayOfMonth SLASH numYear era +| numMonth SLASH numYear ( HYPHEN | DASH ) numMonth SLASH numYear era ; +numDate: num SLASH num SLASH num era +| num HYPHEN num HYPHEN num era ; +monthYear: strMonth COMMA? numYear era ; +invMonthYear: era numYear COMMA? strMonth ; +seasonYear: strSeason COMMA? numYear era ; +invSeasonYear: era numYear COMMA? strSeason ; +nthQuarterYear: nthQuarter numYear era ; nthQuarter: ( nth | LAST ) QUARTER ; nthHalf: ( nth | LAST ) HALF ; numDecade: TENS ; @@ -129,7 +128,7 @@ numYear: NUMBER ; numMonth: NUMBER ; numDayOfMonth: NUMBER ; num: NUMBER ; - +// unknownDate: UNKNOWN ; /* * Lexer rules @@ -171,3 +170,4 @@ DOT: '.' ; QUESTION: '?' ; STRING: [a-z]+ ; OTHER: . ; +// UNKNOWN: 'unknown'; \ No newline at end of file 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 5c9066ff9..ad7eb3645 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 @@ -460,7 +460,7 @@ public class ANTLRStructuredDateEvaluator extends StructuredDateBaseListener imp @Override public void exitInvStrDate(InvStrDateContext ctx) { if (ctx.exception != null) return; - + // Reorder the stack into a canonical ordering, // year-month-day-era. @@ -1156,6 +1156,7 @@ public class ANTLRStructuredDateEvaluator extends StructuredDateBaseListener imp stack.push(num); } + protected String getErrorMessage(RecognitionException re) { String message = ""; diff --git a/services/structureddate/structureddate/src/test/resources/test-dates.yaml b/services/structureddate/structureddate/src/test/resources/test-dates.yaml index 28583a5b5..d59f398f3 100644 --- a/services/structureddate/structureddate/src/test/resources/test-dates.yaml +++ b/services/structureddate/structureddate/src/test/resources/test-dates.yaml @@ -1155,6 +1155,30 @@ "13 april 15": # oneDisplayDate - ambigous day and year - should be Year month day earliestSingleDate: [13, 4, 15, CE] + "13 april 1995": # oneDisplayDate - with question mark + earliestSingleDate: [1995, 4, 13, CE] + + "13 apr 1995": # oneDisplayDate - with question mark + earliestSingleDate: [1995, 4, 13, CE] + + "13th APRIL 1995": # oneDisplayDate - with question mark + earliestSingleDate: [1995, 4, 13, CE] + + "13 april 1995 - 13 april 2018": + earliestSingleDate: [1995, 4, 13, CE] + latestDate: [2018, 4, 13, CE] + + "after 13 april 1995": + earliestSingleDate: [1995, 4, 13, CE] + latestDate: [2018, 10, 17, CE] + + "after april 13 1995": + earliestSingleDate: [1995, 4, 13, CE] + latestDate: [2018, 10, 17, CE] + + "unknown": + earliestSingleDate: [] + # ------------------------------------------------------------------------------------------------------- # Invalid dates