Package org.apache.sis.measure
Class RangeFormat
- All Implemented Interfaces:
- Serializable,- Cloneable,- Localized
Parses and formats 
Range instances according the given locale.
 This class complies to the format described in the ISO 31-11
 standard, except that the minimal and maximal values are separated by the "…" character
 instead of coma. More specifically, the format is defined as below:
 - If the range is empty, then the range is represented by "{}".
- Otherwise if the minimal value is equal to the
       maximal value, then that single value is formatted
       inside braces as in "{value}".
- Otherwise the minimal and maximal values are formatted inside bracket or parenthesis,
       depending on whether each endpoint is inclusive or exclusive:
     - "[min … max]" if both endpoints are inclusive (closed interval);
- "(min … max)" if both endpoints are exclusive (open interval);
- or a mix of both styles if an endpoint is inclusive while the other is exclusive.
 ∞" symbol is used in place ofminormaxfor unbounded ranges.
- "
MeasurementRange, then the
 unit of measurement is appended except for empty ranges.
 Lenient parsing
At parsing time, the above formatting rules are relaxed as below:- Empty ranges can be represented by "[]"or "()" in addition to the standard "{}".
- The braces are optional for singleton values, i.e. "value" is accepted as well as "{value}".
Range type and type of range elements
The kind of ranges created by theparse(…) methods is determined
 by the type of range elements:
 - If the elements type is assignable to Date, then theparse(…)methods will createRange<Date>objects.
- If the elements type is assignable to Number, then:- If the text to parse contains a unit of measurement, then
           the parse(…)methods will createMeasurementRangeobjects.
- Otherwise the parse(…)methods will createNumberRangeobjects.
 
- If the text to parse contains a unit of measurement, then
           the 
- Since:
- 0.3
- See Also:
Defined in the sis-utility module
- 
Nested Class SummaryNested ClassesModifier and TypeClassDescriptionstatic final classConstants that are used as attribute keys in the iterator returned fromformatToCharacterIterator(Object).
- 
Field SummaryFieldsModifier and TypeFieldDescriptionprotected final FormatThe format to use for parsing and formatting the range components.protected final Class<?>The type of the range components.protected final UnitFormatThe format for unit of measurement, ornullif none.
- 
Constructor SummaryConstructorsConstructorDescriptionCreates a new format for parsing and formatting number ranges using the default locale.RangeFormat(Locale locale) Creates a new format for parsing and formatting number ranges using the given locale.RangeFormat(Locale locale, Class<?> elementType) Creates a new format for parsing and formatting ranges of the given element type using the given locale.RangeFormat(Locale locale, TimeZone timezone) Creates a new format for parsing and formattingRange<Date>using the given locale and timezone.
- 
Method SummaryModifier and TypeMethodDescriptionclone()Returns a clone of this range format.format(Object range, StringBuffer toAppendTo, FieldPosition pos) Formats aRangeand appends the resulting text to a given string buffer.Formats a range as an attributed character iterator.getElementPattern(boolean localized) Returns the pattern used byelementFormatfor formatting the minimum and maximum values.Returns this formatter locale.booleanReturnstrueif thisRangeFormatshall use the alternate form at formatting time.Range<?>Parses text from the given string to produce a range.Range<?>parse(String source, ParsePosition pos) Parses text from a string to produce a range.parseObject(String source) Parses text from a string to produce a range.parseObject(String source, ParsePosition pos) Parses text from a string to produce a range.voidsetAlternateForm(boolean alternateForm) Sets whether thisRangeFormatshall use the alternate form at formatting time.voidsetElementPattern(String pattern, boolean localized) Sets the pattern to be used byelementFormatfor formatting the minimum and maximum values.
- 
Field Details- 
elementTypeThe type of the range components. Valid types areNumber,Angle,Dateor a subclass of those types. This value determines the kind of range to be created by the parse method:- See Also:
 
- 
elementFormatThe format to use for parsing and formatting the range components. The format is determined from the element type:- AngleFormatif the element type is assignable to- Angle.
- NumberFormatif the element type is assignable to- Number.
- DateFormatif the element type is assignable to- Date.
 
- 
unitFormatThe format for unit of measurement, ornullif none. This is non-null if and only ifelementTypeis assignable toNumberbut not toAngle.
 
- 
- 
Constructor Details- 
RangeFormatpublic RangeFormat()Creates a new format for parsing and formatting number ranges using the default locale.
- 
RangeFormatCreates a new format for parsing and formatting number ranges using the given locale.- Parameters:
- locale- the locale for parsing and formatting range components.
 
- 
RangeFormatCreates a new format for parsing and formattingRange<Date>using the given locale and timezone.- Parameters:
- locale- the locale for parsing and formatting range components.
- timezone- the timezone for the dates to be formatted.
 
