Class DefaultRecordSchema

  • All Implemented Interfaces:
    Record­Schema

    public class DefaultRecordSchema
    extends Object
    implements RecordSchema
    A collection of record types in a given namespace. This class works also as a factory for creating Record­Type and Record instances. The factory methods are: Subclasses can modify the characteristics of the records to be created by overriding the following methods:
    Thread safety
    The same Default­Record­Schema instance can be safely used by many threads without synchronization on the part of the caller if the Name­Factory 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 because Record­Schema contain an arbitrary amount of record types in its description map. Since each Record­Type has a reference to its schema, serializing a single Record­Type 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 read­Resolve() method (as documented in the Serializable interface) returning a system-wide static constant for their schema.
    Since:
    0.5
    See Also:
    Default­Record­Type, Default­Record

    Defined in the sis-metadata module

    • Field Detail

      • nameFactory

        protected final DefaultNameFactory nameFactory
        The 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 the Name­Factory interface when that interface will provide a create­Member­Name(…) method (tentatively in GeoAPI 3.1).
    • Constructor Detail

      • DefaultRecordSchema

        public 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 the Name­Factory interface when that interface will provide a create­Member­Name(…) method (tentatively in GeoAPI 3.1).
        Parameters:
        name­Factory - the factory to use for creating names, or null for the default factory.
        parent - the parent namespace, or null if none.
        schema­Name - the name of the new schema.
    • Method Detail

      • createRecordType

        public RecordType createRecordType​(CharSequence typeName,
                                           Map<CharSequence,​Class<?>> members)
                                    throws IllegalArgumentException
        Creates a new record type of the given name, which will contain the given members. Members are declared in iteration order.
        Parameters:
        type­Name - the record type name.
        members - the name of each record member, together with the expected value types.
        Returns:
        a record type of the given name and members.
        Throws:
        Illegal­Argument­Exception - if a record already exists for the given name but with different members.
      • getDescription

        public Map<TypeName,​RecordType> getDescription()
        Returns the dictionary of all (name, record type) pairs in this schema.
        Specified by:
        get­Description in interface Record­Schema
        Returns:
        all (name, record type) pairs in this schema.
      • locate

        public RecordType locate​(TypeName name)
        Returns the record type for the given name. If the type name is not defined within this schema, then this method returns null.
        Specified by:
        locate in interface Record­Schema
        Parameters:
        name - the name of the type to lookup.
        Returns:
        the type for the given name, or null if none.
      • toString

        public String toString()
        Returns a string representation of this schema for debugging purpose only.
        Overrides:
        to­String in class Object