Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Fix app-schema - but why all these terrible implementations of size
  • Loading branch information
jodygarnett committed Oct 31, 2012
1 parent 889cec8 commit 645aa47
Show file tree
Hide file tree
Showing 6 changed files with 136 additions and 70 deletions.
Expand Up @@ -320,8 +320,14 @@ public void testDataStore() throws Exception {


private int size(FeatureCollection<FeatureType, Feature> features) { private int size(FeatureCollection<FeatureType, Feature> features) {
int size = 0; int size = 0;
for (Iterator i = features.iterator(); i.hasNext(); i.next()) { FeatureIterator<Feature> i = features.features();
size++; try {
for (; i.hasNext(); i.next()) {
size++;
}
}
finally {
i.close();
} }
return size; return size;
} }
Expand Down
Expand Up @@ -248,8 +248,14 @@ public void testFeatureSourceHonoursQueryNamespace() throws Exception {


private int size(FeatureCollection<FeatureType, Feature> features) { private int size(FeatureCollection<FeatureType, Feature> features) {
int size = 0; int size = 0;
for (Iterator i = features.iterator(); i.hasNext(); i.next()) { FeatureIterator<Feature> i = features.features();
size++; try {
for (; i.hasNext(); i.next()) {
size++;
}
}
finally {
i.close();
} }
return size; return size;
} }
Expand Down
Expand Up @@ -35,6 +35,7 @@
import org.geotools.data.complex.config.FeatureTypeRegistry; import org.geotools.data.complex.config.FeatureTypeRegistry;
import org.geotools.data.complex.config.XMLConfigDigester; import org.geotools.data.complex.config.XMLConfigDigester;
import org.geotools.feature.FeatureCollection; import org.geotools.feature.FeatureCollection;
import org.geotools.feature.FeatureIterator;
import org.geotools.feature.Types; import org.geotools.feature.Types;
import org.geotools.test.AppSchemaTestSupport; import org.geotools.test.AppSchemaTestSupport;
import org.geotools.xml.SchemaIndex; import org.geotools.xml.SchemaIndex;
Expand Down Expand Up @@ -184,8 +185,14 @@ public void testGetFeatures() throws Exception {


private int size(FeatureCollection<FeatureType, Feature> features) { private int size(FeatureCollection<FeatureType, Feature> features) {
int size = 0; int size = 0;
for (Iterator i = features.iterator(); i.hasNext(); i.next()) { FeatureIterator<Feature> i = features.features();
size++; try {
for (; i.hasNext(); i.next()) {
size++;
}
}
finally {
i.close();
} }
return size; return size;
} }
Expand Down
Expand Up @@ -48,6 +48,7 @@
import org.geotools.data.memory.MemoryDataStore; import org.geotools.data.memory.MemoryDataStore;
import org.geotools.factory.CommonFactoryFinder; import org.geotools.factory.CommonFactoryFinder;
import org.geotools.feature.FeatureCollection; import org.geotools.feature.FeatureCollection;
import org.geotools.feature.FeatureIterator;
import org.geotools.feature.NameImpl; import org.geotools.feature.NameImpl;
import org.geotools.feature.TypeBuilder; import org.geotools.feature.TypeBuilder;
import org.geotools.feature.Types; import org.geotools.feature.Types;
Expand Down Expand Up @@ -185,7 +186,7 @@ private FeatureTypeMapping createSampleDerivedAttributeMappings() throws Excepti
attMappings.add(new AttributeMapping(null, strConcat, XPath.steps(targetFeature, attMappings.add(new AttributeMapping(null, strConcat, XPath.steps(targetFeature,
"concatenated", namespaces))); "concatenated", namespaces)));


FeatureSource simpleSource = mapping.getSource(); FeatureSource<?,?> simpleSource = mapping.getSource();
FeatureTypeMapping mapping = new FeatureTypeMapping(simpleSource, targetFeature, FeatureTypeMapping mapping = new FeatureTypeMapping(simpleSource, targetFeature,
attMappings, namespaces); attMappings, namespaces);
return mapping; return mapping;
Expand All @@ -207,9 +208,10 @@ public void testUnrollFidMappedToAttribute() throws Exception {
.getFeatures(unrolled); .getFeatures(unrolled);
assertEquals(1, getCount(results)); assertEquals(1, getCount(results));


Iterator<SimpleFeature> features = results.iterator(); FeatureIterator<SimpleFeature> features = results.features();
SimpleFeature unmappedFeature = (SimpleFeature) features.next(); SimpleFeature unmappedFeature = (SimpleFeature) features.next();
results.close(features); features.close();

assertNotNull(unmappedFeature); assertNotNull(unmappedFeature);
Object object = unmappedFeature.getProperty("station_no").getValue(); Object object = unmappedFeature.getProperty("station_no").getValue();
assertEquals(fid, object); assertEquals(fid, object);
Expand Down Expand Up @@ -240,24 +242,26 @@ public void testUnrollFid() throws Exception {
.getFeatures(unrolled); .getFeatures(unrolled);
assertEquals(1, getCount(results)); assertEquals(1, getCount(results));


Iterator<SimpleFeature> features = results.iterator(); FeatureIterator<SimpleFeature> features = results.features();
SimpleFeature unmappedFeature = (SimpleFeature) features.next(); SimpleFeature unmappedFeature = (SimpleFeature) features.next();
results.close(features);
features.close();

assertNotNull(unmappedFeature); assertNotNull(unmappedFeature);
Object object = unmappedFeature.getProperty("station_no").getValue(); Object object = unmappedFeature.getProperty("station_no").getValue();
assertEquals(fid1, object); assertEquals(fid1, object);
} }


private int getCount(FeatureCollection features) { private int getCount(FeatureCollection<?,?> features) {
Iterator iterator = features.iterator(); FeatureIterator<?> iterator = features.features();
int count = 0; int count = 0;
try { try {
while (iterator.hasNext()) { while (iterator.hasNext()) {
iterator.next(); iterator.next();
count++; count++;
} }
} finally { } finally {
features.close(iterator); iterator.close();
} }
return count; return count;
} }
Expand Down Expand Up @@ -307,11 +311,17 @@ private void checkUnrollIdExpression(Expression idExpression) throws Exception {
} }
featureMapping.setIdentifierExpression(idExpression); featureMapping.setIdentifierExpression(idExpression);
this.visitor = new UnmappingFilterVisitor(this.mapping); this.visitor = new UnmappingFilterVisitor(this.mapping);
FeatureCollection<SimpleFeatureType,SimpleFeature> content = mapping.getSource()
.getFeatures(); // retrieve a single sample feature
Iterator iterator = content.iterator(); FeatureCollection<?,?> content = mapping.getSource().getFeatures();
Feature sourceFeature = (Feature) iterator.next(); FeatureIterator<?> iterator = content.features();
content.close(iterator); Feature sourceFeature = null;
try {
sourceFeature = iterator.next();
}
finally {
iterator.close();
}
String fid = sourceFeature.getIdentifier().toString(); String fid = sourceFeature.getIdentifier().toString();
Id fidFilter = ff.id(Collections.singleton(ff.featureId(fid))); Id fidFilter = ff.id(Collections.singleton(ff.featureId(fid)));
Filter unrolled = (Filter) fidFilter.accept(visitor, null); Filter unrolled = (Filter) fidFilter.accept(visitor, null);
Expand All @@ -321,9 +331,10 @@ private void checkUnrollIdExpression(Expression idExpression) throws Exception {
FeatureCollection<SimpleFeatureType,SimpleFeature> results = mapping.getSource() FeatureCollection<SimpleFeatureType,SimpleFeature> results = mapping.getSource()
.getFeatures(unrolled); .getFeatures(unrolled);
assertEquals(1, getCount(results)); assertEquals(1, getCount(results));
iterator = results.iterator(); iterator = results.features();
SimpleFeature unmappedFeature = (SimpleFeature) iterator.next(); SimpleFeature unmappedFeature = (SimpleFeature) iterator.next();
results.close(iterator); iterator.close();

assertEquals(fid, unmappedFeature.getID()); assertEquals(fid, unmappedFeature.getID());
} }


Expand Down Expand Up @@ -682,7 +693,7 @@ public void testLogicFilter() throws Exception {
testLogicFilter(Or.class); testLogicFilter(Or.class);
} }


