Class FeatureFormat

All Implemented Interfaces:
Serializable, Cloneable, Localized

public class FeatureFormat extends TabularFormat<Object>
Formats features or feature types in a tabular format. This format assumes a monospaced font and an encoding supporting drawing box characters (e.g. UTF-8).
Example: a feature named “City” and containing 3 properties (“name”, “population” and “twin town”) may be formatted like below. The two first properties are attributes while the last property is an association to another feature.

Limitations

  • The current implementation can only format features — parsing is not yet implemented.
  • FeatureFormat, like most java.text.Format subclasses, is not thread-safe.
Since:
0.5
Version:
1.0
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      For cross-version compatibility.
      See Also:
    • SEPARATOR

      private static final String SEPARATOR
      The separator to use in comma-separated lists.
      See Also:
    • INSTANCE

      private static final AtomicReference<FeatureFormat> INSTANCE
      An instance created when first needed and potentially shared.
    • displayLocale

      private final Locale displayLocale
      The locale for international strings.
    • columns

      private final EnumSet<FeatureFormat.Column> columns
      The columns to include in the table formatted by this FeatureFormat. By default, all columns having at least one value are included.
    • MAXIMAL_VALUE_LENGTH

      private static final int MAXIMAL_VALUE_LENGTH
      Maximal length of attribute values, in number of characters. If a value is longer than this length, it will be truncated.

      This is defined as a static final variable for now because its value is approximate: it is a number of characters instead of a number of code points, and that length may be exceeded by a few characters if the overflow happen while appending the list separator.

      See Also:
    • illegalNaN

      private transient int illegalNaN
      The bit patterns of the last Float.NaN value for which MathFunctions.toNanOrdinal(float) could not get the ordinal value. We use this information for avoiding flooding the logger with the same message.
  • Constructor Details

    • FeatureFormat

      public FeatureFormat()
      Creates a new formatter for the default locale and timezone.
    • FeatureFormat

      public FeatureFormat(Locale locale, TimeZone timezone)
      Creates a new formatter for the given locale and timezone.
      Parameters:
      locale - the locale, or null for Locale.ROOT.
      timezone - the timezone, or null for UTC.
  • Method Details

    • getValueType

      public final Class<Object> getValueType()
      Returns the type of objects formatted by this class. This method has to return Object.class since it is the only common parent to Feature and FeatureType.
      Specified by:
      getValueType in class CompoundFormat<Object>
      Returns:
      Object.class
    • getLocale

      public Locale getLocale(Locale.Category category)
      Returns the locale for the given category.
      Overrides:
      getLocale in class CompoundFormat<Object>
      Parameters:
      category - the category for which a locale is desired.
      Returns:
      the locale for the given category (never null).
    • getAllowedColumns

      public Set<FeatureFormat.Column> getAllowedColumns()
      Returns all columns that may be shown in the tables to format. The columns included in the set may be shown, but not necessarily; some columns will still be omitted if they are completely empty. However, columns not included in the set are guaranteed to be omitted.
      Returns:
      all columns that may be shown in the tables to format.
      Since:
      0.8
    • setAllowedColumns

      public void setAllowedColumns(Set<FeatureFormat.Column> inclusion)
      Sets all columns that may be shown in the tables to format. Note that the columns specified to this method are not guaranteed to be shown; some columns will still be omitted if they are completely empty.
      Parameters:
      inclusion - all columns that may be shown in the tables to format.
      Since:
      0.8
    • nextColumn

      private void nextColumn(TableAppender table)
      Invoked when the formatter needs to move to the next column.
    • format

      public void format(Object object, Appendable toAppendTo) throws IOException
      Formats the given object to the given stream of buffer. The object may be an instance of any of the following types:
      • Feature
      • FeatureType
      Specified by:
      format in class CompoundFormat<Object>
      Parameters:
      object - the object to format.
      toAppendTo - where to format the object.
      Throws:
      IOException - if an error occurred while writing to the given appendable.
    • toString

      private String toString(org.opengis.util.GenericName name)
      Returns the display name for the given GenericName.
    • formatValue

      private int formatValue(Object value, TableAppender table, int length)
      Appends the given attribute value, in a truncated form if it exceed the maximal value length.
      Parameters:
      value - the value to append.
      table - where to append the value.
      length - number of characters appended before this method call in the current table cell.
      Returns:
      number of characters appended after this method call in the current table cell, or -1 if the length exceed the maximal length (in which case the caller should break iteration).
    • appendSuperscript

      private static void appendSuperscript(int n, Appendable toAppendTo) throws IOException
      Appends the given number as an superscript if possible, or as an ordinary number otherwise.
      Throws:
      IOException
    • sharedFormat

      static String sharedFormat(Object object)
      Formats the given object using a shared instance of ParameterFormat. This is used for DefaultFeatureType.toString() implementation.
    • parse

      public Object parse(CharSequence text, ParsePosition pos) throws ParseException
      Not yet supported.
      Specified by:
      parse in class CompoundFormat<Object>
      Parameters:
      text - the character sequence for the object to parse.
      pos - the position where to start the parsing. On return, the position where the parsing stopped or where an error occurred.
      Returns:
      currently never return.
      Throws:
      ParseException - currently always thrown.
    • clone

      public FeatureFormat clone()
      Returns a clone of this format.
      Overrides:
      clone in class TabularFormat<Object>
      Returns:
      a clone of this format.