@Override
public String performReplace( final Feature replacement, final Filter filter, final Lock lock,
final IDGenMode idGenMode )
throws FeatureStoreException {
if ( filter instanceof IdFilter ) {
performDelete( (IdFilter) filter, lock );
} else {
performDelete( replacement.getName(), (OperatorFilter) filter, lock );
}
final GenericFeatureCollection col = new GenericFeatureCollection();
col.add( replacement );
final List<String> ids = performInsert( col, USE_EXISTING );
if ( ids.isEmpty() || ids.size() > 1 ) {
throw new FeatureStoreException( "Unable to determine new feature id." );
}
return ids.get( 0 );
}