org.geotools.data
Class FeatureEvent

Object
  extended by EventObject
      extended by FeatureEvent
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
BatchFeatureEvent

public class FeatureEvent
extends EventObject

Represents all events triggered by DataStore instances (typically change events).

The "Source" for FeatureEvents is taken to be a FeatureSource, rather than DataStore. The is due to FeatureSource having a hold of Transaction information.

DataStore implementations will actually keep the list listeners sorted by TypeName, and can report FeatureWriter modifications as required (by filtering the Listener list by typeName and Transaction).

The Transaction.commit() operation will also need to provide notification, this shows up as a CHANGE event; with a bit more detail being available in the subclass BatchFeatureEvent.

Since:
GeoTools 2.0
See Also:
Serialized Form
Module:

Nested Class Summary
static class FeatureEvent.Type
           
 
Field Summary
protected  ReferencedEnvelope bounds
          Indicates the bounds in which the modification occurred.
static int FEATURES_ADDED
          Deprecated. Please use FeatureEvent.getType() == Type.ADDED
static int FEATURES_CHANGED
          Deprecated. Please use FeatureEvent.getType() == Type.CHANGED
static int FEATURES_REMOVED
          Deprecated. Please use FeatureEvent.getType() == Type.REMOVED
protected  FeatureSource featureSource
          The FeatureSource broadcasting the event.
protected  Filter filter
          Filter used to indicate what content has changed.
protected  FeatureEvent.Type type
          Indicates one of Type.ADDED, Type.REMOVED, Type.CHANGED
 
Fields inherited from class EventObject
source
 
Constructor Summary
FeatureEvent(FeatureEvent origional)
          Makes a deep copy of the provided event.
FeatureEvent(FeatureSource<? extends FeatureType,? extends Feature> featureSource, int eventType, Envelope bounds)
          Deprecated. Please use FeatureEvent( FeatureSource, Type, Envelope )
FeatureEvent(Object source, FeatureEvent.Type type, ReferencedEnvelope bounds, Filter filter)
          Constructs a new FeatureEvent.
 
Method Summary
 ReferencedEnvelope getBounds()
          Provides access to the area modified (if known).
 int getEventType()
          Provides information on the type of change that has occured.
 FeatureSource<? extends FeatureType,? extends Feature> getFeatureSource()
          Provides access to the FeatureSource which fired the event.
 Filter getFilter()
          Filter describing the content that was changed.
 FeatureEvent.Type getType()
          Provides information on the type of change that has occurred.
 void setFeatureSource(FeatureSource featureSource)
           
 
Methods inherited from class EventObject
getSource, toString
 
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

FEATURES_ADDED

public static final int FEATURES_ADDED
Deprecated. Please use FeatureEvent.getType() == Type.ADDED
FeatureWriter event type denoting the adding features.

This EventType is used when FeatureWriter.write() is called when FeatureWriter.hasNext() has previously returned false. This action represents a newly create Feature being passed to the DataStore.

The FeatureWriter making the modification will need to check that typeName it is modifing matches the FeatureSource.getSchema().getTypeName() before sending notification to any listeners on the FeatureSource.

If the FeatureWriter is opperating against a Transaction it will need ensure that to check the FeatureSource.getTransaction() for a match before sending notification to any listeners on the FeatureSource.

FeatureEvent.getBounds() should reflect the the Bounding Box of the newly created Features.

See Also:
Constant Field Values

FEATURES_CHANGED

public static final int FEATURES_CHANGED
Deprecated. Please use FeatureEvent.getType() == Type.CHANGED
Event type constant denoting that features in the collection has been modified.

This EventType is used when a FeatureWriter.write() is called when FeatureWriter.hasNext() returns true and the current Feature has been changed. This EventType is also used when a Transaction commit() or rolledback is called.

The FeatureWriter making the modification will need to check that typeName it is modifing matches the FeatureSource.getSchema().getTypeName() before sending notification to any listeners on the FeatureSource.

