Added by jgarnett, last edited by jgarnett on Nov 06, 2006  (view change)

Labels:

Enter labels to add to this page:
Wait Image 
Looking for a label? Just start typing.

This is the subject of active development on the GeoAPI Feature Model interfaces.

For details of the API please review the nice pictures here:

Consult Primer here:
ISO 19123 progress and future plan

Quality Assurance Guidelines

One of the big problems the FM branch has run into is inconsistencies in the GeoTools library... needing factories to be used correctly, allowing them to be injected where needed etc.

So far in talking to Justin I have found a few ground rules that when I
screw up has me fail a code review. These are hard to capature .. but I
gotta try anyways.

  1. Builder vs Factory
    • XFactory does what it does exactly with no logic
    • XBuilder maintains state and can do the logic you wanted to put in the factory
  2. DataStore and its Factories
    • AbstractDataStore is focused on "simple" features
    • AbstractDataStore "owns" types and thus needs a SimpleTypeFactory in order to create them
    • FeatureSource "owns" data and thus needs a SimpleFeatureFactory in order to create data
  3. Iterators and FeatureReaders/FeatureWriters
    • FeatureReader and FeatureWriter are no longer a focus of interaction
    • Iterators "create" content, so each pass through the data will need its own FeatureBuilder)
  4. Iterators and Visitors
    • Iterators are used to hack at data (isDirty checks, or cloning may not be fast)
    • FeatureVisitor are used for blinding fast (possible concurrent) access
  5. Use of Builders
    • Builders should only ever be a local variable, or used in one synchronized method.
  6. FeatureCollection vs Filter
    • FeatureCollections are magic optimized datastore specific pearls of performance (so hold onto them rather then the generic Filter that created them)
    • FeatureCollection can do more then Filter, see subCollection(filter), sort( order ), ... and soon join( collection )
    • use feature collection methods to build up your "data model" and then use the filter "query model" to select the information you want out.
  7. The three DataStore specific FeatureCollection implementations
    1. Represents getFeatures( Filter.NONE ) - ie everything, count and bounds optimized based on metadata etc
    2. Represents getFeatures( Filter ) - represents a useful collection, may be implemented over random access rowset etc..
    3. Represents subCollection( Filter ) - used to temporary hold a Filter to paramartize an operation like clear()
    • If you can support an index or random access break out FeatureList
Example

All of Data basically fails and will need to be fixed. You can see this failure when ever you see a FeatureBuilder (or any Builder) passed around as a parameter between classes, or stored for reuse). This is hard to test as the problem will only occur when the DataStore is being used by two threads (or if a FeatureCollection is being used by
two threads).

Active Development

