The Complex Feature plan updated to reflect the state of affairs as of 2008.
Milestone 1: Simple Schema Mapping
This first chunk of work involves introducing the concept of schema mapping into GeoServer. Essentially allowing for the following use case:
- User uploads an application schema
- User configures a feature and points it to the application schema
- User provides mappings from feature type attributes to application schema elements
- All GML output conforms to the application schema
It is important to note that this round of work only involves simple and flat data. No complex attributes, multiplicity, or associations/joins are supported.
- modifications to binding for AbstractFeatureType to do feature type to application schema transformation
Alternative: use a retyping FeatureReader to morph the feature type before it enters the encoding pipeline
- storing application schemas and mappings in configuration
- page for uploading and managing application schemas
- additions to feature type editor for attribute mapping
Milestone 2: GeoServer Data Access
The next chunk of works involves abstracting how GeoServer accesses features. The current plan of how to do this is though use of the DataAccess which is now a super interface of DataStore.
DataStore/SimpleFeature to DataAccess/Feature
- Change references to DataStore interface to DataAccess
- Change references to SimpleFeature to Feature
- Add instance checks to code that requires DataStore/SimpleFeature (ie simple data), throwing
Exception when non-simple data is provided
Abstract Feature Access
- Any output formats which can support complex content such as GML, GeoJSON need to be updated to access features through the Feature interface, and be able to follow relationships to other features, etc...
Milestone 3: Complex Data Store
The final step is to produce a data store capable of serving complex content. This involves representing associations, performing joins, etc...
- A datastore backed directly onto hibernate
- Custom feature implementation capable of lazy loading, etc...