From: <ra...@ei...> - 2002-04-30 09:31:46
|
Hi All. Been cleaning up DataSources for Geotools2. Currently my version of the code is in an in-between state as I incorporate JTS into the Framework - attached is the javadoc of the code as it stands. Some of the code does not compile, but the javadoc should give you an idea of the general structure. The only confusing thing is whether to wrap FeatureIndexes around a FeatureTable, or have Indexes stored as part of that FeatureTable. There are ups and downs to both approaches. It should become more clear as development proceeds. Currently, the pipeline works like this : A Viewer requests Features within a given Extent - this is sent through to the FeatureTable, which copies it (new method called cloneExtent() added today) and, depending on the load mode, performs a check to see if part or all of the given Extent has already been loaded, if so, the Extent is only partially loaded, using Extent.difference() to find out the extra area. The Extents to be loaded are sent, one at a time, to the DataSource referenced by the Featuretable, which return arrays of Features. The Features are filtered against the already-loaded Extents to make sure they haven't already been loaded. This is needed for Features which may be along the edges or two Extents, or large Features, such as roads or rivers, which would cut across two or more Extents. When the load is complete, a TableChangedEvent is fired, which notifies any listeners of the update (Viewers, FeatureIndexes, etc.). That's it. A bit concise, but getting there. Ray. |