Interface ObjectFactory

All Superinterfaces:
Factory
All Known Subinterfaces:
CoordinateOperationFactory, CRSFactory, CSFactory, DatumFactory

public interface ObjectFactory extends Factory
Base interface for all factories of identified objects. Factories build up complex objects from simpler objects or values. This factory allows applications to make coordinate systems, datum or coordinate reference systems that cannot be created by an authority factory. This factory is very flexible, whereas the authority factory is easier to use.

Object properties
Most factory methods expect a Map argument. The map can be a Properties instance. The map shall contain at least a "name" property. In the common case where the name is the only property, the map may be constructed with Collections.singletonMap("name", theName) where theName is an arbitrary name as free text.

Implementations are encouraged to recognize at least the properties listed in the following table. Additional implementation-specific properties can be added. Unknown properties shall be ignored.

Property name Value type Value given to
 "name"   ReferenceIdentifier or String   IdentifiedObject.getName()
 "alias"   String, String[], GenericName or GenericName[]   IdentifiedObject.getAlias()
 "authority"   String or Citation   Identifier.getAuthority() on the name
 "codespace"   String   ReferenceIdentifier.getCodeSpace() on the name
 "version"   String   ReferenceIdentifier.getVersion() on the name
 "identifiers"   Identifier or Identifier[]   IdentifiedObject.getIdentifiers()
 "remarks"   String or InternationalString   IdentifiedObject.getRemarks()

The "name" property is mandatory. All others are optional. All localizable attributes like "remarks" can have a language and country code suffix. For example the "remarks_fr" property stands for remarks in French and the "remarks_fr_CA" property stands for remarks in French Canadian.

Since:
2.0
Departure from OGC/ISO abstract specification:
Departure for harmonization between different specifications This interface is not part of any OGC specification. It is added for uniformity, in order to provide a common base class for all referencing factories producing IdentifiedObject instances.