org.geotools.data.jdbc
Class JDBCFeatureWriter

java.lang.Object
  extended byorg.geotools.data.jdbc.JDBCFeatureWriter
All Implemented Interfaces:
FeatureWriter
Direct Known Subclasses:
JDBCPSFeatureWriter, JDBCTextFeatureWriter

public class JDBCFeatureWriter
extends java.lang.Object
implements FeatureWriter

JDBCDataStore implementation of the FeatureWriter interface

Author:
aaime

Field Summary
protected  boolean closed
           
protected  Feature current
           
protected  java.lang.Object[] fidAttributes
           
protected  FeatureListenerManager listenerManager
           
protected  Feature live
           
protected  QueryData queryData
           
protected  FeatureReader reader
           
 
Constructor Summary
JDBCFeatureWriter(FeatureReader reader, QueryData queryData)
           
 
Method Summary
 void close()
          Release the underlying resources.
protected  void doInsert(MutableFIDFeature mutable)
          Inserts a feature into the database.
protected  void doUpdate(Feature live, Feature current)
           
 FeatureType getFeatureType()
          FeatureType this reader has been configured to create.
 boolean hasNext()
          Query whether this FeatureWriter has another Feature.
 Feature next()
          Reads a Feature from the underlying AttributeReader.
 void remove()
          Removes current Feature, must be called before hasNext.
protected  boolean useQueryDataForInsert()
          Returns true if QueryData is used to insert rows, false if some other means is used
 void write()
          Wrties the current Feature, must be called before hasNext.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

queryData

protected QueryData queryData

reader

protected FeatureReader reader

live

protected Feature live

current

protected Feature current

listenerManager

protected FeatureListenerManager listenerManager

closed

protected boolean closed

fidAttributes

protected java.lang.Object[] fidAttributes
Constructor Detail

JDBCFeatureWriter

public JDBCFeatureWriter(FeatureReader reader,
                         QueryData queryData)
Method Detail

getFeatureType

public FeatureType getFeatureType()
Description copied from interface: FeatureWriter
FeatureType this reader has been configured to create.

Specified by:
getFeatureType in interface FeatureWriter
Returns:
FeatureType this writer has been configured to create.
See Also:
FeatureWriter.getFeatureType()

next

public Feature next()
             throws java.io.IOException
Description copied from interface: FeatureWriter
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.

Specified by:
next in interface FeatureWriter
Returns:
Feature from Query, or newly appended Feature
Throws:
java.io.IOException - DOCUMENT ME!
See Also:
FeatureWriter.next()

useQueryDataForInsert

protected boolean useQueryDataForInsert()
Returns true if QueryData is used to insert rows, false if some other means is used

Returns:

remove

public void remove()
            throws java.io.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
Throws:
java.io.IOException - DOCUMENT ME!
See Also:
FeatureWriter.remove()

write

public void write()
           throws java.io.IOException
Description copied from interface: FeatureWriter
Wrties the current Feature, must be called before hasNext.

FeautreWriters will need to allow FeatureSources of the same typeName to issue a FeatureEvent:

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().

Specified by:
write in interface FeatureWriter
Throws:
java.io.IOException
See Also:
FeatureWriter.write()

doUpdate

protected void doUpdate(Feature live,
                        Feature current)
                 throws java.io.IOException,
                        java.sql.SQLException
Throws:
java.io.IOException
java.sql.SQLException

doInsert

protected void doInsert(MutableFIDFeature mutable)
                 throws java.io.IOException,
                        java.sql.SQLException
Inserts a feature into the database.

This method should both insert a Feature, and update its FID in case the FIDMapper works over database generated ids like autoincrement fields, sequences, and object ids.

Postgis needs to do this seperately. With updates it can just override the geometry stuff, using a direct sql update statement, but for inserts it can't update a row that doesn't exist yet.

Parameters:
mutable -
Throws:
java.io.IOException
java.sql.SQLException

hasNext

public boolean hasNext()
                throws java.io.IOException
Description copied from interface: FeatureWriter
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 opperations will allow calls to next, even when haveNext() returns false.

Specified by:
hasNext in interface FeatureWriter
Returns:
true if an additional Feature is available.
Throws:
java.io.IOException - DOCUMENT ME!
See Also:
FeatureWriter.hasNext()

close

public void close()
           throws java.io.IOException
Description copied from interface: FeatureWriter
Release the underlying resources.

Specified by:
close in interface FeatureWriter
Throws:
java.io.IOException - if there there are problems releasing underlying resources, or possibly if close has been called (up to the implementation).
See Also:
FeatureWriter.close()


Copyright © GeoTools. All Rights Reserved.