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 inCalendar
objects 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 Calendar
DEFAULT_CAL
The Java platform defaultCalendar
with UTC & ROOT Locale.static Calendar
JAVA_UTIL_TIME_COMPAT_CAL
A Calendar instance compatible withZonedDateTime
as 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 void
clearFieldsAfter(Calendar cal, int field)
Calendar utility method: CallsCalendar.clear(int)
for every field afterfield
.int
getCalPrecisionField(Calendar cal)
Calendar utility method: Gets the Calendar field code of the last field that is set prior to an unset field.int
getNumSubCells(NumberRangePrefixTree.UnitNRShape lv)
Returns the number of sub-cells beneath the given UnitNRShape.int
getTreeLevelForCalendarField(int calField)
Calendar utility method: Returns the spatial prefix tree level for the correspondingCalendar
field, such asCalendar.YEAR
.Calendar
newCal()
Calendar utility method: Returns a clone of theCalendar
passed to the constructor with all fields cleared.Calendar
parseCalendar(String str)
Calendar utility method: The reverse oftoString(java.util.Calendar)
.protected NumberRangePrefixTree.UnitNRShape
parseUnitShape(String str)
Parse a String to a UnitNRShape.Calendar
toCalendar(NumberRangePrefixTree.UnitNRShape lv)
Converts theNumberRangePrefixTree.UnitNRShape
shape to a corresponding Calendar that is cleared below its level.Object
toObject(NumberRangePrefixTree.UnitNRShape shape)
NumberRangePrefixTree.UnitNRShape
toShape(Calendar cal)
Converts the Calendar into a Shape.String
toString(Calendar cal)
Calendar utility method consistent withDateTimeFormatter.ISO_INSTANT
except has no trailing 'Z', and will be truncated to the units given according toCalendar.isSet(int)
.protected String
toString(NumberRangePrefixTree.UnitNRShape lv)
A string representation of the UnitNRShape that is parse-able byNumberRangePrefixTree.parseUnitShape(String)
.NumberRangePrefixTree.UnitNRShape
toUnitShape(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 defaultCalendar
with 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 withZonedDateTime
as 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_CAL
andJAVA_UTIL_TIME_COMPAT_CAL
.
-
-
Method Detail
-
getNumSubCells
public int getNumSubCells(NumberRangePrefixTree.UnitNRShape lv)
Description copied from class:NumberRangePrefixTree
Returns the number of sub-cells beneath the given UnitNRShape.- Overrides:
getNumSubCells
in classNumberRangePrefixTree
-
newCal
public Calendar newCal()
Calendar utility method: Returns a clone of theCalendar
passed to the constructor with all fields cleared.
-
getTreeLevelForCalendarField
public int getTreeLevelForCalendarField(int calField)
Calendar utility method: Returns the spatial prefix tree level for the correspondingCalendar
field, 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)
Convertsvalue
from aCalendar
orDate
to aShape
. Other arguments result in aIllegalArgumentException
. If a Calendar is passed in, there might be problems if it is not created vianewCal()
.- Specified by:
toUnitShape
in 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:
toObject
in classNumberRangePrefixTree
-
toCalendar
public Calendar toCalendar(NumberRangePrefixTree.UnitNRShape lv)
Converts theNumberRangePrefixTree.UnitNRShape
shape to a corresponding Calendar that is cleared below its level.
-
toString
protected String toString(NumberRangePrefixTree.UnitNRShape lv)
Description copied from class:NumberRangePrefixTree
A string representation of the UnitNRShape that is parse-able byNumberRangePrefixTree.parseUnitShape(String)
.- Specified by:
toString
in classNumberRangePrefixTree
-
toString
public String toString(Calendar cal)
Calendar utility method consistent withDateTimeFormatter.ISO_INSTANT
except 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:NumberRangePrefixTree
Parse a String to a UnitNRShape. "*" should be the full-range (level 0 shape).- Specified by:
parseUnitShape
in 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
-
-