package org.geotools.data.georest;
import java.io.IOException;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import junit.framework.Assert;
import junit.framework.TestCase;
import org.geotools.data.DataStore;
import org.geotools.data.FeatureReader;
import org.geotools.data.Query;
import org.geotools.data.Transaction;
import org.geotools.data.georest.GeoRestDataStoreFactory;
import org.geotools.data.georest.GeoRestFeatureSource;
import org.geotools.factory.CommonFactoryFinder;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
import org.opengis.filter.Filter;
import org.opengis.filter.FilterFactory2;
import org.opengis.filter.spatial.BBOX;
public class DataStoreTest extends TestCase {
private static final String URL = "http://localhost:5000/";
private static final String FEATURESOURCE = "countries";
private static final FilterFactory2 FF = CommonFactoryFinder.getFilterFactory2(null);
public void testFactoryCanProcess() {
GeoRestDataStoreFactory factory = new GeoRestDataStoreFactory();
Assert.assertTrue(factory.canProcess(createParams()));
}
public void testCreateDataStore() throws IOException {
GeoRestDataStoreFactory factory = new GeoRestDataStoreFactory();
DataStore ds = factory.createDataStore(createParams());
Assert.assertNotNull(ds);
}
public void testGetFeatureSource() throws IOException {
GeoRestDataStoreFactory factory = new GeoRestDataStoreFactory();
DataStore ds = factory.createDataStore(createParams());
GeoRestFeatureSource source = (GeoRestFeatureSource) ds.getFeatureSource(FEATURESOURCE);
Assert.assertNotNull(source);
}
public void testGetSchema() throws IOException {
GeoRestDataStoreFactory factory = new GeoRestDataStoreFactory();
DataStore ds = factory.createDataStore(createParams());
GeoRestFeatureSource source = (GeoRestFeatureSource) ds.getFeatureSource(FEATURESOURCE);
SimpleFeatureType type = source.getSchema();
Assert.assertNotNull(type);
Assert.assertTrue(type.getAttributeCount() > 0);
}
public void testCountFeatures() throws IOException {
GeoRestDataStoreFactory factory = new GeoRestDataStoreFactory();
DataStore ds = factory.createDataStore(createParams());
GeoRestFeatureSource source = (GeoRestFeatureSource) ds.getFeatureSource(FEATURESOURCE);
int count = source.getCount(new Query(FEATURESOURCE, Filter.INCLUDE));
Assert.assertTrue(count > 0);
BBOX bbox = FF.bbox("geometry", 0, 0, 10, 10, "EPSG:4326");
count = source.getCount(new Query(FEATURESOURCE, bbox, 5, new String[] {}, ""));
Assert.assertTrue(count == 5);
}
public void testGetFeatureReader() throws Exception {
GeoRestDataStoreFactory factory = new GeoRestDataStoreFactory();
DataStore ds = factory.createDataStore(createParams());
FeatureReader<SimpleFeatureType, SimpleFeature> r = ds.getFeatureReader(new Query(
FEATURESOURCE), Transaction.AUTO_COMMIT);
assertNotNull(r);
assertTrue(r.hasNext());
}
// Private methods:
private Map<String, Serializable> createParams() {
Map<String, Serializable> params = new HashMap<String, Serializable>();
// URL url = DataStoreTest.class.getResource("/");
params.put(GeoRestDataStoreFactory.PARAM_URL, URL);
params.put(GeoRestDataStoreFactory.PARAM_LAYERS, "countries");
return params;
}
}