FeatureReader<SimpleFeatureType, SimpleFeature> reader(String typeName) throws IOException { return dataStore.getFeatureReader( new Query(typeName, Filter.INCLUDE), Transaction.AUTO_COMMIT); }
/** * Returns a reader for the contents of a feature dataset. * * @param entry The feature entry. * @param filter Filter Filter determining what subset of dataset to return. May be <code>null * </code> to specify no filter. * @param tx Transaction object, may be <code>null</code> to specify auto commit transaction. */ public SimpleFeatureReader reader(FeatureEntry entry, Filter filter, Transaction tx) throws IOException { Query q = new Query(entry.getTableName()); q.setFilter(filter != null ? filter : Filter.INCLUDE); return Features.simple(dataStore().getFeatureReader(q, tx)); }
public void testGetFeatures() throws Exception { try (FeatureReader<SimpleFeatureType, SimpleFeature> r = dataStore.getFeatureReader(new Query(tname(("guid"))), Transaction.AUTO_COMMIT)) { r.hasNext(); Set<UUID> uuids = new HashSet<UUID>(); uuids.add(uuid1); uuids.add(uuid2); while (r.hasNext()) { SimpleFeature f = (SimpleFeature) r.next(); assertNotNull(uuids.remove(f.getAttribute(aname("uuidProperty")))); } assertTrue(uuids.isEmpty()); } }
public void testOutsideWorld() throws Exception { if (!isGeographySupportAvailable()) { return; } FilterFactory ff = CommonFactoryFinder.getFilterFactory(null); BBOX bbox = ff.bbox("", -300, -40, -200, 40, "EPSG:4326"); // should select everything without bombing out Query q = new Query(tname("geopoint")); q.setFilter(bbox); try (FeatureReader r = dataStore.getFeatureReader(q, Transaction.AUTO_COMMIT)) { assertFalse(r.hasNext()); } }
public void testGetFeatureReaderFilterPrePostWithNoGeometry() throws IOException, IllegalFilterException { // GEOT-1069, make sure the post filter is run even if the geom property is not requested try (Transaction t = new DefaultTransaction()) { FilterFactory factory = CommonFactoryFinder.getFilterFactory(null); FilterFunction_geometryType geomTypeExpr = new FilterFunction_geometryType(); geomTypeExpr.setParameters( (List) Collections.singletonList(factory.property(aname("geom")))); PropertyIsEqualTo filter = factory.equals(geomTypeExpr, factory.literal("Polygon")); Query query = new Query(tname("road"), filter); query.setPropertyNames((List) Collections.singletonList(aname("id"))); try (FeatureReader<SimpleFeatureType, SimpleFeature> reader = dataStore.getFeatureReader(query, t)) { // if the above statement didn't throw an exception, we're content assertNotNull(reader); } filter = factory.equals(geomTypeExpr, factory.literal("LineString")); query.setFilter(filter); try (FeatureReader<SimpleFeatureType, SimpleFeature> reader = dataStore.getFeatureReader(query, t)) { assertTrue(reader.hasNext()); } } }
public void testGetFeatureReaderFilterPrePost() throws IOException, IllegalFilterException { FilterFactory factory = CommonFactoryFinder.getFilterFactory(null); FilterFunction_geometryType geomTypeExpr = new FilterFunction_geometryType(); geomTypeExpr.setParameters( (List) Collections.singletonList(factory.property(aname("geom")))); PropertyIsEqualTo filter = factory.equals(geomTypeExpr, factory.literal("Polygon")); try (Transaction t = new DefaultTransaction()) { try (FeatureReader<SimpleFeatureType, SimpleFeature> reader = dataStore.getFeatureReader(new Query(tname("road"), filter), t)) { assertNotNull(reader); assertFalse(reader.hasNext()); } filter = factory.equals(geomTypeExpr, factory.literal("LineString")); try (FeatureReader<SimpleFeatureType, SimpleFeature> reader = dataStore.getFeatureReader(new Query(tname("road"), filter), t)) { assertTrue(reader.hasNext()); } } }
public void testGetFeatures() throws Exception { try (FeatureReader r = dataStore.getFeatureReader(new Query(tname("b")), Transaction.AUTO_COMMIT)) { r.hasNext(); SimpleFeature f = (SimpleFeature) r.next(); assertEquals(Boolean.FALSE, f.getAttribute("boolProperty")); r.hasNext(); f = (SimpleFeature) r.next(); assertEquals(Boolean.TRUE, f.getAttribute("boolProperty")); } } }
public void testGetFeatureReaderLake() throws IOException, IllegalFilterException { try (Transaction t = new DefaultTransaction(); FeatureReader<SimpleFeatureType, SimpleFeature> reader = dataStore.getFeatureReader(new Query(tname("lake")), t)) { assertNotNull(reader); assertTrue(reader.hasNext()); assertNotNull(reader.next()); assertFalse(reader.hasNext()); } }
public void testReader() throws Exception { if (!isGeographySupportAvailable()) { return; } Query q = new Query(tname("geopoint")); try (FeatureReader r = dataStore.getFeatureReader(q, Transaction.AUTO_COMMIT)) { assertTrue(r.hasNext()); while (r.hasNext()) { SimpleFeature f = (SimpleFeature) r.next(); assertTrue(f.getAttribute(aname("geo")) instanceof Point); } } }
public void testGetFeatureReaderFilterAutoCommit() throws NoSuchElementException, IOException, IllegalAttributeException { SimpleFeatureType type = dataStore.getSchema(tname("road")); try (FeatureReader<SimpleFeatureType, SimpleFeature> reader = dataStore.getFeatureReader( new Query(tname("road"), Filter.INCLUDE), Transaction.AUTO_COMMIT); ) { assertFalse(reader instanceof FilteringFeatureReader); assertEquals(type, reader.getFeatureType()); assertEquals(td.roadFeatures.length, count(reader)); } try (FeatureReader<SimpleFeatureType, SimpleFeature> reader = dataStore.getFeatureReader( new Query(tname("road"), Filter.EXCLUDE), Transaction.AUTO_COMMIT)) { assertFalse(reader.hasNext()); assertEquals(type, reader.getFeatureType()); assertEquals(0, count(reader)); } try (FeatureReader<SimpleFeatureType, SimpleFeature> reader = dataStore.getFeatureReader( new Query(tname("road"), td.rd1Filter), Transaction.AUTO_COMMIT)) { // assertTrue(reader instanceof FilteringFeatureReader); assertEquals(type, reader.getFeatureType()); assertEquals(1, count(reader)); } }
public void testGetFeatureInvalidFilter() throws Exception { FilterFactory ff = CommonFactoryFinder.getFilterFactory(null); PropertyIsEqualTo f = ff.equals(ff.property("invalidAttribute"), ff.literal(5)); Query q = new Query(tname("river")); q.setPropertyNames(new String[] {aname("geom")}); q.setFilter(f); // make sure a complaint related to the invalid filter is thrown here try (FeatureReader<SimpleFeatureType, SimpleFeature> reader = dataStore.getFeatureReader(q, Transaction.AUTO_COMMIT)) { fail("This query should have failed, it contains an invalid filter"); } catch (Exception e) { // good, it's supposed to fail } }
public void testBBoxLargerThanWorld() throws Exception { if (!isGeographySupportAvailable()) { return; } FilterFactory ff = CommonFactoryFinder.getFilterFactory(null); BBOX bbox = ff.bbox("", -200, -200, 200, 200, "EPSG:4326"); // should select everything without bombing out Query q = new Query(tname("geopoint")); q.setFilter(bbox); try (FeatureReader r = dataStore.getFeatureReader(q, Transaction.AUTO_COMMIT)) { assertTrue(r.hasNext()); while (r.hasNext()) { SimpleFeature f = (SimpleFeature) r.next(); assertTrue(f.getAttribute(aname("geo")) instanceof Point); } } }
public void testLargerThanHalfWorld() throws Exception { if (!isGeographySupportAvailable()) { return; } FilterFactory ff = CommonFactoryFinder.getFilterFactory(null); BBOX bbox = ff.bbox("", -140, -50, 140, 50, "EPSG:4326"); // should select everything without bombing out Query q = new Query(tname("geopoint")); q.setFilter(bbox); try (FeatureReader r = dataStore.getFeatureReader(q, Transaction.AUTO_COMMIT)) { assertTrue(r.hasNext()); while (r.hasNext()) { SimpleFeature f = (SimpleFeature) r.next(); assertTrue(f.getAttribute(aname("geo")) instanceof Point); } } }
public void testGetFeatureReaderFilterWithAttributesNotRequested2() throws Exception { SimpleFeatureType type = dataStore.getSchema(tname("river")); FilterFactory ff = CommonFactoryFinder.getFilterFactory(null); FilterFunction_ceil ceil = new FilterFunction_ceil(); ceil.setParameters((List) Collections.singletonList(ff.property(aname("flow")))); PropertyIsEqualTo f = ff.equals(ceil, ff.literal(5)); Query q = new Query(tname("river")); q.setPropertyNames(new String[] {aname("geom")}); q.setFilter(f); // with GEOT-1069 an exception is thrown here try (Transaction t = new DefaultTransaction(); FeatureReader<SimpleFeatureType, SimpleFeature> reader = dataStore.getFeatureReader(q, t)) { assertTrue(reader.hasNext()); assertEquals(1, reader.getFeatureType().getAttributeCount()); reader.next(); assertFalse(reader.hasNext()); } }
public void testGetFeatureWriter() throws IOException { try (FeatureWriter<SimpleFeatureType, SimpleFeature> writer = dataStore.getFeatureWriter(tname("ft1"), Transaction.AUTO_COMMIT)) { while (writer.hasNext()) { SimpleFeature feature = writer.next(); feature.setAttribute(aname("stringProperty"), "foo"); writer.write(); } } Query query = new Query(tname("ft1")); try (FeatureReader<SimpleFeatureType, SimpleFeature> reader = dataStore.getFeatureReader(query, Transaction.AUTO_COMMIT)) { assertTrue(reader.hasNext()); while (reader.hasNext()) { SimpleFeature feature = reader.next(); assertEquals("foo", feature.getAttribute(aname("stringProperty"))); } } }
public void testNext() throws Exception { Query query = new Query(tname("ft1")); try (FeatureReader reader = dataStore.getFeatureReader(query, Transaction.AUTO_COMMIT)) { assertTrue(reader.hasNext()); SimpleFeature feature = (SimpleFeature) reader.next();
public void testUpdate() throws Exception { if (!isGeographySupportAvailable()) { return; } Point p = gf.createPoint(new Coordinate(1, 1)); try (FeatureWriter fw = dataStore.getFeatureWriter(tname("geopoint"), Transaction.AUTO_COMMIT)) { assertTrue(fw.hasNext()); while (fw.hasNext()) { SimpleFeature f = (SimpleFeature) fw.next(); f.setDefaultGeometry(p); fw.write(); } } try (FeatureReader fr = dataStore.getFeatureReader(new Query(tname("geopoint")), Transaction.AUTO_COMMIT)) { while (fr.hasNext()) { SimpleFeature f = (SimpleFeature) fr.next(); assertEquals(p, f.getDefaultGeometry()); } } }
public void testGetFeatureReaderFilterWithAttributesNotRequested() throws Exception { // this is here to avoid http://jira.codehaus.org/browse/GEOT-1069 // to come up again SimpleFeatureType type = dataStore.getSchema(tname("river")); FilterFactory ff = CommonFactoryFinder.getFilterFactory(null); PropertyIsEqualTo f = ff.equals(ff.property(aname("flow")), ff.literal(4.5)); Query q = new Query(tname("river")); q.setPropertyNames(new String[] {aname("geom")}); q.setFilter(f); // with GEOT-1069 an exception is thrown here try (Transaction t = new DefaultTransaction(); FeatureReader<SimpleFeatureType, SimpleFeature> reader = dataStore.getFeatureReader(q, t)) { assertTrue(reader.hasNext()); assertEquals(1, reader.getFeatureType().getAttributeCount()); reader.next(); assertFalse(reader.hasNext()); } }
public void testAppend() throws Exception { if (!isGeographySupportAvailable()) { return; } Point point = gf.createPoint(new Coordinate(10, 10)); try (FeatureWriter fw = dataStore.getFeatureWriterAppend(tname("geopoint"), Transaction.AUTO_COMMIT)) { assertFalse(fw.hasNext()); SimpleFeature f = (SimpleFeature) fw.next(); f.setAttribute("name", "append"); f.setDefaultGeometry(point); fw.write(); } Filter filter = ff.equals(ff.property("name"), ff.literal("append")); Query q = new Query(tname("geopoint"), filter); try (FeatureReader fr = dataStore.getFeatureReader(q, Transaction.AUTO_COMMIT)) { assertTrue(fr.hasNext()); SimpleFeature f = (SimpleFeature) fr.next(); assertEquals(point, f.getDefaultGeometry()); } }
dataStore.getFeatureReader(q, Transaction.AUTO_COMMIT)) { assertEquals(crs, fr.getFeatureType().getCoordinateReferenceSystem()); assertEquals(