@Override protected SimpleFeatureType buildFeatureType() throws IOException { return delegate.buildFeatureType(); }
@Override protected ReferencedEnvelope getBoundsInternal(Query query) throws IOException { return delegate.getBoundsInternal(query); }
@Override protected int getCountInternal(Query query) throws IOException { return delegate.getCountInternal(query); }
@Override public void setTransaction(Transaction transaction) { super.setTransaction(transaction); if (delegate.getTransaction() != transaction) { delegate.setTransaction(transaction); } }
@Override protected FeatureReader<SimpleFeatureType, SimpleFeature> getReaderInternal(Query query) throws IOException { return delegate.getReaderInternal(query); }
@Override protected FeatureReader<SimpleFeatureType, SimpleFeature> getReaderInternal(Query query) throws IOException { return new MemoryFeatureReader(getState(), query); }
@Override protected boolean handleVisitor(Query query, FeatureVisitor visitor) throws IOException { return delegate.handleVisitor(query, visitor); }
@Override public void setTransaction(Transaction transaction) { super.setTransaction(transaction); MemoryFeatureStore.this.setTransaction( transaction); // Keep these two implementations on the same transaction } };
@Override protected int getCountInternal(Query query) throws IOException { if (query.getFilter() == Filter.INCLUDE) { MemoryEntry entry = getEntry(); return entry.getMemory().size(); } // feature by feature count required return -1; }
@Override protected ReferencedEnvelope getBoundsInternal(Query query) throws IOException { if (query.getFilter() == Filter.INCLUDE) { // filtering not implemented FeatureReader<SimpleFeatureType, SimpleFeature> featureReader = getReaderInternal(query); CoordinateReferenceSystem crs = featureReader.getFeatureType().getCoordinateReferenceSystem(); ReferencedEnvelope bounds = ReferencedEnvelope.create(crs); try { while (featureReader.hasNext()) { SimpleFeature feature = featureReader.next(); bounds.include(feature.getBounds()); } } finally { featureReader.close(); } return bounds; } return null; // feature by feature scan required to count records }
@Override protected SimpleFeatureType buildFeatureType() { return getState() .getEntry() .schema; // cache schema unchanged (as we do not retype/reproject) }