if (!(response instanceof GetFeatureResponse)) {
return response;
}
final GetFeatureResponse gfr = (GetFeatureResponse) response;
final GetFeatureParser allFeatures = gfr.getFeatures();
final List<SimpleFeature> originalFeatures = new ArrayList<SimpleFeature>();
{
SimpleFeature feature;
while ((feature = allFeatures.parse()) != null) {
originalFeatures.add(feature);
}
}
WFSStrategy strategy = getStrategy();
final Filter serverFiler = ((AbstractWFSStrategy) strategy).splitFilters(typeName,
request.getFilter())[0];
final Diff diff = diff(typeName);
for (Iterator<SimpleFeature> it = originalFeatures.iterator(); it.hasNext();) {
if (!serverFiler.evaluate(it.next())) {
it.remove();
}
}
FeatureReader<SimpleFeatureType, SimpleFeature> allFeaturesReader = null;
if (originalFeatures.size() > 0) {
allFeaturesReader = DataUtilities.reader(originalFeatures);
}
final DiffFeatureReader<SimpleFeatureType, SimpleFeature> serverFilteredReader;
serverFilteredReader = new DiffFeatureReader<SimpleFeatureType, SimpleFeature>(
allFeaturesReader, diff, serverFiler);
final GetFeatureParser filteredParser = new GetFeatureParser() {
@Override
public void setGeometryFactory(GeometryFactory geometryFactory) {
// TODO Auto-generated method stub
}