org.opengis.util
Interface RecordType


@UML(identifier="RecordType",
     specification=ISO_19103)
public interface RecordType

The type definition of a record. A RecordType defines dynamically constructed data type. This interface has methods for data access, but no methods to dynamically add members. This approach ensures that once a RecordType is constructed, it is immutable.

A RecordType is identified by a TypeName. It contains an arbitrary amount of attribute types which are also identified by TypeName. A RecordType may therefore contain another RecordType as a member. This is a limited association because a named member may be defined to be a single instance of some externally defined RecordType. This does not permit aggregation of any kind.

This class can be think as the equivalent of the Java Class class.

Since:
GeoAPI 2.1
See Also:
Record, RecordSchema

Method Summary
 Map<MemberName,TypeName> getAttributeTypes()
          Returns the dictionary of all (name, type) pairs in this record type.
 RecordSchema getContainer()
          Returns the schema that contains this record type.
 Set<MemberName> getMembers()
          Returns the set of attribute names defined in this RecordType's dictionary.
 TypeName getTypeName()
          Returns the name that identifies this record type.
 boolean isInstance(Record record)
          Determines if the specified record is compatible with this record type.
 TypeName locate(MemberName name)
          Looks up the provided attribute name and returns the associated type name.
 

Method Detail

getTypeName

@UML(identifier="typeName",
     obligation=MANDATORY,
     specification=ISO_19103)
TypeName getTypeName()
Returns the name that identifies this record type. If this RecordType is contained in a record schema, then the record type name should be a valid in the name space of the record schema:
getContainer().getSchemaName().scope()
This method can be think as the equivalent of the Java Class.getName() method.


getContainer

@UML(identifier="container",
     obligation=OPTIONAL,
     specification=ISO_19103)
RecordSchema getContainer()
Returns the schema that contains this record type.


getAttributeTypes

@UML(identifier="attributeTypes",
     obligation=MANDATORY,
     specification=ISO_19103)
Map<MemberName,TypeName> getAttributeTypes()
Returns the dictionary of all (name, type) pairs in this record type. The dictionary shall be unmodifiable.

See Also:
Record.getAttributes()

getMembers

@Extension
Set<MemberName> getMembers()
Returns the set of attribute names defined in this RecordType's dictionary. If there are no attributes, this method returns the empty set. This method is functionally equivalent to getAttributeTypes().keySet().

The name space associated with a RecordType contains only members of this RecordType. There is no potential for conflict with subpackages.

This method can be think as the equivalent of the Java Class.getFields() method.


locate

@UML(identifier="locate",
     obligation=MANDATORY,
     specification=ISO_19103)
TypeName locate(MemberName name)
Looks up the provided attribute name and returns the associated type name. If the attribute name is not defined in this record type, then this method returns null. This method is functionnaly equivalent to getAttributeTypes().get(name).

This method can be think as the equivalent of the Java Class.getField(String) method.

See Also:
Record.locate(org.opengis.util.MemberName)
TODO:
Does it make sense given that MemberName.getAttributeType() already provides this information?

isInstance

@Extension
boolean isInstance(Record record)
Determines if the specified record is compatible with this record type. This method returns true if the specified record argument is non-null and the following condition holds:

This method can be think as the equivalent of the Java Class.isInstance(Object) method.



Copyright © 1994-2008 Open Geospatial Consortium. All Rights Reserved.