]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
CC-396: Added format to fix range intervals where only first has an era
authorcesarvh <cesarv.h@berkeley.edu>
Thu, 18 Apr 2019 00:18:36 +0000 (17:18 -0700)
committercesarvh <cesarv.h@berkeley.edu>
Fri, 19 Apr 2019 22:34:54 +0000 (15:34 -0700)
services/structureddate/structureddate/src/main/antlr4/org/collectionspace/services/structureddate/antlr/StructuredDate.g4
services/structureddate/structureddate/src/main/java/org/collectionspace/services/structureddate/antlr/ANTLRStructuredDateEvaluator.java
services/structureddate/structureddate/src/test/resources/test-dates.yaml

index 6eb14b19a3ab3c300d05aad5ad8f406a8555c429..a4781ab44f2d70d3ecfec5a283430c081353b276 100644 (file)
@@ -20,7 +20,8 @@ displayDate:           uncertainDate
 
 uncertainDate:         CIRCA certainDate ;
 
-certainDate:           hyphenatedRange
+certainDate:           partialEraRange
+|                      hyphenatedRange
 |                      singleInterval
 ;
 
@@ -96,6 +97,7 @@ century:               ( strCentury | numCentury ) era? ;
 
 millennium:            nth MILLENNIUM era? ;
 
+partialEraRange:      num strMonth num era (DASH|HYPHEN) num strMonth num ;
 romanDate:             num (HYPHEN | SLASH) romanMonth (HYPHEN | SLASH) numYear era? ;
 strDate:               strMonth ( numDayOfMonth | nth ) COMMA? numYear era?;
 invStrDate:            era num COMMA? strMonth num
index 89e82f3ea0582e2eedddd9cb0d7f3355108c8c88..937cb662efc79b9498ac50a82e8f2590a6059759 100644 (file)
@@ -76,6 +76,7 @@ import org.collectionspace.services.structureddate.antlr.StructuredDateParser.Nu
 import org.collectionspace.services.structureddate.antlr.StructuredDateParser.PartOfContext;
 import org.collectionspace.services.structureddate.antlr.StructuredDateParser.PartialCenturyContext;
 import org.collectionspace.services.structureddate.antlr.StructuredDateParser.PartialDecadeContext;
+import org.collectionspace.services.structureddate.antlr.StructuredDateParser.PartialEraRangeContext;
 import org.collectionspace.services.structureddate.antlr.StructuredDateParser.PartialYearContext;
 import org.collectionspace.services.structureddate.antlr.StructuredDateParser.RomanDateContext;
 import org.collectionspace.services.structureddate.antlr.StructuredDateParser.QuarterCenturyContext;
@@ -1197,6 +1198,23 @@ public class ANTLRStructuredDateEvaluator extends StructuredDateBaseListener imp
                stack.push(dayOfMonth);
        }
 
+       @Override
+       public void exitPartialEraRange(PartialEraRangeContext ctx) {
+               if (ctx.exception != null) return;
+
+               Integer secondYear = (Integer) stack.pop();
+               Integer secondMonth = (Integer) stack.pop();
+               Integer secondDay = (Integer) stack.pop();
+
+               Era era = (Era) stack.pop();
+               Integer firstYear = (Integer) stack.pop();
+               Integer firstMonth = (Integer) stack.pop();
+               Integer firstDay = (Integer) stack.pop();
+
+               stack.push(new Date(secondYear, secondMonth, secondDay, null));
+               stack.push(new Date(firstYear, firstMonth, firstDay, era));
+       }
+
        @Override
        public void exitNum(NumContext ctx) {
                if (ctx.exception != null) return;
@@ -1219,7 +1237,6 @@ public class ANTLRStructuredDateEvaluator extends StructuredDateBaseListener imp
        @Override
        public void exitRomanDate(RomanDateContext ctx) {
                if (ctx.exception != null) return;
-               System.out.println("I am going in here");
                
                Era era = (ctx.era() == null) ? null : (Era) stack.pop();
                Integer year = (Integer) stack.pop();
index 344737e8fb7a81b2af5a908ec482db2a36ce4cd5..824a1b2f08a42301c482f047be0be1a70d2b820e 100644 (file)
   '29-IV-2018':                          # Day-Month-Year with roman numeral as month 
                                          earliestSingleDate: [2018,  4,  29, CE]
 
-  '01-IV-2017 BCE':                          # Day-Month-Year with roman numeral as month, with Era
-                                          earliestSingleDate: [2017, 4, 1, BCE]  
+  '01-IV-2017 BCE':                      # Day-Month-Year with roman numeral as month, with Era
+                                         earliestSingleDate: [2017, 4, 1, BCE]  
   
-  # '12 june 1942 - 13 june 1943':            # hyphenatedRange, date with comma'd numbers
-  #                                        earliestSingleDate: [1942,  6,  12, CE]
-  #                                        latestDate:         [1942,  6,  13, CE]
+  '12 june 1942 BCE - 13 june 1943':     # hyphenatedRange range with era only in first interval, mixed eras
+                                         earliestSingleDate: [1942,  6,  12, BCE]
+                                         latestDate:         [1943,  6,  13, CE]
+
+  '13 april 1995 CE - 18 april 2019':    # hyphenatedRange range with era only in first interval
+                                         earliestSingleDate: [1995, 4, 13, CE]
+                                         latestDate:         [2019, 4, 18, CE]
 
 # -------------------------------------------------------------------------------------------------------
 # Invalid dates