Class DataFeatureCollection
- All Implemented Interfaces:
SimpleFeatureCollection,FeatureCollection<SimpleFeatureType,SimpleFeature>
- Direct Known Subclasses:
CompositeFeatureCollection,DefaultFeatureResults,EmptyFeatureCollection,IndexedFeatureResults
This implementation requires you to implement the following:
- getSchema() - this should match reader.getSchema()
- reader() features() - override one of these two method to access content
- getBounds()
- getCount()
- collection()
This class will implement the 'extra' methods required by FeatureCollection for you (in simple terms based on the FeatureResults API). Anything that is often customised is available to you as a constructor parameters.
Enjoy.
- Since:
- 2.1.RC0
- Author:
- jgarnett
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected Stringid used when serialized to gmlprotected List<CollectionListener>listenersprotected SimpleFeatureType -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedCollection based on a generic collectionprotectedCollection based on a generic collectionprotectedDataFeatureCollection(String id, SimpleFeatureType memberType) Subclass must think about what consitructors it needs. -
Method Summary
Modifier and TypeMethodDescriptionvoidaccepts(FeatureVisitor visitor, ProgressListener progress) Visit the contents of a feature collection.booleanadd(SimpleFeature arg0) booleanaddAll(Collection collection) Optimized implementation of addAll that recognizes the use of collections obtained with subCollection( filter ).booleanaddAll(FeatureCollection resource) final voidaddListener(CollectionListener listener) voidclear()final voidclose(Iterator<SimpleFeature> close) voidclose(FeatureIterator<SimpleFeature> iterator) protected voidcloseIterator(Iterator<SimpleFeature> close) booleanbooleancontainsAll(Collection<?> collection) features()SimpleFeatureIterator is entirely based on iterator().protected voidfireChange(Collection coll, int type) protected voidfireChange(SimpleFeature[] features, int type) To let listeners know that something has changed.protected voidfireChange(SimpleFeature feature, int type) abstract ReferencedEnvelopeGet the total bounds of this collection which is calculated by doing a union of the bounds of each feature inside of itabstract intgetCount()getID()ID used when serializing to GMLThe schema for the child feature members of this collection.booleanisEmpty()Default implementation based on creating an reader, testing hasNext, and closing.final Iterator<SimpleFeature>iterator()Iterator may (or may) not support modification.protected Iterator<SimpleFeature>Returns a FeatureWriterIterator, or FeatureReaderIterator over content.voidpurge()reader()booleanbooleanremoveAll(Collection arg0) final voidremoveListener(CollectionListener listener) booleanretainAll(Collection arg0) intsize()Default implementation based on getCount() - this may be expensiveConstruct a sorted view of this content.subCollection(Filter filter) Will return an optimized subCollection based on access to the origional FeatureSource.Object[]toArray()<T> T[]toArray(T[] array) protected FeatureWriter<SimpleFeatureType,SimpleFeature> writer()Subclass may provide an implementation of this method to indicate that read/write support is provided.
-
Field Details
-
listeners
listeners -
id
id used when serialized to gml -
schema
-
-
Constructor Details
-
DataFeatureCollection
protected DataFeatureCollection()Collection based on a generic collection -
DataFeatureCollection
Collection based on a generic collection -
DataFeatureCollection
Subclass must think about what consitructors it needs.
-
-
Method Details
-
fireChange
To let listeners know that something has changed. -
fireChange
-
fireChange
-
reader
- Throws:
IOException
-
getBounds
Description copied from interface:FeatureCollectionGet the total bounds of this collection which is calculated by doing a union of the bounds of each feature inside of it- Specified by:
getBoundsin interfaceFeatureCollection<SimpleFeatureType,SimpleFeature> - Returns:
- An Envelope containing the total bounds of this collection.
-
getCount
- Throws:
IOException
-
writer
Subclass may provide an implementation of this method to indicate that read/write support is provided.All operations that attempt to modify the "data" will use this method, allowing them to throw an "UnsupportedOperationException" in the same manner as Collections.unmodifiableCollection(Collection c), or just return null.
- Returns:
- the writer, or null if write support is not available
- Throws:
UnsupportedOperationException- To indicate that write support is not avaiableIOException
-
features
SimpleFeatureIterator is entirely based on iterator().So when we implement FeatureCollection.iterator() this will work out of the box.
- Specified by:
featuresin interfaceFeatureCollection<SimpleFeatureType,SimpleFeature> - Specified by:
featuresin interfaceSimpleFeatureCollection- Returns:
- A FeatureIterator.
-
iterator
Iterator may (or may) not support modification. -
openIterator
Returns a FeatureWriterIterator, or FeatureReaderIterator over content.If you have a way to tell that you are readonly please subclass with a less hardcore check - this implementations catches a UnsupportedOpperationsException from wrtier()!
- Returns:
- Iterator, should be closed closeIterator
- Throws:
IOException
-
close
-
closeIterator
- Throws:
IOException
-
close
-
size
public int size()Default implementation based on getCount() - this may be expensive- Specified by:
sizein interfaceFeatureCollection<SimpleFeatureType,SimpleFeature> - See Also:
-
purge
public void purge() -
isEmpty
public boolean isEmpty()Default implementation based on creating an reader, testing hasNext, and closing.For once the Collections API does not give us an escape route, we *have* to check the data.
- Specified by:
isEmptyin interfaceFeatureCollection<SimpleFeatureType,SimpleFeature> - Returns:
- true if this collection contains no features
-
contains
- Specified by:
containsin interfaceFeatureCollection<SimpleFeatureType,SimpleFeature> - See Also:
-
toArray
- Specified by:
toArrayin interfaceFeatureCollection<SimpleFeatureType,SimpleFeature> - See Also:
-
toArray
public <T> T[] toArray(T[] array) - Specified by:
toArrayin interfaceFeatureCollection<SimpleFeatureType,SimpleFeature> - See Also:
-
add
-
remove
-
containsAll
- Specified by:
containsAllin interfaceFeatureCollection<SimpleFeatureType,SimpleFeature> - See Also:
-
addAll
Optimized implementation of addAll that recognizes the use of collections obtained with subCollection( filter ).This method is constructed by either:
- Filter OR
- Removing an extact match of Filter AND
-
addAll
-
removeAll
-
retainAll
-
clear
public void clear() -
accepts
Description copied from interface:FeatureCollectionVisit the contents of a feature collection.The order of traversal is dependent on the FeatureCollection implementation; some collections are able to make efficient use of an internal index in order to quickly visit features located in the same region.
- Specified by:
acceptsin interfaceFeatureCollection<SimpleFeatureType,SimpleFeature> - Parameters:
visitor- Closure applied to each feature in turn.progress- Used to report progress, may be used to interrupt the operation- Throws:
IOException
-
subCollection
Will return an optimized subCollection based on access to the origional FeatureSource.The subCollection is constructed by using an AND Filter. For the converse of this opperation please see collection.addAll( Collection ), it has been optimized to be aware of these filter based SubCollections.
This method is intended in a manner similar to subList, example use:
collection.subCollection( myFilter ).clear()- Specified by:
subCollectionin interfaceFeatureCollection<SimpleFeatureType,SimpleFeature> - Specified by:
subCollectionin interfaceSimpleFeatureCollection- Parameters:
filter- Filter used to determine sub collection.- Returns:
- SimpleFeatureCollection identified as subset.
- Since:
- GeoTools 2.2, Filter 1.1
- See Also:
-
FeatureList
-
sort
Construct a sorted view of this content.Sorts may be combined togther in a stable fashion, in congruence with the Filter 1.1 specification. This method should also be able to handle GeoTools specific sorting through detecting order as a SortBy2 instance.
- Specified by:
sortin interfaceFeatureCollection<SimpleFeatureType,SimpleFeature> - Specified by:
sortin interfaceSimpleFeatureCollection- Parameters:
order- Sort order- Returns:
- FeatureList sorted according to provided order
- Since:
- GeoTools 2.2, Filter 1.1
-
getID
Description copied from interface:FeatureCollectionID used when serializing to GML- Specified by:
getIDin interfaceFeatureCollection<SimpleFeatureType,SimpleFeature>
-
addListener
- Throws:
NullPointerException
-
removeListener
- Throws:
NullPointerException
-
getSchema
Description copied from interface:FeatureCollectionThe schema for the child feature members of this collection.Represents the most general FeatureType in common to all the features in this collection.
- For a collection backed by a shapefiles (or database tables) the FeatureType returned by getSchema() will complete describe each and every child in the collection.
- For mixed content FeatureCollections you will need to check the FeatureType of each Feature as it is retrived from the collection
- The degenerate case returns the "_Feature" FeatureType, where the only thing known is that the contents are Features.
- Specified by:
getSchemain interfaceFeatureCollection<SimpleFeatureType,SimpleFeature> - Returns:
- FeatureType describing the "common" schema to all child features of this collection
-