If the FeatureWriter is opperating against a Transaction it will need ensure that to check the FeatureSource.getTransaction() for a match before sending notification to any listeners on the FeatureSource. All FeatureSources of the same typename will need to be informed of a commit, except ones in the same Transaction, and only FeatureSources in the same Transaction will need to be informed of a rollback.

FeatureEvent.getBounds() should reflect the the BoundingBox of the FeatureWriter modified Features. This may not be possible during a commit() or rollback() opperation.

See Also:
Constant Field Values

FEATURES_REMOVED

public static final int FEATURES_REMOVED
Deprecated. Please use FeatureEvent.getType() == Type.REMOVED
Event type constant denoting the removal of a feature.

This EventType is used when FeatureWriter.remove() is called. This action represents a Feature being removed from the DataStore.

The FeatureWriter making the modification will need to check that typeName it is modifing matches the FeatureSource.getSchema().getTypeName() before sending notification to any listeners on the FeatureSource.

If the FeatureWriter is opperating against a Transaction it will need ensure that to check the FeatureSource.getTransaction() for a match before sending notification to any listeners on the FeatureSource.

FeatureEvent.getBounds() should reflect the the Bounding Box of the removed Features.

See Also:
Constant Field Values

type

protected FeatureEvent.Type type
Indicates one of Type.ADDED, Type.REMOVED, Type.CHANGED


bounds

protected ReferencedEnvelope bounds
Indicates the bounds in which the modification occurred.

This value is allowed to by null if this information is not known.


featureSource

protected FeatureSource featureSource
The FeatureSource broadcasting the event.

Please note when several FeatureSources are operating on different Transactions this value will not always line up with original FeatureSource represented by Event.getSource().


filter

protected Filter filter
Filter used to indicate what content has changed.

This is often an Id filter.

Constructor Detail

FeatureEvent

public FeatureEvent(FeatureEvent origional)
Makes a deep copy of the provided event.


FeatureEvent

public FeatureEvent(Object source,
                    FeatureEvent.Type type,
                    ReferencedEnvelope bounds,
                    Filter filter)
Constructs a new FeatureEvent.

Parameters:
source - The writer or feature store that fired the event
eventType - One of FEATURE_CHANGED, FEATURE_REMOVED or FEATURE_ADDED
bounds - The area modified by this change

FeatureEvent

public FeatureEvent(FeatureSource<? extends FeatureType,? extends Feature> featureSource,
                    int eventType,
                    Envelope bounds)
Deprecated. Please use FeatureEvent( FeatureSource, Type, Envelope )

Constructs a new FeatureEvent.

Parameters:
FeatureSource - SimpleFeature> The DataStore that fired the event
eventType - One of FEATURE_CHANGED, FEATURE_REMOVED or FEATURE_ADDED
bounds - The area modified by this change
Method Detail

getFeatureSource

public FeatureSource<? extends FeatureType,? extends Feature> getFeatureSource()
Provides access to the FeatureSource which fired the event.

Returns:
The FeatureSource which was the event's source.

setFeatureSource

public void setFeatureSource(FeatureSource featureSource)

getEventType

public int getEventType()
Provides information on the type of change that has occured. Possible types are: add, remove, change

Returns:
an int which must be one of FEATURES_ADDED, FEATURES_REMOVED, FEATURES_CHANGED

getType

public FeatureEvent.Type getType()
Provides information on the type of change that has occurred. Possible types are: add, remove, change

Returns:
Type

getBounds

public ReferencedEnvelope getBounds()
Provides access to the area modified (if known).

Returns:
A bounding box of the modifications or null if unknown.

getFilter

public Filter getFilter()
Filter describing the content that was changed.

Returns:
A filter that can be used to check if any cached content you are keeping needs to be updated, or Filter.INCLUDES if unknown.


Copyright © 1996-2009 Geotools. All Rights Reserved.