package org.geoserver.cite;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
import java.util.logging.Logger;
import org.geotools.data.DataStore;
import org.geotools.data.DataStoreFactorySpi;
import org.geotools.data.DataStoreFinder;
import org.geotools.data.FeatureStore;
import org.geotools.data.FeatureWriter;
import org.geotools.data.Transaction;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.referencing.CRS;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
import org.opengis.filter.Filter;
import org.opengis.referencing.FactoryException;
import org.opengis.referencing.NoSuchAuthorityCodeException;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.LineString;
import com.vividsolutions.jts.geom.MultiLineString;
import com.vividsolutions.jts.geom.MultiPoint;
import com.vividsolutions.jts.geom.MultiPolygon;
import com.vividsolutions.jts.geom.Point;
import com.vividsolutions.jts.geom.Polygon;
import com.vividsolutions.jts.io.WKTReader;
public class Loader {
static Logger LOGGER = Logger.getLogger( "org.geoserver.cite" );
public static void main(String[] args ) throws Exception {
String datasource = null;
String service = null;
for ( int i = 0; i < args.length; i++ ) {
if ( "-d".equals( args[i]) && i < args.length-1) {
datasource = args[++i];
}
if ( "-s".equals( args[i] ) && i < args.length-1) {
service = args[++i];
}
}
if ( datasource == null || service == null ) {
usage();
System.exit(1);
}
if ( !new File( datasource + ".properties").exists() ) {
System.out.print( "No such file: " + datasource + ".properties");
}
Properties p = new Properties();
p.load( new FileInputStream( datasource+".properties") );
Loader l = new Loader();
l.loadDataStore( p );
if ( new File( datasource + ".aliases" ).exists() ) {
p = new Properties();
p.load( new FileInputStream( datasource+".aliases") );
l.loadAliases( p );
}
if ( service.toLowerCase().startsWith("wfs-1.0")) {
l.loadWFS10();
}
if ( service.toLowerCase().startsWith( "wfs-1.1")) {
l.loadWFS11();
}
//l.loadAliases( a );
//l.loadWFS10();
//l.loadWFS11();
l.dispose();
}
static void usage() {
System.out.println( "java " + Loader.class.getName() + " -d <datasource> -s <service>");
}
/**
* data store parameters
*/
HashMap params;
/**
* type name aliases
*/
HashMap aliases;
/**
* the datastore
*/
DataStore dataStore;
public void loadDataStore( Properties properties ) throws IOException {
params = new HashMap();
for ( Object o : properties.keySet() ) {
params.put( o.toString(), properties.get( o ) );
}
DataStoreFactorySpi factory = null;
for ( Iterator<DataStoreFactorySpi> i = DataStoreFinder.getAvailableDataStores(); i.hasNext(); ) {
DataStoreFactorySpi f = i.next();
if ( f.canProcess( params ) ) {
factory = f;
break;
}
}
if ( factory == null ) {
throw new IllegalStateException( "Could not aquire datastore.");
}
dataStore = factory.createDataStore(params);
if ( dataStore == null ) {
throw new IllegalStateException( "Could not create datastore from specified parameters." );
}
}
public void dispose() {
dataStore.dispose();
}
public void loadAliases( Properties properties ) {
aliases = new HashMap();
aliases.putAll( properties );
}
SimpleFeatureType buildFeatureType( String name, String namespaceURI, int srid, List<String> names, Class... types ) {
return buildFeatureType(name, namespaceURI, srid, names, Collections.EMPTY_LIST, types);
}
SimpleFeatureType buildFeatureType( String name, String namespaceURI, int srid, List<String> names, List<String> mandatory, Class... types ) {
if ( aliases != null && aliases.containsKey( name ) ) {
name = (String) aliases.get( name );
}
SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder();
b.setName( name );
b.setNamespaceURI( namespaceURI );
try {
b.setCRS( CRS.decode( "EPSG:" + srid) );
}
catch( Exception e ) {
throw new RuntimeException( e );
}
for ( int i = 0; i < names.size(); i++ ) {
String attName = names.get( i );
if ( mandatory.contains( attName ) ) {
b.minOccurs( 1 );
b.nillable(false);
}
if ( "description".equalsIgnoreCase( attName) ) {
b.length( 5000 );
}
b.add( attName, types[ i ] );
}
return b.buildFeatureType();
}
static String cdf ="http://www.opengis.net/cite/data" ;
static String cgf ="http://www.opengis.net/cite/geometry";
public void loadWFS10() throws Exception {
loadDeletes(dataStore);
loadFifteen(dataStore);
loadLocks(dataStore);
loadInserts(dataStore);
loadNulls(dataStore);
loadOther(dataStore);
loadSeven(dataStore);
loadUpdates(dataStore);
loadLines(dataStore);
loadMLines(dataStore);
loadMPoints(dataStore);
loadMPolygons(dataStore);
loadPoints(dataStore);
loadPolygons(dataStore);
}
void loadDeletes(DataStore dataStore) throws Exception {
SimpleFeatureType Deletes = buildFeatureType( "Deletes", cdf, 32615,
Arrays.asList( "id", "pointProperty"), String.class, Point.class );
FeatureWriter w = buildFeatureStore( Deletes, dataStore );
feature( w, "td0001", geometry( "POINT(500050 500050)" , 32615 ) );
feature( w, "td0002", geometry( "POINT(500050 500050)" , 32615 ) );
feature( w, "td0003", geometry( "POINT(500050 500050)" , 32615 ) );
w.close();
}
void loadFifteen(DataStore dataStore) throws Exception {
SimpleFeatureType Fifteen = buildFeatureType( "Fifteen", cdf, 32615,
Arrays.asList( "pointProperty" ), Point.class );
FeatureWriter w = buildFeatureStore( Fifteen, dataStore );
feature( w, geometry( "POINT(500050 500050)" , 32615 ) );
feature( w, geometry( "POINT(500050 500050)" , 32615 ) );
feature( w, geometry( "POINT(500050 500050)" , 32615 ) );
feature( w, geometry( "POINT(500050 500050)" , 32615 ) );
feature( w, geometry( "POINT(500050 500050)" , 32615 ) );
feature( w, geometry( "POINT(500050 500050)" , 32615 ) );
feature( w, geometry( "POINT(500050 500050)" , 32615 ) );
feature( w, geometry( "POINT(500050 500050)" , 32615 ) );
feature( w, geometry( "POINT(500050 500050)" , 32615 ) );
feature( w, geometry( "POINT(500050 500050)" , 32615 ) );
feature( w, geometry( "POINT(500050 500050)" , 32615 ) );
feature( w, geometry( "POINT(500050 500050)" , 32615 ) );
feature( w, geometry( "POINT(500050 500050)" , 32615 ) );
feature( w, geometry( "POINT(500050 500050)" , 32615 ) );
feature( w, geometry( "POINT(500050 500050)" , 32615 ) );
w.close();
}
void loadInserts(DataStore dataStore) throws Exception {
SimpleFeatureType Inserts = buildFeatureType( "Inserts", cdf, 32615,
Arrays.asList( "id", "pointProperty"), String.class, Point.class );
FeatureWriter w = buildFeatureStore( Inserts, dataStore );
w.close();
}
void loadLocks(DataStore dataStore) throws Exception {
SimpleFeatureType Locks = buildFeatureType( "Locks", cdf, 32615,
Arrays.asList( "id", "pointProperty"), String.class, Point.class );
FeatureWriter w = buildFeatureStore(Locks, dataStore);
feature( w, "lfla0001", geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfla0002", geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfla0003", geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfla0004", geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwlla0001", geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwlla0002", geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwlla0003", geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwlla0004", geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfbt0001", geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfbt0002", geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfbt0003", geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfbt0004", geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfbt0005", geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfbt0006", geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwlbt0001", geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwlbt0002", geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwlbt0003", geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwlbt0004", geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwlbt0005", geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwlbt0006", geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfe0001", geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfe0002",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfe0003",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfe0004",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwle0001",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwle0002",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwle0003",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwle0004",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfra0001",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfra0002",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfra0003",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfra0004",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfra0005",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfra0006",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfra0007",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfra0008",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfra0009",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfra0010",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwlra0001",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwlra0002",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwlra0003",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwlra0004",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwlra0005",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwlra0006",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwlra0007",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwlra0008",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwlra0009",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwlra0010",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfrs0001",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfrs0002",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfrs0003",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfrs0004",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfrs0005",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfrs0006",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfrs0007",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfrs0008",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfrs0009",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "lfrs0010",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwlrs0001",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwlrs0002",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwlrs0003",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwlrs0004",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwlrs0005",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwlrs0006",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwlrs0007",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwlrs0008",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwlrs0009",geometry("POINT(500050 500050)", 32615 ) );
feature( w, "gfwlrs0010",geometry("POINT(500050 500050)", 32615 ) );
w.close();
}
void loadNulls(DataStore dataStore) throws Exception {
SimpleFeatureType Nulls = buildFeatureType( "Nulls", cdf, 32615,
Arrays.asList( "description", "name", "integers", "dates", "pointProperty"),
String.class, String.class, Integer.class, Date.class, Point.class );
FeatureWriter w = buildFeatureStore(Nulls, dataStore);
feature( w, "nullFeature",null,null,null,null );
w.close();
}
void loadOther(DataStore dataStore) throws Exception {
SimpleFeatureType Other = buildFeatureType( "Other", cdf, 32615,
Arrays.asList( "description", "name", "pointProperty", "string1", "string2", "integers", "dates"),
Arrays.asList( "string1" ),
String.class, String.class, Point.class, String.class, String.class, Integer.class, Date.class );
FeatureWriter w = buildFeatureStore( Other, dataStore );
feature( w, "A Single Feature used to test returning of properties", "singleFeature",
geometry("POINT(500050 500050)",32615 ), "always", "sometimes",7, date( "2002-12-02" ) );
}
void loadSeven(DataStore dataStore) throws Exception {
SimpleFeatureType Seven = buildFeatureType( "Seven", cdf, 32615,
Arrays.asList( "pointProperty"), Point.class );
FeatureWriter w = buildFeatureStore(Seven, dataStore);
feature( w, geometry( "POINT(500050 500050)" , 32615 ) );
feature( w, geometry( "POINT(500050 500050)" , 32615 ) );
feature( w, geometry( "POINT(500050 500050)" , 32615 ) );
feature( w, geometry( "POINT(500050 500050)" , 32615 ) );
feature( w, geometry( "POINT(500050 500050)" , 32615 ) );
feature( w, geometry( "POINT(500050 500050)" , 32615 ) );
feature( w, geometry( "POINT(500050 500050)" , 32615 ) );
w.close();
}
void loadUpdates(DataStore dataStore) throws Exception {
SimpleFeatureType Updates = buildFeatureType( "Updates", cdf, 32615,
Arrays.asList( "id", "pointProperty"), String.class, Point.class );
FeatureWriter w = buildFeatureStore( Updates, dataStore );
feature( w, "tu0001", geometry("POINT(500050 500050)", 32615 ) );
feature( w, "tu0002", geometry("POINT(500050 500050)", 32615 ) );
feature( w, "tu0003", geometry("POINT(500050 500050)", 32615 ) );
feature( w, "tu0004", geometry("POINT(500050 500050)", 32615 ) );
w.close();
}
void loadLines(DataStore dataStore) throws Exception {
SimpleFeatureType Lines = buildFeatureType( "Lines", cgf, 32615,
Arrays.asList( "id", "lineStringProperty"), String.class, LineString.class );
FeatureWriter w = buildFeatureStore(Lines, dataStore);
feature(w, "t0001", geometry("LINESTRING(500125 500025,500175 500075)", 32615 ));
w.close();
}
void loadMLines(DataStore dataStore) throws Exception {
SimpleFeatureType MLines = buildFeatureType( "MLines", cgf, 32615,
Arrays.asList( "id", "multiLineStringProperty"), String.class, MultiLineString.class );
FeatureWriter w = buildFeatureStore(MLines, dataStore);
feature(w, "t0004", geometry("MULTILINESTRING((500425 500025,500475 500075),(500425 500075,500475 500025))",32615));
w.close();
}
void loadMPoints(DataStore dataStore) throws Exception {
SimpleFeatureType MPoints = buildFeatureType( "MPoints", cgf, 32615,
Arrays.asList( "id", "multiPointProperty"), String.class, MultiPoint.class );
FeatureWriter w = buildFeatureStore( MPoints, dataStore );
feature( w, "t0003", geometry("MULTIPOINT(500325 500025,500375 500075)",32615));
w.close();
}
void loadMPolygons(DataStore dataStore) throws Exception {
SimpleFeatureType MPolygons = buildFeatureType( "MPolygons", cgf, 32615,
Arrays.asList( "id", "multiPolygonProperty"), String.class, MultiPolygon.class );
FeatureWriter w = buildFeatureStore( MPolygons, dataStore );
feature( w, "t0005", geometry("MULTIPOLYGON(((500525 500025,500550 500050,500575 500025," +
"500525 500025)),((500525 500050,500525 500075,500550 500075,500550 500050,500525 500050)))",32615));
w.close();
}
void loadPoints(DataStore dataStore) throws Exception {
SimpleFeatureType Points = buildFeatureType( "Points", cgf, 32615,
Arrays.asList( "id", "pointProperty"), String.class, Point.class );
FeatureWriter w = buildFeatureStore(Points,dataStore);
feature( w, "t0000", geometry("POINT(500050 500050)",32615));
w.close();
}
void loadPolygons(DataStore dataStore) throws Exception {
SimpleFeatureType Polygons = buildFeatureType( "Polygons", cgf, 32615,
Arrays.asList( "id", "polygonProperty"), String.class, Polygon.class );
FeatureWriter w = buildFeatureStore(Polygons,dataStore);
feature( w, "t0002", geometry("POLYGON((500225 500025,500225 500075,500275 500050,500275 500025,500225 500025))",32615));
w.close();
}
String sf = "http://cite.opengeospatial.org/gmlsf";
public void loadWFS11() throws Exception {
loadPrimitiveGeoFeature(dataStore);
loadAggregateGeoFeature(dataStore);
//loadEntit�G�n�rique(dataStore);
loadEntiteGenerique(dataStore);
}
void loadPrimitiveGeoFeature(DataStore dataStore) throws Exception {
SimpleFeatureType PrimitiveGeoFeature = buildFeatureType( "PrimitiveGeoFeature", sf, 4326,
Arrays.asList( "description", "name", "surfaceProperty", "pointProperty", "curveProperty",
"intProperty", "uriProperty", "measurand", "dateTimeProperty", "dateProperty", "decimalProperty"),
Arrays.asList( "intProperty", "measurand", "decimalProperty" ),
String.class, String.class, Polygon.class, Point.class, LineString.class, Integer.class,
String.class, Double.class, Date.class, Date.class, Double.class );
FeatureWriter w = buildFeatureStore(PrimitiveGeoFeature,dataStore);
feature( w, "description-f001", "name-f001", null, geometry("POINT(2.00342 39.73245)", 4326),
null, 155, "http://www.opengeospatial.org/", 12765.0, null, date( "2006-10-25" ), 5.03 );
feature( w, "description-f002", "name-f002", null, geometry("POINT(0.22601 59.41276)", 4326),
null, 154, "http://www.opengeospatial.org/", 12769.0, null, date( "2006-10-23" ), 4.02 );
feature( w, "description-f003", "name-f003", null, null, geometry("LINESTRING(9.799 46.074,10.466 46.652,11.021 47.114)", 4326),
180, null, 672.1, null, date( "2006-09-01" ), 12.92 );
feature( w, "description-f008", "name-f008", geometry("POLYGON((30.899 45.174,30.466 45.652,30.466 45.891,30.899 45.174))", 4326),null,
null, 300, null, 783.5, datetime("2006-06-28 07:08:00 +0200"), date( "2006-12-12" ), 18.92 );
feature( w, null, "name-f015", null, geometry("POINT(-10.52 34.94)", 4326),
null, -900, null, 2.4, null, null, 7.9 );
w.close();
}
void loadAggregateGeoFeature(DataStore dataStore) throws Exception {
SimpleFeatureType AggregateGeoFeature = buildFeatureType( "AggregateGeoFeature", sf, 4326,
Arrays.asList( "description", "name", "multiPointProperty", "multiCurveProperty",
"multiSurfaceProperty", "doubleProperty", "intRangeProperty", "strProperty", "featureCode"),
Arrays.asList( "doubleProperty", "strProperty", "featureCode" ),
String.class, String.class, MultiPoint.class, MultiLineString.class, MultiPolygon.class,
Double.class, String.class, String.class, String.class );
FeatureWriter w = buildFeatureStore(AggregateGeoFeature,dataStore);
feature( w, "description-f005","name-f005", geometry("MULTIPOINT(29.86 70.83,31.08 68.87,32.19 71.96)",4326),
null,null,2012.78,null,"Ma quande lingues coalesce, li grammatica del resultant lingue es plu simplic e " +
"regulari quam ti del coalescent lingues. Li nov lingua franca va esser plu simplic e regulari quam li " +
"existent Europan lingues.","BK030");
feature( w, "description-f009","name-f009",null, geometry("MULTILINESTRING((-5.899 55.174," +
"-5.466 55.652,-5.899 55.891,-5.899 58.174,-5.466 58.652,-5.899 58.891),(-5.188 53.265," +
"-4.775 54.354,-4.288 52.702,-4.107 53.611,-4.010 55.823))",4326),null,20.01,null,
"Ma quande lingues coalesce, li grammatica del resultant.","GB007");
feature( w, "description-f010","name-f010",null,null,geometry("MULTIPOLYGON(((20 50,19 54,20 55," +
"30 60,28 52,27 51,29 49,27 47,20 50),(25 55,25.2 56,25.1 56,25 55)),((20.0 35.5,24.0 35.0," +
"28.0 35.0,27.5 39.0,22.0 37.0,20.0 35.5),(26.0 36.0,25.0 37.0,27.0 36.8,26.0 36.0)))",4326),
24510,null,"Ma quande lingues coalesce, li grammatica del resultant lingue es plu simplic e " +
"regulari quam ti del coalescent lingues. Li nov lingua franca va esser plu simplic e regulari " +
"quam li existent Europan lingues.","AK020");
feature( w, null,"name-f016",null,null,geometry("MULTIPOLYGON(((6.0 57.5, 8.0 57.5, 8.0 60.0, 9.0 62.5, 5.0 62.5,6.0 60.0,6.0 57.5)," +
"(6.5 58.0,6.5 59.0,7.0 59.0,6.5 58.0)))",4326),-182.9,null,"In rhoncus nisl sit amet sem.","EE010");
w.close();
}
void loadEntiteGenerique(DataStore dataStore) throws Exception {
//void loadEntit�G�n�rique(DataStore dataStore) throws Exception {
SimpleFeatureType /*Entit�G�n�rique*/EntiteGenerique = buildFeatureType( "Entit�G�n�rique", sf, 4326,
Arrays.asList( "description", "name", "attribut.G�om�trie", "boolProperty", "str4Property", "featureRef"),
Arrays.asList( "attribut.G�om�trie", "boolProperty", "str4Property"),
String.class, String.class, Geometry.class, Boolean.class, String.class, String.class );
FeatureWriter w = buildFeatureStore(EntiteGenerique, dataStore);
feature( w, "description-f004","name-f004", geometry("POLYGON((0 60.5,0 64,6.25 64,6.25 60.5,0 60.5)," +
"(2 61.5,2 62.5,4 62,2 61.5))",4326),true,"abc3","name-f003");
feature( w, "description-f007","name-f007", geometry("POLYGON((15 35,16 40,20 39,22.5 37,18 36,15 35)," +
"(17.5 37.1,17.6 37.2,17.7 37.3,17.8 37.4,17.9 37.5,17.9 37,17.5 37.1))",4326),false,"def4",null);
feature( w, "description-f017", "name-f017",geometry("LINESTRING(4.899 50.174,5.466 52.652,6.899 53.891," +
"7.780 54.382,8.879 54.982)",4326),false,"qrst","name-f015");
w.close();
}
FeatureWriter buildFeatureStore( SimpleFeatureType schema, DataStore dataStore ) throws Exception {
LOGGER.info( "Loading " + schema.getTypeName() );
try {
dataStore.createSchema(schema);
}
catch( Exception e ) {
//could already exist, do a quick query to check
try {
if ( dataStore.getSchema( schema.getName() ) == null ) {
throw e;
}
}
catch( Exception e2 ) {
throw e;
}
//delete all features
FeatureStore store = (FeatureStore) dataStore.getFeatureSource( schema.getName() );
store.removeFeatures(Filter.INCLUDE);
}
return dataStore.getFeatureWriterAppend( schema.getTypeName(), Transaction.AUTO_COMMIT );
}
void feature( FeatureWriter w, Object... values ) throws Exception {
w.hasNext();
SimpleFeature f = (SimpleFeature) w.next();
for ( int i = 0; i < values.length; i++ ) {
f.setAttribute(i, values[i] );
}
w.write();
}
Geometry geometry( String wkt, int srid ) throws Exception {
Geometry g = new WKTReader().read( wkt );
g.setUserData( CRS.decode( "EPSG:" + srid ) );
return g;
}
Date date( String d ) throws ParseException {
return new SimpleDateFormat( "yyyy-MM-dd Z").parse(d + " +0000" );
}
Date datetime( String d ) throws ParseException {
return new SimpleDateFormat( "yyyy-MM-dd hh:mm:ss Z").parse(d);
}
}