public class FIdMemoryDataStore extends MemoryDataStore {
public FIdMemoryDataStore(SimpleFeatureType featureType) {
super(featureType);
}
@Override
protected ContentFeatureSource createFeatureSource(ContentEntry entry, Query query) {
return new MemoryFeatureStore(entry, query) {
@Override
protected QueryCapabilities buildQueryCapabilities() {
return new QueryCapabilities() {
@Override
public boolean isUseProvidedFIDSupported() {
return true;
}
};
}
@Override
protected FeatureWriter<SimpleFeatureType, SimpleFeature> getWriterInternal(
Query query, int flags) throws IOException {
return new MemoryFeatureWriter(getState(), query) {
@Override
public void write() throws IOException {
if (Boolean.TRUE.equals(current.getUserData().get(Hints.USE_PROVIDED_FID))) {
if (current.getUserData().containsKey(Hints.PROVIDED_FID)) {
String fid = (String) current.getUserData().get(Hints.PROVIDED_FID);
FeatureId id = new FeatureIdImpl(fid);
current = new SimpleFeatureImpl(current.getAttributes(), current.getFeatureType(), id);
}
}
super.write();
}
};
}
};
}
}