Class OptionKey<T>
- Object
-
- OptionKey<T>
-
- Type Parameters:
T
- the type of option values.
- All Implemented Interfaces:
Serializable
- Direct Known Subclasses:
DataOptionKey
public class OptionKey<T> extends Object implements Serializable
Keys in a map of options for configuring various services (DataStore
, etc).OptionKey
s are used for aspects that usually do not need to be configured, except in a few specialized cases. For example most data file formats read by SIS do not require the user to specify the character encoding, since the encoding it is often given in the file header or in the format specification. However if SIS needs to read plain text files and the default platform encoding is not suitable, then the user can specify the desired encoding explicitly using theENCODING
option.All options are hints and may be silently ignored. For example most
DataStore
s will ignore theENCODING
option if irrelevant to their format, or if the encoding is specified in the data file header.Options are transitive: if a service uses others services for its internal working, the given options may also be given to those dependencies, at implementation choice.
Defining new optionsDevelopers who wish to define their own options can define static constants in a subclass, as in the following example:public final class MyOptionKey<T> extends OptionKey<T> { public static final OptionKey<String> MY_OPTION = new MyOptionKey<>("MY_OPTION", String.class); private MyOptionKey(final String name, final Class<T> type) { super(name, type); } }
- Since:
- 0.3
- See Also:
- Serialized Form
Defined in the
sis-utility
module
-
-
Field Summary
Fields Modifier and Type Field Description static OptionKey<ByteBuffer>
BYTE_BUFFER
The byte buffer to use for input/output operations.static OptionKey<Charset>
ENCODING
The character encoding of document content.static OptionKey<GeometryLibrary>
GEOMETRY_LIBRARY
The library to use for creating geometric objects at reading time.static OptionKey<Integer>
INDENTATION
The number of spaces to use for indentation when formatting text files in WKT or XML formats.static OptionKey<Locale>
LOCALE
The locale to use for locale-sensitive data.static OptionKey<OpenOption[]>
OPEN_OPTIONS
Whether a storage object (e.g. aDataStore
) shall be opened in read, write, append or other modes.static OptionKey<TimeZone>
TIMEZONE
The timezone to use when parsing or formatting dates and times without explicit timezone.static OptionKey<String>
URL_ENCODING
The encoding of a URL (not the encoding of the document content).
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(Object object)
Returnstrue
if the given object is an instance of the same class having the same name and type.Class<T>
getElementType()
Returns the type of values associated to this option key.String
getName()
Returns the name of this option key.T
getValueFrom(Map<OptionKey<?>,?> options)
Returns the option value in the given map for this key, ornull
if none.int
hashCode()
Returns a hash code value for this object.Map<OptionKey<?>,Object>
setValueInto(Map<OptionKey<?>,Object> options, T value)
Sets a value for this option key in the given map, or in a new map if the given map isnull
.String
toString()
Returns a string representation of this option key.
-
-
-
Field Detail
-
LOCALE
public static final OptionKey<Locale> LOCALE
The locale to use for locale-sensitive data. This option determines the language to use for writinginternational strings
when the target storage support only one language. It may also control number and date patterns in some file formats like Comma Separated Values (CSV). However most data formats will ignore this locale.This option is not for the locale of logging or warning messages. Messages locale is rather controlled by
DataStore.setLocale(Locale)
.- Since:
- 0.8
- See Also:
XML.LOCALE
-
TIMEZONE
public static final OptionKey<TimeZone> TIMEZONE
The timezone to use when parsing or formatting dates and times without explicit timezone. If this option is not provided, then the default value is format specific. That default is often, but not necessarily, the platform default.Upcoming API change — Java time API
The type may be changed toZoneId
when Apache SIS will target Java 8. This change may be applied in synchronization with GeoAPI 4.0.- Since:
- 0.8
- See Also:
XML.TIMEZONE
-
ENCODING
public static final OptionKey<Charset> ENCODING
The character encoding of document content. This option can be used when the file to read does not describe itself its encoding. For example this option can be used when reading plain text files, but is ignored when reading XML files having a<?xml version="1.0" encoding="…"?>
declaration.If this option is not provided, then the default value is format specific. That default is often, but not necessarily, the platform default.
- Since:
- 0.4
- See Also:
Marshaller.JAXB_ENCODING
-
URL_ENCODING
public static final OptionKey<String> URL_ENCODING
The encoding of a URL (not the encoding of the document content). This option may be used when converting aString
or aURL
to aURI
or aFile
. The following rules apply:- URI are always encoded in UTF-8. Consequently this option is ignored for URI.
- URL are often encoded in UTF-8, but not necessarily. Other encodings are possible (while not recommended), or some URL may not be encoded at all.
Example: Given the
"file:Map%20with%20spaces.png"
URL, then:- If the URL encoding option is set to
"UTF-8"
or"ISO-8859-1"
, then:- the encoded URI will be
"file:Map%20with%20spaces.png"
; - the decoded URI or the file will be
"file:Map with spaces.png"
.
- the encoded URI will be
- If the URL encoding option is set to
null
or is not provided, then:- the encoded URI will be
"file:Map%2520with%2520spaces.png"
, i.e. the percent sign will be encoded as"%25"
; - the decoded URI or the file will be
"file:Map%20with%20spaces.png"
.
- the encoded URI will be
- See Also:
URLDecoder
-
OPEN_OPTIONS
public static final OptionKey<OpenOption[]> OPEN_OPTIONS
Whether a storage object (e.g. aDataStore
) shall be opened in read, write, append or other modes. The main options that can be provided are:Supported open options Value Meaning StandardOpenOption.READ
Open for reading data from the storage object. StandardOpenOption.WRITE
Open for modifying existing data in the storage object. StandardOpenOption.APPEND
Open for appending new data in the storage object. StandardOpenOption.CREATE
Creates a new storage object (file or database) if it does not exist.
-
BYTE_BUFFER
public static final OptionKey<ByteBuffer> BYTE_BUFFER
The byte buffer to use for input/output operations. SomeDataStore
implementations allow a byte buffer to be specified, thus allowing users to choose the buffer capacity, whether the buffer is direct, or to recycle existing buffers.It is user's responsibility to ensure that:
- The buffer does not contains any valuable data, as it will be cleared.
- The same buffer is not used concurrently by two different
DataStore
instances.
-
GEOMETRY_LIBRARY
public static final OptionKey<GeometryLibrary> GEOMETRY_LIBRARY
The library to use for creating geometric objects at reading time. Some libraries are the Java Topology Suite (JTS), ESRI geometry API and Java2D. If this option is not specified, then a default library will be selected among the libraries available in the runtime environment.- Since:
- 0.8
-
INDENTATION
public static final OptionKey<Integer> INDENTATION
The number of spaces to use for indentation when formatting text files in WKT or XML formats. A value of -1 means to format the whole WKT or XML document on a single line without line feeds or indentation.If this option is not provided, then the most typical default value used in Apache SIS is 2. Such small indentation value is used because XML documents defined by OGC standards tend to be verbose.
- Since:
- 0.8
- See Also:
WKTFormat.SINGLE_LINE
,Marshaller.JAXB_FORMATTED_OUTPUT
-
-
Method Detail
-
getName
public String getName()
Returns the name of this option key.- Returns:
- the name of this option key.
-
getElementType
public final Class<T> getElementType()
Returns the type of values associated to this option key.- Returns:
- the type of values.
-
getValueFrom
public T getValueFrom(Map<OptionKey<?>,?> options)
Returns the option value in the given map for this key, ornull
if none. This is a convenience method for implementers, which can be used as below:public <T> T getOption(final OptionKey<T> key) { ArgumentChecks.ensureNonNull("key", key); return key.getValueFrom(options); }
- Parameters:
options
- the map where to search for the value, ornull
if not yet created.- Returns:
- the current value in the map for the this option, or
null
if none.
-
setValueInto
public Map<OptionKey<?>,Object> setValueInto(Map<OptionKey<?>,Object> options, T value)
Sets a value for this option key in the given map, or in a new map if the given map isnull
. This is a convenience method for implementers, which can be used as below:public <T> void setOption(final OptionKey<T> key, final T value) { ArgumentChecks.ensureNonNull("key", key); options = key.setValueInto(options, value); }
- Parameters:
options
- the map where to set the value, ornull
if not yet created.value
- the new value for the given option, ornull
for removing the value.- Returns:
- the given map of options, or a new map if the given map was null. The returned value may be null if the given map and the given value are both null.
-
equals
public boolean equals(Object object)
Returnstrue
if the given object is an instance of the same class having the same name and type.
-
hashCode
public int hashCode()
Returns a hash code value for this object.
-
toString
public String toString()
Returns a string representation of this option key. The default implementation returns the value ofgetName()
.
-
-