private void testLogicFilter(Class filterType) throws Exception { private void testLogicFilter(Class<?> filterType) throws Exception {
BinaryLogicOperator complexLogicFilter; BinaryLogicOperator complexLogicFilter;
PropertyIsGreaterThan resultFilter = ff.greater(ff.property("measurement/result"), ff PropertyIsGreaterThan resultFilter = ff.greater(ff.property("measurement/result"), ff
.literal(new Integer(5))); .literal(new Integer(5)));
Expand Down
Expand Up @@ -29,6 +29,7 @@
import org.geotools.data.DataAccessFinder; import org.geotools.data.DataAccessFinder;
import org.geotools.data.FeatureSource; import org.geotools.data.FeatureSource;
import org.geotools.feature.FeatureCollection; import org.geotools.feature.FeatureCollection;
import org.geotools.feature.FeatureIterator;
import org.geotools.feature.Types; import org.geotools.feature.Types;
import org.geotools.test.AppSchemaTestSupport; import org.geotools.test.AppSchemaTestSupport;
import org.junit.BeforeClass; import org.junit.BeforeClass;
Expand Down Expand Up @@ -91,12 +92,16 @@ public void testBBoxWithPropertyName() throws Exception {
BBOX filter = ff.bbox(ff.property("gsml:shape"), -1.1, 52.5, -1.1, 52.6, null); BBOX filter = ff.bbox(ff.property("gsml:shape"), -1.1, 52.5, -1.1, 52.6, null);
FeatureCollection<FeatureType, Feature> features = fSource.getFeatures(filter); FeatureCollection<FeatureType, Feature> features = fSource.getFeatures(filter);
assertEquals(2, size(features)); assertEquals(2, size(features));
Iterator<Feature> iterator = features.iterator(); FeatureIterator<Feature> iterator = features.features();
Feature f = iterator.next(); try {
assertEquals(f.getIdentifier().toString(), "mf1"); Feature f = iterator.next();
f = iterator.next(); assertEquals(f.getIdentifier().toString(), "mf1");
assertEquals(f.getIdentifier().toString(), "mf3"); f = iterator.next();

assertEquals(f.getIdentifier().toString(), "mf3");
}
finally {
iterator.close();
}
// prove that it would fail when property name is not a geometry attribute // prove that it would fail when property name is not a geometry attribute
filter = ff.bbox(ff.property("gml:name[1]"), -1.2, 52.5, -1.1, 52.6, null); filter = ff.bbox(ff.property("gml:name[1]"), -1.2, 52.5, -1.1, 52.6, null);
features = fSource.getFeatures(filter); features = fSource.getFeatures(filter);
Expand All @@ -116,17 +121,28 @@ public void testBBoxWithNoPropertyName() throws IOException {
BBOX filter = ff.bbox(ff.property(""), -1.1, 52.5, -1.1, 52.6, null); BBOX filter = ff.bbox(ff.property(""), -1.1, 52.5, -1.1, 52.6, null);
FeatureCollection<FeatureType, Feature> features = fSource.getFeatures(filter); FeatureCollection<FeatureType, Feature> features = fSource.getFeatures(filter);
assertEquals(2, size(features)); assertEquals(2, size(features));
Iterator<Feature> iterator = features.iterator(); FeatureIterator<Feature> iterator = features.features();
Feature f = iterator.next(); try {
assertEquals(f.getIdentifier().toString(), "mf1"); Feature f = iterator.next();
f = iterator.next(); assertEquals(f.getIdentifier().toString(), "mf1");
assertEquals(f.getIdentifier().toString(), "mf3"); f = iterator.next();
assertEquals(f.getIdentifier().toString(), "mf3");
}
finally {
iterator.close();
}
} }


private int size(FeatureCollection<FeatureType, Feature> features) { private int size(FeatureCollection<FeatureType, Feature> features) {
int size = 0; int size = 0;
for (Iterator i = features.iterator(); i.hasNext(); i.next()) { FeatureIterator<Feature> i = features.features();
size++; try {
for (; i.hasNext(); i.next()) {
size++;
}
}
finally {
i.close();
} }
return size; return size;
} }
Expand Down
Expand Up @@ -29,6 +29,7 @@
import org.geotools.data.FeatureSource; import org.geotools.data.FeatureSource;
import org.geotools.factory.CommonFactoryFinder; import org.geotools.factory.CommonFactoryFinder;
import org.geotools.feature.FeatureCollection; import org.geotools.feature.FeatureCollection;
import org.geotools.feature.FeatureIterator;
import org.geotools.feature.Types; import org.geotools.feature.Types;
import org.geotools.gml3.bindings.GML3EncodingUtils; import org.geotools.gml3.bindings.GML3EncodingUtils;
import org.geotools.test.AppSchemaTestSupport; import org.geotools.test.AppSchemaTestSupport;
Expand Down Expand Up @@ -119,26 +120,37 @@ public void testRecodeFunction() throws IOException {
put("sc.3", "c"); put("sc.3", "c");
} }
}; };
Iterator<Feature> features = exCollection.iterator(); FeatureIterator<Feature> features = exCollection.features();
while (features.hasNext()) { try {
Feature feature = features.next(); while (features.hasNext()) {
String fId = feature.getIdentifier().getID(); Feature feature = features.next();
String recodedName = VALUE_MAP.get(fId); String fId = feature.getIdentifier().getID();
// gml[3]: <OCQL>Recode(STRING, 'string_one', 'a', 'string_two', 'b', 'string_three', String recodedName = VALUE_MAP.get(fId);
// 'c')</OCQL> // gml[3]: <OCQL>Recode(STRING, 'string_one', 'a', 'string_two', 'b', 'string_three',
ComplexAttribute complexAttribute = (ComplexAttribute) ff.property("gml:name[3]") // 'c')</OCQL>
.evaluate(feature); ComplexAttribute complexAttribute = (ComplexAttribute) ff.property("gml:name[3]")
String value = Converters.convert(GML3EncodingUtils.getSimpleContent(complexAttribute), .evaluate(feature);
String.class); String value = Converters.convert(GML3EncodingUtils.getSimpleContent(complexAttribute),
assertEquals(recodedName, value); String.class);
assertEquals(recodedName, value);
}
}
finally {
features.close();
} }
exCollection.close(features);
} }


