Class VPFFeatureClass

Object
VPFFeatureClass
All Implemented Interfaces:
SimpleFeatureType, AttributeType, ComplexType, FeatureType, PropertyType

public class VPFFeatureClass extends Object implements SimpleFeatureType
A VPF feature class. Note that feature classes may contain one or more feature types. However, all of the feature types of a feature class share the same schema. A feature type will therefore delegate its schema related operations to its feature class.
Author:
Jeff Yutzler
  • Constructor Details

    • VPFFeatureClass

      public VPFFeatureClass(VPFCoverage cCoverage, String cName, String cDirectoryName) throws SchemaException
      Constructor
      Parameters:
      cCoverage - the owning coverage
      cName - the name of the class
      cDirectoryName - the directory containing the class
      Throws:
      SchemaException - For problems making one of the feature classes as a FeatureType.
    • VPFFeatureClass

      public VPFFeatureClass(VPFCoverage cCoverage, String cName, String cDirectoryName, URI cNamespace) throws SchemaException
      Constructor
      Parameters:
      cCoverage - the owning coverage
      cName - the name of the class
      cDirectoryName - the directory containing the class
      cNamespace - the namespace to create features with. If null then a default from VPFLibrary.DEFAULTNAMESPACE is assigned.
      Throws:
      SchemaException - For problems making one of the feature classes as a FeatureType.
  • Method Details

    • reset

      public void reset()
    • hasNext

      public boolean hasNext()
    • readAllRows

      public List<SimpleFeature> readAllRows(SimpleFeatureType featureType) throws IOException
      Throws:
      IOException
    • readNext

      public SimpleFeature readNext(SimpleFeatureType featureType)
    • getCoverage

      public VPFCoverage getCoverage()
      The coverage that owns this feature class
      Returns:
      a VPFCoverage object
    • getDirectoryName

      public String getDirectoryName()
      The path to the directory that contains this feature class
      Returns:
      a String value representing the path to the directory.
    • getFileList

      public List<VPFFile> getFileList()
      Returns a list of file objects
      Returns:
      a List containing VPFFile objects.
    • getFeatureType

      public SimpleFeatureType getFeatureType()
    • getTypeName

      public String getTypeName()
      Description copied from interface: SimpleFeatureType
      The local name for this FeatureType.

      Specifically this method returns getName().getLocalPart().

      Specified by:
      getTypeName in interface SimpleFeatureType
      Returns:
      The local name for this FeatureType.
    • getFCTypeName

      public String getFCTypeName()
    • getAttributeCount

      public int getAttributeCount()
      Description copied from interface: SimpleFeatureType
      Returns the number of attributes composing the feature type

      This method is convenience for getAttributes().size().

      Specified by:
      getAttributeCount in interface SimpleFeatureType
      Returns:
      The number of attributes.
    • isAbstract

      public boolean isAbstract()
      Description copied from interface: PropertyType
      Flag indicating if the type is abstract or not.
      Specified by:
      isAbstract in interface PropertyType
      Returns:
      true if the type is abstract, otherwise false.
    • getGeometryFactory

      public VPFGeometryFactory getGeometryFactory()
      Returns:
      Returns the geometryFactory.
    • equals

      public boolean equals(Object obj)
      Description copied from interface: PropertyType
      Equality based on property PropertyType.getName().
      Specified by:
      equals in interface PropertyType
      Overrides:
      equals in class Object
      Returns:
      true if other is a PropertyType with the same name
    • hashCode

      public int hashCode()
      Description copied from interface: PropertyType
      Hashcode override based on PropertyType.getName().
      Specified by:
      hashCode in interface PropertyType
      Overrides:
      hashCode in class Object
      Returns:
      getName().hashCode()
    • getDescriptor

      public AttributeDescriptor getDescriptor(Name name)
      Description copied from interface: SimpleFeatureType
      Returns the attribute descriptor which matches the specified name.

      This method is convenience for:

       return (AttributeDescriptor) getProperty(name);
       

      This method returns null if no such attribute exists.

      Specified by:
      getDescriptor in interface ComplexType
      Specified by:
      getDescriptor in interface SimpleFeatureType
      Parameters:
      name - The name of the descriptor to return.
      Returns:
      The attribute descriptor matching the specified name, or null if no such attribute exists.
    • getDescriptor

      public AttributeDescriptor getDescriptor(String name)
      Description copied from interface: SimpleFeatureType
      Returns the attribute descriptor which matches the specified name.

      This method is convenience for:

       return (AttributeDescriptor) getProperty(name);
       

      This method returns null if no such attribute exists.

      Specified by:
      getDescriptor in interface ComplexType
      Specified by:
      getDescriptor in interface SimpleFeatureType
      Parameters:
      name - The name of the descriptor to return.
      Returns:
      The attribute descriptor matching the specified name, or null if no such attribute exists.
    • getDescriptor

      public AttributeDescriptor getDescriptor(int index)
      Description copied from interface: SimpleFeatureType
      Returns the attribute descriptor at the specified index.

      This method is convenience for:

       return (AttributeDescriptor) ((List) getProperties()).get(index);
       
      Specified by:
      getDescriptor in interface SimpleFeatureType
      Parameters:
      index - The index of the descriptor to return.
      Returns:
      The attribute descriptor at the specified index.
    • getAttributeDescriptors

      public List<AttributeDescriptor> getAttributeDescriptors()
      Description copied from interface: SimpleFeatureType
      The list of attribute descriptors which make up the feature type.

      This method is a convenience for:

       return (List<AttributeDescriptor>) getProperties();
       
      Specified by:
      getAttributeDescriptors in interface SimpleFeatureType
      Returns:
      The ordered list of attribute descriptors.
    • getType

      public AttributeType getType(Name name)
      Description copied from interface: SimpleFeatureType
      Returns the type of the attribute which matches the specified name.

      This method is convenience for:

       return (AttributeType) getProperty(name).getType();
       

      If there is no such attribute which matches name, null is returned.

      Specified by:
      getType in interface SimpleFeatureType
      Parameters:
      name - The name of the attribute whose type to return.
      Returns:
      The attribute type matching the specified name, or null.
    • getType

      public AttributeType getType(String name)
      Description copied from interface: SimpleFeatureType
      Returns the type of the attribute which matches the specified name.

      This method is convenience for:

       return (AttributeType) getProperty(name).getType();
       

      If there is no such attribute which matches name, null is returned.

      Specified by:
      getType in interface SimpleFeatureType
      Parameters:
      name - The name of the attribute whose type to return.
      Returns:
      The attribute type matching the specified name, or null.
    • getType

      public AttributeType getType(int index)
      Description copied from interface: SimpleFeatureType
      Returns the type of the attribute at the specified index.

      This method is convenience for:

         return (AttributeType)((List)getProperties()).get(index)).getType();
       
      Specified by:
      getType in interface SimpleFeatureType
      Parameters:
      index - The index of the attribute whose type to return.
      Returns:
      The attribute type at the specified index.
    • getTypes

      public List<AttributeType> getTypes()
      Description copied from interface: SimpleFeatureType
      Returns the types of all the attributes which make up the feature.

      This method is convenience for:

       List types = new ArrayList();
       for (Property p : getProperties()) {
           types.add(p.getType());
       }
       return types;
       
      Specified by:
      getTypes in interface SimpleFeatureType
      Returns:
      The list of attribute types.
    • getCoordinateReferenceSystem

      public CoordinateReferenceSystem getCoordinateReferenceSystem()
      Description copied from interface: FeatureType
      The coordinate reference system of the feature.

      This value is derived from the default geometry attribute:

         ((GeometryType)getDefaultGeometry().getType()).getCRS();
       

      This method will return null in the case where no default geometric attribute is defined.

      Specified by:
      getCoordinateReferenceSystem in interface FeatureType
      Returns:
      The coordinate referencing system, or null.
    • getGeometryDescriptor

      public GeometryDescriptor getGeometryDescriptor()
      Description copied from interface: FeatureType
      Describe the default geometric attribute for this feature.

      This method returns null in the case where no such attribute exists.

      Specified by:
      getGeometryDescriptor in interface FeatureType
      Returns:
      The descriptor of the default geometry attribute, or null.
    • getBinding

      public Class<Collection<Property>> getBinding()
      Description copied from interface: ComplexType
      Override and type narrow to Collection.class.
      Specified by:
      getBinding in interface ComplexType
      Specified by:
      getBinding in interface PropertyType
      Returns:
      The binding of the property type.
    • getDescriptors

      public Collection<PropertyDescriptor> getDescriptors()
      Description copied from interface: ComplexType
      The property descriptor which compose the complex type.

      A complex type can be composed of attributes and associations which means this collection returns instances of AttributeDescriptor and AssociationDescriptor.

      Specified by:
      getDescriptors in interface ComplexType
      Returns:
      Collection of descriptors representing the composition of the complex type.
    • isInline

      public boolean isInline()
      Description copied from interface: ComplexType
      Indicates ability of XPath to notice this attribute.

      This facility is used to "hide" an attribute from XPath searches, while the compelx contents will still be navigated no additional nesting will be considered. It will be as if the content were "folded" inline resulting in a flatter nesting structure.

      Construct described using Java Interfaces:

      
       interface TestSample {
           String name;
           List measurement;
       }
       interface Measurement {
           long timestamp;
           Point point;
           long reading;
       }
       
      The above is can hold the following information:
      
       [ name="survey1",
         measurements=(
             [timestamp=3,point=(2,3), reading=4200],
             [timestamp=9,point=(2,4), reading=445600],
         )
       ]
       
      Out of the box this is represented to XPath as the following tree:
      
       root/name: survey1
       root/measurement[0]/timestamp:3
       root/measurement[0]/point: (2,3)
       root/measurement[0]/reading: 4200
       root/measurement[1]/timestamp:9
       root/measurement[2]/point: (2,4)
       root/measurement[3]/reading: 445600
       
      By inlining Measurement we can achive the following:
      
       root/name: survey1
       root/timestamp[0]:3
       root/point[0]: (2,3)
       root/reading[0]: 4200
       root/timestamp[1]:9
       root/point[1]: (2,4)
       root/reading[1] 445600
       
      Specified by:
      isInline in interface ComplexType
      Returns:
      true if attribute is to be considered transparent by XPath queries
    • getSuper

      public AttributeType getSuper()
      Description copied from interface: AttributeType
      Override of PropertyType.getSuper() which type narrows to AttributeType.
      Specified by:
      getSuper in interface AttributeType
      Specified by:
      getSuper in interface PropertyType
      Returns:
      The parent or super type, or null.
      See Also:
    • isIdentified

      public boolean isIdentified()
      Description copied from interface: FeatureType
      Features are always identified.
      Specified by:
      isIdentified in interface AttributeType
      Specified by:
      isIdentified in interface FeatureType
      Returns:
      true
      See Also:
    • getDescription

      public InternationalString getDescription()
      Description copied from interface: PropertyType
      Human readable description of this property type.
      Specified by:
      getDescription in interface PropertyType
      Returns:
      Human readable description of this property type.
    • getName

      public Name getName()
      Description copied from interface: PropertyType
      The name of the property type.

      Note that this is not the same name as Property.getName(), which is the name of the instance of the type, not the type itself.

      The returned name is a qualified name made up of two parts. The first a namespace uri (Name.getNamespaceURI(), and the second a local part (Name.getLocalPart().

      This value is never null.

      Specified by:
      getName in interface PropertyType
      Returns:
      The name of the property type.
    • indexOf

      public int indexOf(String name)
      Description copied from interface: SimpleFeatureType
      Returns the index of the attribute which matches the specified name.

      -1 is returned in the instance there is no attribute matching the specified name.

      Specified by:
      indexOf in interface SimpleFeatureType
      Parameters:
      name - The name of the attribute whose index to return.
      Returns:
      index of named attribute, or -1 if not found.
    • indexOf

      public int indexOf(Name name)
      Description copied from interface: SimpleFeatureType
      Returns the index of the attribute which matches the specified name.

      -1 is returned in the instance there is no attribute matching the specified name.

      Specified by:
      indexOf in interface SimpleFeatureType
      Parameters:
      name - The name of the attribute whose index to return.
      Returns:
      index of named attribute, or -1 if not found.
    • getRestrictions

      public List<Filter> getRestrictions()
      Description copied from interface: PropertyType
      List of restrictions used define valid values for properties of this property type.

      Each restriction is a Filter object in which the property is passed through. If Filter.evaluate(Object) returns true the restriction is met. If false is returned then the restriction has not been met and the property should be considered invalid. Remember to check getSuper().getRestrictions() as well.

      This method returns an empty set in the case of no restrictions and should not return null.

      Specified by:
      getRestrictions in interface PropertyType
      Returns:
      List used to validate allowable values.
    • getUserData

      public Map<Object,Object> getUserData()
      Description copied from interface: PropertyType
      A map of "user data" which enables applications to store "application-specific" information against a property type.

      As an example, consider an application that builds a PropertyType from an xml schema. A useful bit of information to attach to the PropertyType is the original schema itself, in whatever construct it might be stored in:

       
       XSDComplexTypeDefinition complexTypeDef = ...;
       PropertyType type = buildPropertyType( complexTypeDef );
      
       type.getUserData().put( XSDComplexTypeDefintion.class, complexTypeDef );
       
       
      Specified by:
      getUserData in interface PropertyType
      Returns:
      A map of user data.