Class DateRangePrefixTree
- java.lang.Object
-
- org.apache.lucene.spatial.prefix.tree.SpatialPrefixTree
-
- org.apache.lucene.spatial.prefix.tree.NumberRangePrefixTree
-
- org.apache.lucene.spatial.prefix.tree.DateRangePrefixTree
-
public class DateRangePrefixTree extends NumberRangePrefixTree
A PrefixTree for date ranges in which the levels of the tree occur at natural periods of time (e.g. years, months, ...). You pass inCalendarobjects with the desired fields set and the unspecified fields unset, which conveys the precision. The implementation makes some optimization assumptions about aGregorianCalendar; others could probably be supported easily.Warning: If you construct a Calendar and then get something from the object like a field (e.g. year) or milliseconds, then every field is fully set by side-effect. So after setting the fields, pass it to this API first.
- WARNING: This API is experimental and might change in incompatible ways in the next release.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.lucene.spatial.prefix.tree.NumberRangePrefixTree
NumberRangePrefixTree.NRCell, NumberRangePrefixTree.NRShape, NumberRangePrefixTree.SpanUnitsNRShape, NumberRangePrefixTree.UnitNRShape
-
-
Field Summary
Fields Modifier and Type Field Description static CalendarDEFAULT_CALThe Java platform defaultCalendarwith UTC & ROOT Locale.static CalendarJAVA_UTIL_TIME_COMPAT_CALA Calendar instance compatible withZonedDateTimeas seen fromGregorianCalendar.from(ZonedDateTime).-
Fields inherited from class org.apache.lucene.spatial.prefix.tree.NumberRangePrefixTree
levelByTermLen, maxSubCellsByLevel, maxTermLen, termLenByLevel
-
Fields inherited from class org.apache.lucene.spatial.prefix.tree.SpatialPrefixTree
ctx, maxLevels
-
-
Constructor Summary
Constructors Constructor Description DateRangePrefixTree(Calendar templateCal)Constructs with the specified calendar used as a template to be cloned whenever a new Calendar needs to be created.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclearFieldsAfter(Calendar cal, int field)Calendar utility method: CallsCalendar.clear(int)for every field afterfield.intgetCalPrecisionField(Calendar cal)Calendar utility method: Gets the Calendar field code of the last field that is set prior to an unset field.intgetNumSubCells(NumberRangePrefixTree.UnitNRShape lv)Returns the number of sub-cells beneath the given UnitNRShape.intgetTreeLevelForCalendarField(int calField)Calendar utility method: Returns the spatial prefix tree level for the correspondingCalendarfield, such asCalendar.YEAR.CalendarnewCal()Calendar utility method: Returns a clone of theCalendarpassed to the constructor with all fields cleared.CalendarparseCalendar(String str)Calendar utility method: The reverse oftoString(java.util.Calendar).protected NumberRangePrefixTree.UnitNRShapeparseUnitShape(String str)Parse a String to a UnitNRShape.CalendartoCalendar(NumberRangePrefixTree.UnitNRShape lv)Converts theNumberRangePrefixTree.UnitNRShapeshape to a corresponding Calendar that is cleared below its level.ObjecttoObject(NumberRangePrefixTree.UnitNRShape shape)NumberRangePrefixTree.UnitNRShapetoShape(Calendar cal)Converts the Calendar into a Shape.StringtoString(Calendar cal)Calendar utility method consistent withDateTimeFormatter.ISO_INSTANTexcept has no trailing 'Z', and will be truncated to the units given according toCalendar.isSet(int).protected StringtoString(NumberRangePrefixTree.UnitNRShape lv)A string representation of the UnitNRShape that is parse-able byNumberRangePrefixTree.parseUnitShape(String).NumberRangePrefixTree.UnitNRShapetoUnitShape(Object value)-
Methods inherited from class org.apache.lucene.spatial.prefix.tree.NumberRangePrefixTree
comparePrefix, getDistanceForLevel, getLevelForDistance, getWorldCell, newCellStack, parseShape, readCell, toRangeShape, toShape, toString, toStringUnitRaw
-
Methods inherited from class org.apache.lucene.spatial.prefix.tree.SpatialPrefixTree
getMaxLevels, getSpatialContext, getTreeCellIterator
-
-
-
-
Field Detail
-
DEFAULT_CAL
public static final Calendar DEFAULT_CAL
The Java platform defaultCalendarwith UTC & ROOT Locale. Generally aGregorianCalendar. Do not modify this!
-
JAVA_UTIL_TIME_COMPAT_CAL
public static final Calendar JAVA_UTIL_TIME_COMPAT_CAL
A Calendar instance compatible withZonedDateTimeas seen fromGregorianCalendar.from(ZonedDateTime). Do not modify this!
-
-
Constructor Detail
-
DateRangePrefixTree
public DateRangePrefixTree(Calendar templateCal)
Constructs with the specified calendar used as a template to be cloned whenever a new Calendar needs to be created. SeeDEFAULT_CALandJAVA_UTIL_TIME_COMPAT_CAL.
-
-
Method Detail
-
getNumSubCells
public int getNumSubCells(NumberRangePrefixTree.UnitNRShape lv)
Description copied from class:NumberRangePrefixTreeReturns the number of sub-cells beneath the given UnitNRShape.- Overrides:
getNumSubCellsin classNumberRangePrefixTree
-
newCal
public Calendar newCal()
Calendar utility method: Returns a clone of theCalendarpassed to the constructor with all fields cleared.
-
getTreeLevelForCalendarField
public int getTreeLevelForCalendarField(int calField)
Calendar utility method: Returns the spatial prefix tree level for the correspondingCalendarfield, such asCalendar.YEAR. If there's no match, the next greatest level is returned as a negative value.
-
getCalPrecisionField
public int getCalPrecisionField(Calendar cal)
Calendar utility method: Gets the Calendar field code of the last field that is set prior to an unset field. It only examines fields relevant to the prefix tree. If no fields are set, it returns -1.
-
clearFieldsAfter
public void clearFieldsAfter(Calendar cal, int field)
Calendar utility method: CallsCalendar.clear(int)for every field afterfield. Beware of Calendar underflow.
-
toUnitShape
public NumberRangePrefixTree.UnitNRShape toUnitShape(Object value)
Convertsvaluefrom aCalendarorDateto aShape. Other arguments result in aIllegalArgumentException. If a Calendar is passed in, there might be problems if it is not created vianewCal().- Specified by:
toUnitShapein classNumberRangePrefixTree
-
toShape
public NumberRangePrefixTree.UnitNRShape toShape(Calendar cal)
Converts the Calendar into a Shape. The isSet() state of the Calendar is re-instated when done. If a Calendar is passed in, there might be problems if it is not created vianewCal().
-
toObject
public Object toObject(NumberRangePrefixTree.UnitNRShape shape)
- Specified by:
toObjectin classNumberRangePrefixTree
-
toCalendar
public Calendar toCalendar(NumberRangePrefixTree.UnitNRShape lv)
Converts theNumberRangePrefixTree.UnitNRShapeshape to a corresponding Calendar that is cleared below its level.
-
toString
protected String toString(NumberRangePrefixTree.UnitNRShape lv)
Description copied from class:NumberRangePrefixTreeA string representation of the UnitNRShape that is parse-able byNumberRangePrefixTree.parseUnitShape(String).- Specified by:
toStringin classNumberRangePrefixTree
-
toString
public String toString(Calendar cal)
Calendar utility method consistent withDateTimeFormatter.ISO_INSTANTexcept has no trailing 'Z', and will be truncated to the units given according toCalendar.isSet(int). A fully cleared calendar will yield the string "*". The isSet() state of the Calendar is re-instated when done.
-
parseUnitShape
protected NumberRangePrefixTree.UnitNRShape parseUnitShape(String str) throws ParseException
Description copied from class:NumberRangePrefixTreeParse a String to a UnitNRShape. "*" should be the full-range (level 0 shape).- Specified by:
parseUnitShapein classNumberRangePrefixTree- Throws:
ParseException
-
parseCalendar
public Calendar parseCalendar(String str) throws ParseException
Calendar utility method: The reverse oftoString(java.util.Calendar). It will only set the fields found, leaving the remainder in an un-set state. A leading '-' or '+' is optional (positive assumed), and a trailing 'Z' is also optional.- Parameters:
str- not null and not empty- Returns:
- not null
- Throws:
ParseException
-
-