public MemoryFeatureReader(ContentState state, Query query) throws IOException { featureType = state.getFeatureType(); MemoryEntry entry = (MemoryEntry) state.getEntry(); final List<SimpleFeature> internalCollection = new ArrayList<>(entry.getMemory().values()); iterator = internalCollection.iterator(); }
/** * Adds support for a new featureType to MemoryDataStore. * * <p>FeatureTypes are stored by typeName, an IOException will be thrown if the requested * typeName is already in use. * * @param featureType SimpleFeatureType to be added * @throws IOException If featureType already exists * @see org.geotools.data.DataStore#createSchema(org.geotools.feature.SimpleFeatureType) */ public void createSchema(SimpleFeatureType featureType) throws IOException { Name typeName = featureType.getName(); if (entries.containsKey(typeName)) { // we have a conflict throw new IOException(typeName + " already exists"); } MemoryEntry entry = new MemoryEntry(this, featureType); entries.put(typeName, entry); }
private void addFeatureInternal(SimpleFeature feature) { if (feature == null) { throw new IllegalArgumentException("Provided Feature is empty"); } SimpleFeatureType featureType = feature.getFeatureType(); try { MemoryEntry entry = entry(featureType); entry.addFeature(feature); } catch (IOException e) { LOGGER.log(Level.FINER, e.getMessage(), e); } }
public String toString() { return "MemoryEntry '" + getTypeName() + "': " + getMemory().size() + " features"; }
@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; }
entry.addFeature(current); current = null;
MemoryEntry entry = new MemoryEntry(this, schema); entries.put(typeName, entry); return entry;
/** * Safely add feature to {@link #memory}. * * <p>Feature is required to be non-null, and of the expected {@link #schema}. * * @param feature */ void addFeature(SimpleFeature feature) { if (feature == null) { throw new IllegalArgumentException("Provided Feature is empty"); } else if (!feature.getFeatureType().equals(schema)) { throw new IllegalArgumentException( "addFeatures expected " + schema.getTypeName() + "(but was " + feature.getFeatureType().getTypeName() + ")"); } getMemory().put(feature.getID(), feature); } }
public void testCallingAddFeaturesWithCollectionTwiceAndExtentInitialCollection() throws IOException { MemoryDataStore mds = new MemoryDataStore(); mds.addFeatures(Arrays.asList(roadFeatures)); SimpleFeature road1 = SimpleFeatureBuilder.template(roadType, null); mds.addFeatures(Collections.singletonList(road1)); assertEquals(roadFeatures.length + 1, mds.entry("road").getMemory().size()); }
public void testAddingTwoFeaturesWithSameType() throws IOException { MemoryDataStore mds = new MemoryDataStore(); mds.addFeature(roadFeatures[0]); mds.addFeature(roadFeatures[1]); assertEquals(2, mds.entry("road").getMemory().size()); }
public void testCallingAddFeaturesWithReaderTwiceAndExtentInitialCollection() throws IOException { FeatureReader<SimpleFeatureType, SimpleFeature> reader = DataUtilities.reader(roadFeatures); MemoryDataStore mds = new MemoryDataStore(reader); assertEquals(roadFeatures.length, mds.entry(roadType.getTypeName()).getMemory().size()); FeatureReader<SimpleFeatureType, SimpleFeature> secondReader = DataUtilities.reader( new SimpleFeature[] {SimpleFeatureBuilder.template(roadType, null)}); mds.addFeatures(secondReader); assertEquals(roadFeatures.length + 1, mds.entry("road").getMemory().size()); }
public void testCallingAddFeaturesWithIteratorTwiceAndExtentInitialCollection() throws IOException { FeatureReader<SimpleFeatureType, SimpleFeature> reader = DataUtilities.reader(roadFeatures); MemoryDataStore mds = new MemoryDataStore(reader); assertEquals(roadFeatures.length, mds.entry(roadType.getTypeName()).getMemory().size()); SimpleFeatureIterator featureIterator = DataUtilities.collection( new SimpleFeature[] {SimpleFeatureBuilder.template(roadType, null)}) .features(); mds.addFeatures(featureIterator); assertEquals(roadFeatures.length + 1, mds.entry("road").getMemory().size()); } }
public void testGetFeatureWriterRemove() throws IOException { FeatureWriter<SimpleFeatureType, SimpleFeature> writer = data.getFeatureWriter("road", Transaction.AUTO_COMMIT); SimpleFeature feature; while (writer.hasNext()) { feature = writer.next(); if (feature.getID().equals("road.rd1")) { writer.remove(); } } assertEquals(roadFeatures.length - 1, data.entry("road").getMemory().size()); }
public void testCallingAddFeaturesWithArrayTwiceAndExtentInitialCollection() throws IOException { MemoryDataStore mds = new MemoryDataStore(); mds.addFeatures(roadFeatures); SimpleFeature road1 = SimpleFeatureBuilder.template(roadType, null); mds.addFeatures(new SimpleFeature[] {road1}); assertEquals(roadFeatures.length + 1, mds.entry("road").getMemory().size()); }
public void testGetFeaturesWriterModify() throws IOException { FeatureWriter<SimpleFeatureType, SimpleFeature> writer = data.getFeatureWriter("road", Transaction.AUTO_COMMIT); SimpleFeature feature; while (writer.hasNext()) { feature = writer.next(); if (feature.getID().equals("road.rd1")) { feature.setAttribute("name", "changed"); writer.write(); } } feature = data.entry("road").getMemory().get("road.rd1"); assertEquals("changed", feature.getAttribute("name")); }
public void testGetFeaturesWriterAdd() throws IOException { FeatureWriter<SimpleFeatureType, SimpleFeature> writer = data.getFeatureWriter("road", Transaction.AUTO_COMMIT); SimpleFeature feature; while (writer.hasNext()) { feature = (SimpleFeature) writer.next(); } assertFalse(writer.hasNext()); feature = (SimpleFeature) writer.next(); feature.setAttributes(newRoad.getAttributes()); writer.write(); assertFalse(writer.hasNext()); assertEquals(roadFeatures.length + 1, data.entry("road").getMemory().size()); }
public MemoryFeatureWriterWithProvidedFIDSupport(ContentState state, Query query) throws IOException { this.state = state; featureType = state.getFeatureType(); String typeName = featureType.getTypeName(); MemoryDataStoreWithProvidedFIDSupport store = (MemoryDataStoreWithProvidedFIDSupport) state .getEntry().getDataStore(); contents = store.entry(typeName).getMemory(); iterator = contents.values().iterator(); }
public MemoryFeatureWriterWithProvidedFIDSupport(ContentState state, Query query) throws IOException { this.state = state; featureType = state.getFeatureType(); String typeName = featureType.getTypeName(); MemoryDataStoreWithProvidedFIDSupport store = (MemoryDataStoreWithProvidedFIDSupport) state .getEntry().getDataStore(); contents = store.entry(typeName).getMemory(); iterator = contents.values().iterator(); }