Interface FeatureWriter<T extends FeatureType,F extends Feature>
-
- All Superinterfaces:
AutoCloseable
,Closeable
- All Known Subinterfaces:
DelegatingFeatureWriter<T,F>
,DelegatingSimpleFeatureWriter
,SimpleFeatureWriter
- All Known Implementing Classes:
CSVFeatureWriter
,DiffContentFeatureWriter
,DiffFeatureWriter
,EmptyFeatureWriter
,EventContentFeatureWriter
,FilteringFeatureWriter
,GeoJSONFeatureWriter
,JDBCClosingFeatureWriter
,JDBCInsertFeatureWriter
,JDBCUpdateFeatureWriter
,JDBCUpdateInsertFeatureWriter
,MemoryFeatureWriter
,MongoFeatureWriter
,PropertyFeatureWriter
,WFSFeatureWriter
public interface FeatureWriter<T extends FeatureType,F extends Feature> extends Closeable
Provides the ability to write Features information.Capabilities:
- Similar API to FeatureReader
- After aquiring a feature using next() you may call remove() or after modification write(). If you do not call one of these two methods before calling hasNext(), or next() for that matter, the feature will be left unmodified.
- This API allows modification, and Filter based modification to be written. Please see ContentDataStore for examples of implementing common opperations using this API.
- In order to add new Features, FeatureWriters capable of accepting new content allow next()
to be called when hasNext() is
false
to allow new feature creation. These changes
One thing that is really nice about the approach to adding content is that the generation of FID is not left in the users control.
- Author:
- Ian Schneider, Jody Garnett, Refractions Research
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description void
close()
Release the underlying resources.T
getFeatureType()
FeatureType this reader has been configured to create.boolean
hasNext()
Query whether this FeatureWriter has another Feature.F
next()
Reads a Feature from the underlying AttributeReader.void
remove()
Removes current Feature, must be called before hasNext.void
write()
Writes the current Feature, must be called before hasNext.
-
-
-
Method Detail
-
getFeatureType
T getFeatureType()
FeatureType this reader has been configured to create.- Returns:
- FeatureType this writer has been configured to create.
-
next
F next() throws IOException
Reads a Feature from the underlying AttributeReader.This method may return a Feature even though hasNext() returns
false
, this allows FeatureWriters to provide an ability to append content.- Returns:
- Feature from Query, or newly appended Feature
- Throws:
IOException
- if the writer has been closed or an I/O error occurs reading the nextFeature
.
-
remove
void remove() throws IOException
Removes current Feature, must be called before hasNext.FeatureWriters will need to allow all FeatureSources of the same typeName to issue a FeatureEvent event of type
FeatureEvent.FEATURES_REMOVED
when this method is called.If this FeatureWriter is opperating against a Transaction FEATURES_REMOVED events should only be sent to FeatureSources operating on the same Transaction. When Transaction commit() is called other FeatureSources will be informed of the modifications.
When the current Feature has been provided as new content, this method "cancels" the add opperation (and notification needed).
- Throws:
IOException
-
write
void write() throws IOException
Writes the current Feature, must be called before hasNext.FeautreWriters will need to allow FeatureSources of the same typeName to issue a FeatureEvent:
- FeatureEvent.FEATURES_ADDED: when next() has been called with hasNext() equal to
false
. - FeatureEvent.FEATURES_MODIFIED: when next has been called with hasNext() equal to
true
and the resulting Feature has indeed been modified.
If this FeatureWriter is opperating against a Transaction the FEATURES_MODIFIED or FEATURES_ADDED events should only be sent to FeatureSources opperating on the same Transaction. When Transaction commit() is called other FeatureSources will be informed of the modifications.
If you have not called write() when you call hasNext() or next(), no modification will occur().
- Throws:
IOException
- FeatureEvent.FEATURES_ADDED: when next() has been called with hasNext() equal to
-
hasNext
boolean hasNext() throws IOException
Query whether this FeatureWriter has another Feature.Please note: it is more efficient to construct your FeatureWriter with a Filer (to skip entries you do not want), than to force the creation of entire Features only to skip over them.
FeatureWriters that support append operations will allow calls to next, even when hasNext() returns
false
.- Returns:
true
if an additionalFeature
is available,false
if not.- Throws:
IOException
- if an I/O error occurs.
-
close
void close() throws IOException
Release the underlying resources.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Throws:
IOException
- if there there are problems releasing underlying resources, or possibly if close has been called (up to the implementation).IOException
- if an I/O error occurs
-
-