package org.geotools.data.property; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.geotools.data.DataStore; import org.geotools.data.DataStoreFinder; import org.geotools.data.DataUtilities; import org.geotools.data.FeatureReader; import org.geotools.data.Query; import org.geotools.data.Transaction; import org.geotools.data.simple.SimpleFeatureCollection; import org.geotools.data.simple.SimpleFeatureIterator; import org.geotools.data.simple.SimpleFeatureSource; import org.geotools.factory.CommonFactoryFinder; import org.geotools.filter.text.cql2.CQL; import org.geotools.filter.text.cql2.CQLException; import org.opengis.feature.Property; import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; import org.opengis.feature.type.AttributeDescriptor; import org.opengis.filter.Filter; import org.opengis.filter.FilterFactory; import org.opengis.filter.identity.FeatureId; import com.vividsolutions.jts.geom.Geometry; public class PropertyExamples { static File directory; public static void main(String[] args) { File tmp = null; try { tmp = File.createTempFile("example", ""); boolean exists = tmp.exists(); if (exists) { System.err.println("Removing tempfile " + tmp); tmp.delete(); } boolean created = tmp.mkdirs(); if (!created) { System.err.println("Could not create " + tmp); System.exit(1); } File example = new File(tmp, "example.properties"); BufferedWriter writer = new BufferedWriter(new FileWriter(example)); writer.write("_=id:Integer,name:String,geom:Point"); writer.newLine(); writer.write("fid1=1|jody garnett|POINT(0 0)"); writer.newLine(); writer.write("fid2=2|brent|POINT(10 10)"); writer.newLine(); writer.write("fid3=3|dave|POINT(20 20)"); writer.newLine(); writer.write("fid4=4|justin deolivera|POINT(30 30)"); writer.newLine(); writer.close(); directory = tmp; try { example1(); example2(); example3(); example4(); example5(); example6(); } catch (Throwable t) { t.printStackTrace(); System.exit(1); } } catch (Exception e) { e.printStackTrace(); } finally { File list[] = tmp.listFiles(); for (int i = 0; i < list.length; i++) { list[i].delete(); } tmp.delete(); } } private static void example1() throws IOException { System.out.println("example1 start\n"); // example1 start Map<String, Serializable> params = new HashMap<String, Serializable>(); params.put("directory", directory); DataStore store = DataStoreFinder.getDataStore(params); String names[] = store.getTypeNames(); System.out.println("typenames: " + names.length); System.out.println("typename[0]: " + names[0]); // example1 end System.out.println("\nexample1 end\n"); } private static void example2() throws IOException { System.out.println("example2 start\n"); // example2 start Map<String, Serializable> params = new HashMap<String, Serializable>(); params.put("directory", directory); DataStore store = DataStoreFinder.getDataStore(params); SimpleFeatureType type = store.getSchema("example"); System.out.println(" typeName: " + type.getTypeName()); System.out.println(" name: " + type.getName()); System.out.println("attribute count: " + type.getAttributeCount()); AttributeDescriptor id = type.getDescriptor(0); System.out.println("attribute 'id' name:" + id.getName()); System.out.println("attribute 'id' type:" + id.getType().toString()); System.out.println("attribute 'id' binding:" + id.getType().getDescription()); AttributeDescriptor name = type.getDescriptor("name"); System.out.println("attribute 'name' name:" + name.getName()); System.out.println("attribute 'name' binding:" + name.getType().getBinding()); // example2 end System.out.println("\nexample2 end\n"); } private static void example3() throws IOException { System.out.println("example3 start\n"); // example3 start Map<String, Serializable> params = new HashMap<String, Serializable>(); params.put("directory", directory); DataStore datastore = DataStoreFinder.getDataStore(params); Query query = new Query("example"); FeatureReader<SimpleFeatureType, SimpleFeature> reader = datastore .getFeatureReader(query, Transaction.AUTO_COMMIT); try { int count = 0; while (reader.hasNext()) { SimpleFeature feature = reader.next(); System.out.println("feature " + count + ": " + feature.getID()); count++; } System.out.println("read in " + count + " features"); } finally { reader.close(); } // example3 end System.out.println("\nexample3 end\n"); } private static void example4() throws IOException { System.out.println("example4 start\n"); // example4 start Map<String, Serializable> params = new HashMap<String, Serializable>(); params.put("directory", directory); DataStore store = DataStoreFinder.getDataStore(params); FilterFactory ff = CommonFactoryFinder.getFilterFactory(null); Set<FeatureId> selection = new HashSet<FeatureId>(); selection.add(ff.featureId("fid1")); Filter filter = ff.id(selection); Query query = new Query("example", filter); FeatureReader<SimpleFeatureType, SimpleFeature> reader = store .getFeatureReader(query, Transaction.AUTO_COMMIT); try { while (reader.hasNext()) { SimpleFeature feature = reader.next(); System.out.println("feature " + feature.getID()); for (Property property : feature.getProperties()) { System.out.print("\t"); System.out.print(property.getName()); System.out.print(" = "); System.out.println(property.getValue()); } } } finally { reader.close(); } // example4 end System.out.println("\nexample4 end\n"); } private static void example5() throws IOException, CQLException { System.out.println("example5 start\n"); // example5 start Map<String, Serializable> params = new HashMap<String, Serializable>(); params.put("directory", directory); DataStore store = DataStoreFinder.getDataStore(params); SimpleFeatureSource featureSource = store.getFeatureSource("example"); Filter filter = CQL.toFilter("name = 'dave'"); SimpleFeatureCollection features = featureSource.getFeatures(filter); System.out.println("found :" + features.size() + " feature"); SimpleFeatureIterator iterator = features.features(); try { while (iterator.hasNext()) { SimpleFeature feature = iterator.next(); Geometry geometry = (Geometry) feature.getDefaultGeometry(); System.out.println(feature.getID() + " location " + geometry); } } catch (Throwable t) { iterator.close(); } // example5 end System.out.println("\nexample5 end\n"); } private static void example6() throws IOException, CQLException { System.out.println("example6 start\n"); // example6 start Map<String, Serializable> params = new HashMap<String, Serializable>(); params.put("directory", directory); DataStore store = DataStoreFinder.getDataStore(params); SimpleFeatureSource featureSource = store.getFeatureSource("example"); SimpleFeatureCollection featureCollection = featureSource.getFeatures(); SimpleFeatureIterator features = featureCollection.features(); List<String> list = new ArrayList<String>(); try { while (features.hasNext()) { list.add(features.next().getID()); } } finally { features.close(); } System.out.println(" contents:" + list); System.out.println(" count:" + featureSource.getCount(Query.ALL)); System.out.println(" bounds:" + featureSource.getBounds(Query.ALL)); System.out.println(" size:" + featureCollection.size()); System.out.println(" bounds:" + featureCollection.getBounds()); System.out.println("collection: " + DataUtilities.collection(featureCollection).size()); // example6 end System.out.println("\nexample6 end\n"); } }