private int size(FeatureCollection<FeatureType, Feature> features) { private int size(FeatureCollection<FeatureType, Feature> features) {
// return features.size(); // JG: why are you not doing this?
int size = 0; int size = 0;
for (Iterator i = features.iterator(); i.hasNext(); i.next()) { FeatureIterator<Feature> i = features.features();
size++; try {
for (; i.hasNext(); i.next()) {
size++;
}
}
finally {
i.close();
} }
return size; return size;
} }
Expand All @@ -155,15 +167,19 @@ public void testCategorizeFunction() {
put("sc.3", "a valid value"); put("sc.3", "a valid value");
} }
}; };
Iterator<Feature> features = exCollection.iterator(); FeatureIterator<Feature> features = exCollection.features();
while (features.hasNext()) { try {
Feature feature = features.next(); while (features.hasNext()) {
String fId = feature.getIdentifier().getID(); Feature feature = features.next();
Property attribute = feature.getProperty("someAttribute"); String fId = feature.getIdentifier().getID();
// <OCQL>Categorize(getID(), 'missing value', 2, 'a valid value')</OCQL> Property attribute = feature.getProperty("someAttribute");
assertEquals(attribute.getValue(), VALUE_MAP.get(fId)); // <OCQL>Categorize(getID(), 'missing value', 2, 'a valid value')</OCQL>
assertEquals(attribute.getValue(), VALUE_MAP.get(fId));
}
}
finally {
features.close();
} }
exCollection.close(features);
} }


