org.geotools.measure
Class AngleFormat

java.lang.Object
  extended byjava.text.Format
      extended byorg.geotools.measure.AngleFormat
All Implemented Interfaces:
java.lang.Cloneable, java.io.Serializable

public class AngleFormat
extends java.text.Format

Parse and format angle according a specified pattern. The pattern is a string containing any characters, with a special meaning for the following characters:

  The integer part of degrees
  The fractional part of degrees
  The integer part of minutes
  The fractional part of minutes
  The integer part of seconds
  The fractional part of seconds
  The decimal separator

Upper-case letters , and are for the integer parts of degrees, minutes and seconds respectively. They must appear in this order (e.g. "M'D" is illegal because "M" and "S" are inverted; "D?S" is illegal too because there is no "M" between "D" and "S"). Lower-case letters , and are for fractional parts of degrees, minutes and seconds respectively. Only one of those may appears in a pattern, and it must be the last special symbol (e.g. "D.dd?MM'" is illegal because "d" is followed by "M"; "" is illegal because "m" is not the fractional part of "D").

The number of occurrence of , , and their lower-case counterpart is the number of digits to format. For example, "DD.ddd" will format angle with two digits for the integer part and three digits for the fractional part (e.g. 4.4578 will be formatted as "04.458"). Separator characters like ?, ' and " and inserted "as-is" in the formatted string (except the decimal separator dot (""), which is replaced by the local-dependent decimal separator). Separator characters may be completely omitted; will still differentiate degrees, minutes and seconds fields according the pattern. For example, "" with the pattern "" will be parsed as 48?04.39'.

The following table gives some examples of legal patterns.
Pattern Example
DD?MM'SS" 48?30'00"
DD?MM' 48?30'
48.500
4830
483000

Since:
2.0
Version:
$Id: AngleFormat.java 17672 2006-01-19 00:25:55Z desruisseaux $
Author:
Martin Desruisseaux
See Also:
Angle, Latitude, Longitude, Serialized Form

Nested Class Summary
 
Nested classes inherited from class java.text.Format
java.text.Format.Field
 
Field Summary
static int DEGREES_FIELD
          Constant for degrees field.
static int HEMISPHERE_FIELD
          Constant for hemisphere field.
static int MINUTES_FIELD
          Constant for minutes field.
static int SECONDS_FIELD
          Constant for seconds field.
 
Constructor Summary
AngleFormat()
          Construct a new using the current default locale and a default pattern.
AngleFormat(java.lang.String pattern)
          Construct a new using the current default locale and the specified pattern.
AngleFormat(java.lang.String pattern, java.text.DecimalFormatSymbols symbols)
          Construct a new using the specified pattern and decimal symbols.
AngleFormat(java.lang.String pattern, java.util.Locale locale)
          Construct a new using the specified pattern and locale.
 
Method Summary
 void applyPattern(java.lang.String pattern)
          Set the pattern to use for parsing and formatting angle.
 boolean equals(java.lang.Object obj)
          Compare this format with the specified object for equality.
 java.lang.String format(double angle)
          Format an angle.
 java.lang.StringBuffer format(double angle, java.lang.StringBuffer toAppendTo, java.text.FieldPosition pos)
          Formats an angle and appends the resulting text to a given string buffer.
 java.lang.StringBuffer format(java.lang.Object obj, java.lang.StringBuffer toAppendTo, java.text.FieldPosition pos)
          Formats an angle, a latitude or a longitude and appends the resulting text to a given string buffer.
static AngleFormat getInstance(java.util.Locale locale)
          Construct a new for the specified locale.
 int hashCode()
          Returns a "hash value" for this object.
 Angle parse(java.lang.String source)
          Parse a string as an angle.
 Angle parse(java.lang.String source, java.text.ParsePosition pos)
          Parse a string as an angle.
 java.lang.Object parseObject(java.lang.String source)
          Parse a string as an object.
 java.lang.Object parseObject(java.lang.String source, java.text.ParsePosition pos)
          Parse a substring as an angle.
 java.lang.String toPattern()
          Returns the pattern used for parsing and formatting angles.
 java.lang.String toString()
          Returns a string representation of this object.
 
Methods inherited from class java.text.Format
clone, format, formatToCharacterIterator
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

DEGREES_FIELD

public static final int DEGREES_FIELD
Constant for degrees field. When formatting a string, this value may be specified to the FieldPosition constructor in order to get the bounding index where degrees have been written.

See Also:
Constant Field Values

MINUTES_FIELD

public static final int MINUTES_FIELD
Constant for minutes field. When formatting a string, this value may be specified to the FieldPosition constructor in order to get the bounding index where minutes have been written.

See Also:
Constant Field Values

SECONDS_FIELD

public static final int SECONDS_FIELD
Constant for seconds field. When formatting a string, this value may be specified to the FieldPosition constructor in order to get the bounding index where seconds have been written.

See Also:
Constant Field Values

HEMISPHERE_FIELD

public static final int HEMISPHERE_FIELD
Constant for hemisphere field. When formatting a string, this value may be specified to the FieldPosition constructor in order to get the bounding index where the hemisphere synbol has been written.

See Also:
Constant Field Values
Constructor Detail

AngleFormat

public AngleFormat()
Construct a new using the current default locale and a default pattern.


AngleFormat

public AngleFormat(java.lang.String pattern)
            throws java.lang.IllegalArgumentException
Construct a new using the current default locale and the specified pattern.

Parameters:
pattern - Pattern to use for parsing and formatting angle. See class description for an explanation of how this pattern work.
Throws:
java.lang.IllegalArgumentException - If the specified pattern is not legal.

AngleFormat

