package org.geotoolkit.data.memory; import java.util.Set; import org.apache.sis.feature.builder.FeatureTypeBuilder; import org.geotoolkit.data.FeatureCollection; import org.geotoolkit.data.FeatureWriter; import org.geotoolkit.data.StorageCountListener; import org.geotoolkit.data.query.QueryBuilder; import org.geotoolkit.data.session.Session; import org.apache.sis.storage.DataStoreException; import org.junit.Test; import org.opengis.filter.Id; import static org.junit.Assert.*; import org.opengis.feature.Feature; import org.opengis.feature.FeatureType; import org.apache.sis.internal.feature.AttributeConvention; import org.opengis.filter.Filter; /** * * @author geoadmin */ public class MemoryWritingTest extends org.geotoolkit.test.TestBase { private final FeatureType type; private final MemoryFeatureStore store; public MemoryWritingTest() throws DataStoreException { store = new MemoryFeatureStore(); final FeatureTypeBuilder ftb = new FeatureTypeBuilder(); ftb.setName("test"); ftb.addAttribute(String.class).setName(AttributeConvention.IDENTIFIER_PROPERTY); ftb.addAttribute(String.class).setName("att"); type = ftb.build(); store.createFeatureType(type); } @Test public void testIdEvent() throws DataStoreException { StorageCountListener listener = new StorageCountListener(); //test on the featurestore with feature writer //////////////////////////// store.addStorageListener(listener); final FeatureWriter writer = store.getFeatureWriter(QueryBuilder.filtered(type.getName().toString(),Filter.EXCLUDE)); final Feature feature = writer.next(); feature.setPropertyValue("att","ii"); writer.write(); writer.close(); assertEquals(1, listener.numContentEvent); assertNotNull(listener.lastContentEvent); Id ids = listener.lastContentEvent.getIds(); assertNotNull(ids); Set<Object> objects = ids.getIDs(); assertEquals(1, objects.size()); Object obj = objects.iterator().next(); assertNotNull(obj); assertEquals("test.0", obj); store.removeStorageListener(listener); //test on a feature collection ///////////////////////////////////////// listener = new StorageCountListener(); Session session = store.createSession(false); FeatureCollection fc = session.getFeatureCollection(QueryBuilder.all(type.getName())); fc.addStorageListener(listener); Feature newFeature = type.newInstance(); newFeature.setPropertyValue(AttributeConvention.IDENTIFIER_PROPERTY.toString(), "myID"); fc.add(newFeature); assertEquals(1, listener.numContentEvent); assertNotNull(listener.lastContentEvent); ids = listener.lastContentEvent.getIds(); assertNotNull(ids); objects = ids.getIDs(); assertEquals(1, objects.size()); obj = objects.iterator().next(); assertNotNull(obj); assertEquals("myID", obj); store.removeStorageListener(listener); } }