Package org.apache.sis.util.iso
Class DefaultRecordSchema
Object
DefaultRecordSchema
- All Implemented Interfaces:
- RecordSchema
A collection of record types in a given namespace.
 This class works also as a factory for creating 
RecordType and Record instances.
 The factory methods are:
 
 Subclasses can modify the characteristics of the records to be created
 by overriding the following methods:
 - DefaultNameFactory.toTypeName(Class)if the factory given to the constructor.
Thread safety
The sameDefaultRecordSchema instance can be safely used by many threads without synchronization
 on the part of the caller if the NameFactory given to the constructor is also thread-safe.
 Subclasses should make sure that any overridden methods remain safe to call from multiple threads.
 Limitations
This class is currently not serializable becauseRecordSchema contain an arbitrary number of record
 types in its description map. Since each RecordType has a reference
 to its schema, serializing a single RecordType could imply serializing all of them.
 In order to reduce the risk of unexpected behavior, serialization is currently left to subclasses.
 For example, a subclass may define a Object readResolve() method (as documented in the
 Serializable interface) returning a system-wide static constant for their schema.- Since:
- 0.5
- See Also:
Defined in the sis-metadata module
- 
Field SummaryFieldsModifier and TypeFieldDescriptionprotected final DefaultNameFactoryThe factory to use for creating names.
- 
Constructor SummaryConstructorsConstructorDescriptionDefaultRecordSchema(DefaultNameFactory nameFactory, NameSpace parent, CharSequence schemaName) Creates a new schema of the given name.
- 
Method SummaryModifier and TypeMethodDescriptioncreateRecordType(CharSequence typeName, Map<CharSequence, Class<?>> fields) Creates a new record type of the given name, which will contain the given fields.createRecordTypeName(CharSequence typeName) Creates the name of a record.Returns the dictionary of all (name, record type) pairs in this schema.Returns the schema name.Returns the record type for the given name.Returns a string representation of this schema for debugging purpose only.
- 
Field Details- 
nameFactoryThe factory to use for creating names. This is the factory given at construction time.Upcoming API change — generalization
 This field type will be changed to theNameFactoryinterface when that interface will provide acreateMemberName(…)method (tentatively in GeoAPI 3.1).
 
- 
- 
Constructor Details- 
DefaultRecordSchemapublic DefaultRecordSchema(DefaultNameFactory nameFactory, NameSpace parent, CharSequence schemaName) Creates a new schema of the given name.Upcoming API change — generalization
 This type of the first argument will be changed to theNameFactoryinterface when that interface will provide acreateMemberName(…)method (tentatively in GeoAPI 3.1).- Parameters:
- nameFactory- the factory to use for creating names, or- nullfor the default factory.
- parent- the parent namespace, or- nullif none.
- schemaName- the name of the new schema.
 
 
- 
- 
Method Details- 
getSchemaNameReturns the schema name.- Specified by:
- getSchemaNamein interface- RecordSchema
- Returns:
- the schema name.
 
- 
createRecordTypeNameCreates the name of a record.- Parameters:
- typeName- name of the record type to create.
- Returns:
- name of a record type.
- Since:
- 1.3
 
- 
createRecordTypepublic RecordType createRecordType(CharSequence typeName, Map<CharSequence, Class<?>> fields) throws IllegalArgumentExceptionCreates a new record type of the given name, which will contain the given fields. Fields are declared in iteration order.- Parameters:
- typeName- name of the record type to create.
- fields- the name of each record field, together with the expected value types.
- Returns:
- a record type of the given name and fields.
- Throws:
- IllegalArgumentException- if a record already exists for the given name but with different fields.
 
- 
getDescriptionReturns the dictionary of all (name, record type) pairs in this schema.- Specified by:
- getDescriptionin interface- RecordSchema
- Returns:
- all (name, record type) pairs in this schema.
 
- 
locateReturns the record type for the given name. If the type name is not defined within this schema, then this method returnsnull.- Specified by:
- locatein interface- RecordSchema
- Parameters:
- name- the name of the type to lookup.
- Returns:
- the type for the given name, or nullif none.
 
- 
toStringReturns a string representation of this schema for debugging purpose only.
 
-