public AngleFormat(java.lang.String pattern,
                   java.util.Locale locale)
            throws java.lang.IllegalArgumentException
Construct a new using the specified pattern and locale.

Parameters:
pattern - Pattern to use for parsing and formatting angle. See class description for an explanation of how this pattern work.
locale - Locale to use.
Throws:
java.lang.IllegalArgumentException - If the specified pattern is not legal.

AngleFormat

public AngleFormat(java.lang.String pattern,
                   java.text.DecimalFormatSymbols symbols)
Construct a new using the specified pattern and decimal symbols.

Parameters:
pattern - Pattern to use for parsing and formatting angle. See class description for an explanation of how this pattern work.
symbols - The symbols to use for parsing and formatting numbers.
Throws:
java.lang.IllegalArgumentException - If the specified pattern is not legal.
Method Detail

getInstance

public static AngleFormat getInstance(java.util.Locale locale)
Construct a new for the specified locale.


applyPattern

public void applyPattern(java.lang.String pattern)
                  throws java.lang.IllegalArgumentException
Set the pattern to use for parsing and formatting angle. See class description for an explanation of how patterns work.

Parameters:
pattern - Pattern to use for parsing and formatting angle.
Throws:
java.lang.IllegalArgumentException - If the specified pattern is not legal.

toPattern

public java.lang.String toPattern()
Returns the pattern used for parsing and formatting angles. See class description for an explanation of how patterns work.


format

public final java.lang.String format(double angle)
Format an angle. The string will be formatted according the pattern set in the last call to applyPattern(java.lang.String).

Parameters:
angle - Angle to format, in degrees.
Returns:
The formatted string.

format

public java.lang.StringBuffer format(double angle,
                                     java.lang.StringBuffer toAppendTo,
                                     java.text.FieldPosition pos)
Formats an angle and appends the resulting text to a given string buffer. The string will be formatted according the pattern set in the last call to applyPattern(java.lang.String).

Parameters:
angle - Angle to format, in degrees.
toAppendTo - Where the text is to be appended.
pos - An optional FieldPosition identifying a field in the formatted text, or if this information is not wanted. This field position shall be constructed with one of the following constants: DEGREES_FIELD, MINUTES_FIELD, SECONDS_FIELD or HEMISPHERE_FIELD.
Returns:
The string buffer passed in as , with formatted text appended.

format

public java.lang.StringBuffer format(java.lang.Object obj,
                                     java.lang.StringBuffer toAppendTo,
                                     java.text.FieldPosition pos)
                              throws java.lang.IllegalArgumentException
Formats an angle, a latitude or a longitude and appends the resulting text to a given string buffer. The string will be formatted according the pattern set in the last call to applyPattern(java.lang.String). The argument shall be an Angle object or one of its derived class (Latitude, Longitude). If is a Latitude object, then a symbol "N" or "S" will be appended to the end of the string (the symbol will be choosen according the angle's sign). Otherwise, if is a Longitude object, then a symbol "E" or "W" will be appended to the end of the string. Otherwise, no hemisphere symbol will be appended.

Strictly speaking, formatting ordinary numbers is not the 's job. Nevertheless, this method accept Number objects. This capability is provided only as a convenient way to format altitude numbers together with longitude and latitude angles.

Parameters:
obj - Angle or Number object to format.
toAppendTo - Where the text is to be appended.
pos - An optional FieldPosition identifying a field in the formatted text, or if this information is not wanted. This field position shall be constructed with one of the following constants: DEGREES_FIELD, MINUTES_FIELD, SECONDS_FIELD or HEMISPHERE_FIELD.
Returns:
The string buffer passed in as , with formatted text appended.
Throws:
java.lang.IllegalArgumentException - if if not an object of class Angle or Number.

parse

public Angle parse(java.lang.String source,
                   java.text.ParsePosition pos)
Parse a string as an angle. This method can parse an angle even if it doesn't comply exactly to the expected pattern. For example, this method will parse correctly string "48?12.34'" even if the expected pattern was "" (i.e. the string should have been ""). Spaces between degrees, minutes and secondes are ignored. If the string ends with an hemisphere symbol "N" or "S", then this method returns an object of class Latitude. Otherwise, if the string ends with an hemisphere symbol "E" or "W", then this method returns an object of class Longitude. Otherwise, this method returns an object of class Angle.

Parameters:
source - A String whose beginning should be parsed.
pos - Position where to start parsing.
Returns:
The parsed string as an Angle, Latitude or Longitude object.

parse

public Angle parse(java.lang.String source)
            throws java.text.ParseException
Parse a string as an angle.

Parameters:
source - The string to parse.
Returns:
The parsed string as an Angle, Latitude or Longitude object.
Throws:
java.text.ParseException - if the string has not been fully parsed.

parseObject

public java.lang.Object parseObject(java.lang.String source,
                                    java.text.ParsePosition pos)
Parse a substring as an angle. Default implementation invokes parse(String, ParsePosition).

Parameters:
source - A String whose beginning should be parsed.
pos - Position where to start parsing.
Returns:
The parsed string as an Angle, Latitude or Longitude object.

parseObject

public java.lang.Object parseObject(java.lang.String source)
                             throws java.text.ParseException
Parse a string as an object. Default implementation invokes parse(String).

Parameters:
source - The string to parse.
Returns:
The parsed string as an Angle, Latitude or Longitude object.
Throws:
java.text.ParseException - if the string has not been fully parsed.

hashCode

public int hashCode()
Returns a "hash value" for this object.


equals

public boolean equals(java.lang.Object obj)
Compare this format with the specified object for equality.


toString

public java.lang.String toString()
Returns a string representation of this object.



Copyright © GeoTools. All Rights Reserved.