- 
RangeFormatCreates a new format for parsing and formatting ranges of the given element type using the given locale. The element type is typicallyDate.classor some subclass ofNumber.class.- Parameters:
- locale- the locale for parsing and formatting range components.
- elementType- the type of range components.
- Throws:
- IllegalArgumentException- if the given type is not recognized by this constructor.
 
 
- 
- 
Method Details- 
getLocaleReturns this formatter locale. This is the locale specified at construction time if any, or the default locale at construction time otherwise.- Specified by:
- getLocalein interface- Localized
- Returns:
- this formatter locale (never null).
- Since:
- 1.0
 
- 
getElementPatternReturns the pattern used byelementFormatfor formatting the minimum and maximum values. If the element format does not use pattern, returnsnull.- Parameters:
- localized-- truefor returning the localized pattern, or- falsefor the unlocalized one.
- Returns:
- the pattern, or nullif theelementFormatdoesn't use pattern.
- See Also:
 
- 
setElementPatternSets the pattern to be used byelementFormatfor formatting the minimum and maximum values.- Parameters:
- pattern- the new pattern.
- localized-- trueif the given pattern is localized.
- Throws:
- IllegalStateException- if the- elementFormatdoes not use pattern.
- See Also:
 
- 
isAlternateFormpublic boolean isAlternateForm()Returnstrueif thisRangeFormatshall use the alternate form at formatting time. The alternate form expresses open intervals like]a…b[instead of(a…b).This flag has no effect on parsing, since the parser accepts both forms. - Returns:
- truefor using the alternate format instead of the default format.
 
- 
setAlternateFormpublic void setAlternateForm(boolean alternateForm) Sets whether thisRangeFormatshall use the alternate form at formatting time. The alternate form expresses open intervals like]a…b[instead of(a…b).- Parameters:
- alternateForm-- truefor using the alternate format, or- falsefor using the default format.
 
- 
formatFormats aRangeand appends the resulting text to a given string buffer. See the class javadoc for a description of the format.- Specified by:
- formatin class- Format
- Parameters:
- range- the- Rangeobject to format.
- toAppendTo- where the text is to be appended.
- pos- identifies a field in the formatted text, or- nullif none.
- Returns:
- the string buffer passed in as toAppendTo, with formatted text appended.
- Throws:
- IllegalArgumentException- if this formatter cannot format the given object.
 
- 
formatToCharacterIteratorFormats a range as an attributed character iterator. Callers can iterate and queries the attribute values as in the following example:
 Alternatively, if the current iterator index is before the start of the minimum value field, then the starting position of that field can be obtained directly byAttributedCharacterIterator it = rangeFormat.formatToCharacterIterator(myRange); for (char c=it.first(); c!=AttributedCharacterIterator.DONE; c=c.next()) { // 'c' is a character from the formatted string. if (it.getAttribute(RangeFormat.Field.MIN_VALUE) != null) { // If we enter this block, then the character 'c' is part of the minimal value, // This field extends from it.getRunStart(MIN_VALUE) to it.getRunLimit(MIN_VALUE). } }it.getRunLimit(MIN_VALUE). If the current iterator index is inside the minimum value field, then the above method call will rather returns the end of that field. The same strategy works for other all fields too.The returned character iterator contains all NumberFormat.Field,DateFormat.FieldorAngleFormat.Fieldattributes in addition to theRangeFormat.Fieldones. Consequently, the same character may have more than one attribute.In Apache SIS implementation, the returned character iterator also implements the CharSequenceinterface for convenience.- Overrides:
- formatToCharacterIteratorin class- Format
- Parameters:
- range- the- Rangeobject to format.
- Returns:
- a character iterator together with the attributes describing the formatted value.
- Throws:
- IllegalArgumentException- if- valueif not an instance of- Range.
 
- 
parseObjectParses text from a string to produce a range. The default implementation delegates toparse(String)with no additional work.- Overrides:
- parseObjectin class- Format
- Parameters:
- source- the text, part of which should be parsed.
- Returns:
- a range parsed from the string.
- Throws:
- ParseException- if the given string cannot be fully parsed.
 
- 
parseObjectParses text from a string to produce a range. The default implementation delegates toparse(String, ParsePosition)with no additional work.- Specified by:
- parseObjectin class- Format
- Parameters:
- source- the text, part of which should be parsed.
- pos- index and error index information as described above.
- Returns:
- a range parsed from the string, or nullin case of error.
 
- 
parseParses text from the given string to produce a range. This method use the full string. If there is some unparsed characters after the parsed range, then this method thrown an exception.- Parameters:
- source- the text to parse.
- Returns:
- the parsed range (never null).
- Throws:
- ParseException- if the given string cannot be fully parsed.
 
- 
parseParses text from a string to produce a range. The method attempts to parse text starting at the index given bypos. If parsing succeeds, then the index ofposis updated to the index after the last character used, and the parsed range is returned. If an error occurs, then the index ofposis not changed, the error index ofposis set to the index of the character where the error occurred, andnullis returned.- Parameters:
- source- the text, part of which should be parsed.
- pos- index and error index information as described above.
- Returns:
- a range parsed from the string, or nullin case of error.
 
- 
cloneReturns a clone of this range format.
 
-