That is a strong argument for justin's combining for FeatureSource and FeatureCollection. Right now when a wrapper is applied I need to implement FeatureReader or Iterator wrapper; FeatureCollectionWrapper etc... this tends to keep on exploding the further up you move the wrapper.
Can FeatureStore wrapper be applied? Or is this limited to read-only. Jody On Mon, Apr 6, 2009 at 9:07 PM, Andrea Aime <[email protected]> wrote: > Hi, > discussing the feature source with vector generalization topic > we came up with the need to have a way to alter what a datastore > or a feature source reports back to the rest of the system > by wrapping it somehow. > > The use case in particular is having multiple feature types > that actually are a progressive generalization, geometry wise, > of a base type, and lump them togheter so that only one > is seen, and the proper generalization level is returned > based on a Query hint. This is a datastore level modification. > > But the same could be done at the feature source level, > if one has multiple geometry columns generalized at different > levels (mainly a feature source level modification as far > as GeoServer is concerned, as the only thing that we really > use out of DataStore is getTypeNames and getFEatureSource). > > It's also to be noted that in GeoServer we're already having > a feature source level wrapper that changes the name of a > feature type one the fly (a rw re-namer). > > So, established there is a need for this kind of pluggable > extension point, how does it look like? And while we're at > it, can it benefit complex feature building? (complex > datastore is just a wrapper on top of other datastores, no?) > > Justin proposed the following interfaces: > >> DataStoreWrapper { >> >> boolean canHandle( FeatureTypeInfo featureType, DataStore dataStore ); >> >> DataStore wrap( FeatureTypeINfo featureType, DAtaSTore dataStore ); >> >> } >> >> would we want to handle teh wrapping of FeatureSources as well? So adding >> perhaps a: >> >> FeatureSource wrap( FeatureTypeINfo featureTYpe, FeatureSource >> featureSource ); > > Hum, what about: > > DataStoreWrapper { > boolean canHandle( DataStoreInfo dataStore, DataStore dataStore ); > DataStore wrap( DataStoreInfo dataStore, DataStore dataStore ); > } > > and > > FeatureSourceWrapper { > boolean canHandle( FeatureTypeInfo featureType, FeatureSource source); > FeatureSource wrap( FeatureTypeInfo featureType, FeatureSource > source); > } > > Also, what is the expected behaviour for wrapping? The first wrapper > wins? Or we can have multiple wrapping levels? > I would go for the second, the first wrapper wraps, and the loop > on the available wrappers continues on using the newly wrapped ds > as the parameter in canHandle and canWrap. > > Cheers > Andrea > > -- > Andrea Aime > OpenGeo - http://opengeo.org > Expert service straight from the developers. > > ------------------------------------------------------------------------------ > _______________________________________________ > Geoserver-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/geoserver-devel > ------------------------------------------------------------------------------ _______________________________________________ Geoserver-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/geoserver-devel