jira.codehaus.org (25 issues)
T Key Summary Assignee Reporter Pr Status Res Created Updated Due
Bug GEOT-882 Only one of the two methods in DefaultAttrbuteTypeFactory that takes a metadata object parameter sets the CRS on the geometry type Jesse Eichar Jesse Eichar Minor Closed FIXED Jul 07, 2006 Jul 07, 2006
Improvement GEOT-1302 add common-lang DateUtils.parseDate to list of things TemporalAttribute uses to parse possible dates Justin Deoliveira Ian Turton Minor Open UNRESOLVED Jun 12, 2007 Sep 04, 2008
Sub-task GEOT-1360 deprecate old feature model Justin Deoliveira Justin Deoliveira Major Closed FIXED Jun 27, 2007 Nov 11, 2007
Sub-task GEOT-1361 switch client code to new feature and feature type builder api Justin Deoliveira Justin Deoliveira Major Closed FIXED Jun 27, 2007 Nov 11, 2007
Improvement GEOT-1455 reduce property accessor overhead for the simple case Andrea Aime Justin Deoliveira Major Closed FIXED Aug 27, 2007 Sep 18, 2007
Improvement GEOT-1102 DefaultAttributeType.validate shows on rendering profiles Andrea Aime Andrea Aime Major Resolved FIXED Jan 01, 2007 Jan 08, 2007
Improvement GEOT-1196 AttributeType min occurs should depend from nullability in the current feature model Andrea Aime Andrea Aime Major Resolved FIXED Mar 13, 2007 Mar 13, 2007
Bug GEOT-1420 Unguarded logging slows down Geotools in benchmarks Andrea Aime Andrea Aime Major Closed FIXED Aug 01, 2007 Aug 01, 2007
Task GEOT-1152 Port ISO Feature implementation from FM to trunk/unsupported Gabriel Roldán Gabriel Roldán Major Closed FIXED Feb 06, 2007 Feb 07, 2007
Improvement GEOT-1156 Allow to partially force CRS on feature types Andrea Aime Andrea Aime Major Resolved FIXED Feb 07, 2007 Feb 12, 2007
Bug GEOT-1081 Two GeometricAttributeTypes with different CRS should not be "equals()" to each other Unassigned Saul Farber Major Resolved INCOMPLETE Dec 20, 2006 Apr 10, 2007
Bug GEOT-1252 TypeName and Name equals() implementations are not symetric Gabriel Roldán Gabriel Roldán Major Closed FIXED Apr 25, 2007 Apr 26, 2007
Task GEOT-1362 make geotools.AttributeType extend opengis.AttributeDescriptor Justin Deoliveira Justin Deoliveira Major Resolved FIXED Jun 27, 2007 Jul 27, 2007
Task GEOT-1364 make geotools.Feature extend opengis.Feature Justin Deoliveira Justin Deoliveira Major Resolved FIXED Jun 27, 2007 Jul 27, 2007
Sub-task GEOT-1304 Port ISO (GeoAPI) FeatureModel implementation from fm branch to unsupported module in trunk Gabriel Roldán Gabriel Roldán Major Closed FIXED Jun 13, 2007 Jun 14, 2007
Bug GEOT-1579 Use of restrictions fails based on lack of property accessor for Attribute Unassigned Jody Garnett Major Closed DUPLICATE Nov 11, 2007 Nov 11, 2007
Improvement GEOT-1316 AttributeBuilder may receive the AttributeDescriptor instead of the AttributeType Gabriel Roldán Gabriel Roldán Major Closed FIXED Jun 14, 2007 Jun 14, 2007
Task GEOT-1318 Provide Adapters from GT-Feature to ISO-Feature Gabriel Roldán Gabriel Roldán Major Closed FIXED Jun 14, 2007 Jun 14, 2007
Task GEOT-1396 deprecate SimpleTypeBuilder,SimpleFeatureBuilder, and Schema classes on 2.4 Justin Deoliveira Justin Deoliveira Major Resolved FIXED Jul 15, 2007 Jul 20, 2007
Sub-task GEOT-1577 Pass uDig Tests Jody Garnett Jody Garnett Major Closed FIXED Nov 11, 2007 Mar 05, 2008
Task GEOT-1365 resolve geotools / geoapi feature model naming conflicts Justin Deoliveira Justin Deoliveira Major Resolved FIXED Jun 27, 2007 Jul 27, 2007
Sub-task GEOT-1359 make old feature model extend new feature model Justin Deoliveira Justin Deoliveira Major Resolved FIXED Jun 27, 2007 Jul 27, 2007
Task GEOT-1413 make geotools.FeatureCollection extend opengis.FeatureCollection Justin Deoliveira Justin Deoliveira Major Resolved FIXED Jul 27, 2007 Jul 27, 2007
Task GEOT-1363 make geotools.FeatureType extend opengis.FeatureType Justin Deoliveira Justin Deoliveira Major Resolved FIXED Jun 27, 2007 Jul 27, 2007
Bug GEOT-1371 Inconsistency in ListAttributeType Unassigned Wim van Berkel Major Open UNRESOLVED Jul 03, 2007 Jul 03, 2007

You can also track change requests against the GeoAPI interfaces here:

jira.codehaus.org (3 issues)
T Key Summary Assignee Reporter Pr Status Res Created Updated Due
Improvement GEO-45 Move FeatureStore* to org.opengis.feature.store package jesse crossley jesse crossley Major Open UNRESOLVED Jan 06, 2005 Mar 27, 2006 Jan 14, 2005
Task GEO-140 Add a @pending javadoc annotation to any experimental interface Unassigned Martin Desruisseaux Major Open UNRESOLVED Jun 27, 2008 Jun 27, 2008
Improvement GEO-144 Add Name.getSeparator() to simplify use of Name interface Unassigned Jody Garnett Major Open UNRESOLVED Jul 30, 2008 Jul 30, 2008

Since the GeoServer community is championing this effort most of it shows on on the following timeline:

jira.codehaus.org (0 issues)
T Key Summary Assignee Reporter Pr Status Res Created Updated Due

The specific jira item is GEOS-585 above.

History

For background reading please review the following documents:

For solid use cases please review the results of the ComplexDataStore project, especial the uses cases in Community Schema Support and Complex Types.