 | Rough Draft
Multiplicity System
Schema - from the proposal has no analog in GeoAPI and may be copied as is.
- stores Min & Max
- describe order using Schema.Sequence, Schema.All, Schema.Choice
Node
- getAttributeDescriptor() ( I would rather have getType )
Type System
FeatureAttributeDescriptor takes the place of Type in the proposal
- change name to AttribtueDescriptor (as Complex will be represented with Attribtues as well), consider AttributeType to indicate this is part of the Type system...
- its multiplicity concerns moved to Schema
- getDataType() replaced with getSuper()
- getGenericName() added
- getName() provided as helper method on getGenericName()
- getObjectClass() - really like the name getBinding better as it agrees with use with frameworks like JAXB
- getPercision(), handled by a Facet (a DECIMAL specific restriction)
- getSize(), handled by a Facet (a String or List restriction)
- isPrimaryKey(), may wish to expand to allow for UNIQUE and ID use?
- isIdentified(), true if an ID can be provided ...
- isNillable? Surprised this is not already here ... only special restriction I considered
- getFacets(), list of Filter used to constrain allowable values
DataType (a enum/class) - now captures XMLSchema simple types for use with getSuper()
- DATETIME
- DECIMAL - xs:decimal (maps to BigDecimal to agree with JAXB)
- DOUBLE - xs:double
- GEOMETRY - moved to GeometryAttribute
- INTEGER - xs:int (not xs:integer which maps to BigInteger in JAXB)
- OBJECT - moved to ComplexType
- String - xs:string
- Style - style package can provide its own AttributeType for reuse.
GeometryDescriptor extends AttributeDescriptor
- straight application of AttributeDescriptor
- isIdentified() always returns true
- getObjectClass() always returns <T> <T extends Geometry>
ComplexType extends AttributeDescriptor ... new (complex content was not supported by GeoAPI)
- takes many of its naming and access conventions from Feature
- getSchema() - indicates allowed ordering of AttribtueDescriptors
- getAttributeDescriptors() ... consider rename to match AttributeType ? .. this is a breadth first walk of getSchema() for Nodes, aka a view of the data obtained from getSchema(). Changed to Collect<AttributeDescrptor> to allow complex content to return a Set<AttributeDescriptor> and Simple content to return a List<AttribtueDescriptor>
FeatureType extends ComplexType
- createFeature() - gone - this is the work of a FeatureFactory.
- getAttributeDescriptors() - gone - moved to ComplexType
- isCollectionType() - deprecated, only true for FeatureCollectionType
- getChildTypes - deprecated, only used for FeatureCollectionType and now considered a breadth first walk of FeatureCollection.getMemberSchema()
- getDefaultShapeAttribute() restricted to report a GeometryDescriptor
- String getPrefferedPrefix() - depricated, type may be in use by more then one GML document generator
- getName() - gone - moved to getGenericName to avoid conflict
FeatureCollectionType extends FeatureType
- getMemberSchema(), schema of allowable "children", children not used as name conflicts with supertype,subtype naming
- getChildTypes - depricated, acts as a breadth first walk of getMemberSchema()
SimpleFeatureType extends Feature
- getSchema() restricted to a sequence of Node of multiplicity 1:1, considered a view of getAttributeDescriptors()
- getAttributeDescriptors() is considered the real data of a SimpleFeatureType
FeatureFactory
- create( FeatureType, List<AttribtueEntry> );
- create( FeatureCollectionType, List<AttributeEntry>, List<Feature> contents );
Filter
Filter is used to capture restrictions, for more details please see the reading list at the top of this page.
Filter
- evaulate( Object ) - allow evaluation content other then Feature, note Filter1.0 and Filter 1.1 do not depend on the idea of Feature, indeed they are also used with Metadata for the Catalog specifications
PropertyIs*
- understood to delegate to ProprtyName expression
PropertyName
- getPropertyName() - an xpath expression used during evaluation
Data Representation
AttributeEntry ... new could not find equiv in GeoAPI ... named to prevent conflicts with Feature.getAttribute() methods, and agrees with Map.Entry
- getDescriptor() the AttributeDescriptor for this entry
- getID(), must be non null of getDescriptor().isIdentified()
- getName(), helper method to getDescriptor().getName()
- getValue() - named to agree with Map.Entry
- setValue( Object o ) - must match getDescriptor().getObjectClass()
GeometryEntry ... new, may not be needed as it is only used to be explicit (does not give us anything AttribteEntry with getDescriptor() == GeometryType does not already indicate)
- getDescriptor() restricted to GeometryType
- getID(), must be non null
- getValue() - restricted to Geometry
- setValue( Geometry )
Complex ... new - GeoAPI did not previously support complex
- getDescriptor() restricted to ComplexType
- Object getAttribute( String name ) - find the value with the first matching name
- Object getAttribute( AttributeDescriptor ) - finds single value for multiplicity 1:1, or List for multiplicity 0:*
- getAttributes() - List<AttributeEntry> - holds the contents of this feature
- setAttribute( name, value ) - changes the attribute with the first matching name
- setAttribute( AttributeDescriptor, Object ) - changes single value for multiplicity 1:1, or List for multiplicity 0:*
- values() - access to List<Object> as a view of GetAttributes, naming convention of collections api
- types() - access to List<AttributeDescriptors> as a view of GetAttributes, naming convention of collections api
Feature extends Complex
- getDescriptor() - restricted to FeatureType
- Object getAttribute( int index ) - gone - moved to SimpleFeature
- getBounds()
- getFeatureType() - @depricated, use getDescriptor()
- getID(), must not be null
- FeatureCollection getParent() - @deprecated, defined to return null, removed after one revision (association goes the other way), name conflicts with supertype/subtype system
- setAttribute( index, value ) - gone - moved to SimpleFeature
SimpleFeature extends Feature
- getDescriptor() restricted to SimpleFeatureType
- Object getAttribute( int index ) - this is okay when we have 1:1 multiplicity
- setAttribute( int index ) - this is okay when we have 1:1 multiplicity
FeatureCollection
- add( Feture ), is this just adding the feature to my Filter (using fid filter) or is it creating new content? Both meanings make sense
- addAll( collection )
- addFeatureListener( listener ), does this listen to the content behind the collection? Oh nice the javadocs say so - yeah Chris Dillard.
- clear()
- close()
- contains( Feature )
- containsAll( collection )
- getLockRequest()
- getTransaction()
- isEmpty() - defined to be O(N), it would be great if we could ask this to be O(1) ...
- iterator() - Iterator restricted to FeatureIterator
- features() FeatureIterator - helper method for the Java 1.4 amung us
- close( Iterator ) – new! This really helps people opperating in Java 1.4 figure out that iterators need to be closed
- lock(), sure wish this method took a LockRequest as a param?
- lockAll( collection )
- remove( feature ) - does this simple remove this from my collection (by changing the FidFilter?), or is it deleting the content?
- removeAll( collection )
- removeFeatureListener()
- retainAll( c )
- setLockRequest( lock )
- setTransaction( transaction )- does this indicate support for nested transactions? Or setTransaction taken to branch from the origional data?
- size() - this is defined to be O(N) by Collections, users be warned!
- subCollection( Filter )
- toArray()
- toArray( buffer)
|