Class EventContentFeatureWriter

  • All Implemented Interfaces:
    Closeable, AutoCloseable, FeatureWriter<SimpleFeatureType,​SimpleFeature>

    public class EventContentFeatureWriter
    extends Object
    implements FeatureWriter<SimpleFeatureType,​SimpleFeature>
    FeatureWriter wrapper that issues events modifications as required.

    It is the responsibility of a FeatureStore to issue events to interested parties as content is modified. The ContentState keeps track of the listeners, while EventContentFeatureWriter is willing to fire the events as needed.

    Event generation happens in two passes:

    • As features are modified events are sent out one at a time
    • When commit() or rollback() is called a "batch" event is sent out
    The only trick is the comment() event contains our only indication of the final FeatureIDs generated for new features. The BatchFeatureEvent maintains a map of BEFORE/AFTER values allowing any interested party to update their seleciton.

    Please note that if you are using DiffFeatureWriter it sends out events on its own.

    Jody Garnett (LISASoft)
    • Method Detail

      • remove

        public void remove()
                    throws IOException
        Description copied from interface: FeatureWriter
        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).

        Specified by:
        remove in interface FeatureWriter<SimpleFeatureType,​SimpleFeature>
        See Also:
      • close

        public void close()
                   throws IOException
        Clean up resources associated with this writer.

        Diff is not clear()ed as it is assumed that it belongs to a Transaction.State object and may yet be written out.

        Specified by:
        close in interface AutoCloseable
        Specified by:
        close in interface Closeable
        Specified by:
        close in interface FeatureWriter<SimpleFeatureType,​SimpleFeature>
        IOException - if there there are problems releasing underlying resources, or possibly if close has been called (up to the implementation).
        See Also: