/* (non-Javadoc) * @see org.geotools.data.DataStore#getFeatureWriter(java.lang.String, org.geotools.filter.Filter, org.geotools.data.Transaction) */ public FeatureWriter<SimpleFeatureType, SimpleFeature> getFeatureWriter( String typeName, Filter filter, Transaction transaction) throws IOException { if (filter == null) { throw new NullPointerException( "getFeatureReader requires Filter: " + "did you mean Filter.INCLUDE?"); } if (filter == Filter.EXCLUDE) { SimpleFeatureType featureType = getSchema(typeName); return new EmptyFeatureWriter(featureType); } if (transaction == null) { throw new NullPointerException( "getFeatureWriter requires Transaction: " + "did you mean to use Transaction.AUTO_COMMIT?"); } FeatureWriter<SimpleFeatureType, SimpleFeature> writer; if (transaction == Transaction.AUTO_COMMIT) { try { writer = createFeatureWriter(typeName, transaction); } catch (UnsupportedOperationException e) { throw e; } } else { TransactionStateDiff state = state(transaction); if (state != null) { writer = state.writer(typeName, filter); } else { throw new UnsupportedOperationException("Subclass sould implement"); } } if (lockingManager != null) { // subclass has not provided locking so we will // fake it with InProcess locks writer = lockingManager.checkedWriter(writer, transaction); } if (filter != Filter.INCLUDE) { writer = new FilteringFeatureWriter(writer, filter); } return writer; }