/** /**
Expand Down Expand Up @@ -210,19 +226,23 @@ public void testVocabFunctionInMappingFile() {
put("sc.3", "urn:cgi:classifier:CGI:SimpleLithology:2008:sediment"); put("sc.3", "urn:cgi:classifier:CGI:SimpleLithology:2008:sediment");
} }
}; };
Iterator<Feature> features = exCollection.iterator(); FeatureIterator<Feature> features = exCollection.features();
while (features.hasNext()) { try {
Feature feature = features.next(); while (features.hasNext()) {
String fId = feature.getIdentifier().getID(); Feature feature = features.next();
// gml[2]: <OCQL>Vocab(URN_ID, String fId = feature.getIdentifier().getID();
// 'src/test/java/org/geotools/filter/test-data/minoc_lithology_mapping.properties')</OCQL> // gml[2]: <OCQL>Vocab(URN_ID,
ComplexAttribute complexAttribute = (ComplexAttribute) ff.property("gml:name[2]") // 'src/test/java/org/geotools/filter/test-data/minoc_lithology_mapping.properties')</OCQL>
.evaluate(feature); ComplexAttribute complexAttribute = (ComplexAttribute) ff.property("gml:name[2]")
String value = Converters.convert(GML3EncodingUtils.getSimpleContent(complexAttribute), .evaluate(feature);
String.class); String value = Converters.convert(GML3EncodingUtils.getSimpleContent(complexAttribute),
assertEquals(VALUE_MAP.get(fId), value); String.class);
assertEquals(VALUE_MAP.get(fId), value);
}
}
finally {
features.close();
} }
exCollection.close(features);
} }


} }

0 comments on commit 645aa47

Please sign in to comment.