package org.geotools.data.directory;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.util.Arrays;
import java.util.List;
import org.geotools.data.DataStore;
import org.geotools.data.FeatureSource;
import org.geotools.data.property.PropertyDataStore;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.junit.Test;
import org.opengis.feature.simple.SimpleFeatureType;
import com.vividsolutions.jts.geom.Polygon;
/**
* This one checks proper wrapping and some api methods.
* For a test of proper listing and updates see the DataStoreCache test
* @author Andrea Aime - OpenGeo
*
*
* @source $URL$
*/
public class DirectoryDataStoreTest extends TestSupport {
private static final String DESTDIR = "shapes";
@Test
public void testTypeNames() throws Exception {
copyFile("Bridges.properties", DESTDIR);
copyFile("Buildings.properties", DESTDIR);
copyShapefiles("shapes/archsites.shp");
File f = copyShapefiles("shapes/bugsites.shp");
tempDir = f.getParentFile();
DataStore store = new DirectoryDataStore(tempDir, NSURI);
List<String> typeNames = Arrays.asList(store.getTypeNames());
assertEquals(4, typeNames.size());
assertTrue(typeNames.contains("archsites"));
assertTrue(typeNames.contains("bugsites"));
assertTrue(typeNames.contains("Bridges"));
assertTrue(typeNames.contains("Buildings"));
}
@Test
public void testSchema() throws Exception {
File prop = copyFile("Buildings.properties", DESTDIR);
tempDir = prop.getParentFile();
DataStore pds = new PropertyDataStore(tempDir, NSURI.toString());
DataStore dds = new DirectoryDataStore(tempDir, NSURI);
assertEquals(1, dds.getTypeNames().length);
assertEquals(pds.getSchema("Buildings"), dds.getSchema("Buildings"));
pds.dispose();
dds.dispose();
}
@Test
public void testFeatureSource() throws Exception {
File prop = copyFile("Buildings.properties", DESTDIR);
tempDir = prop.getParentFile();
DataStore dds = new DirectoryDataStore(tempDir, NSURI);
FeatureSource fs = dds.getFeatureSource("Buildings");
assertNotNull(fs);
assertSame(dds, fs.getDataStore());
}
@Test
public void testCreateSchema() throws Exception {
File dir = File.createTempFile("foo", "shp", new File("target"));
dir.delete();
dir.mkdir();
DataStore ds = new DirectoryDataStore(dir, NSURI);
assertEquals(0, ds.getTypeNames().length);
SimpleFeatureTypeBuilder tb = new SimpleFeatureTypeBuilder();
tb.setName("foo");
tb.add("geom", Polygon.class);
tb.add("bar", Integer.class);
ds.createSchema(tb.buildFeatureType());
SimpleFeatureType ft = ds.getSchema("foo");
assertNotNull(ft);
//clean up
ds.dispose();
for (File f : dir.listFiles()) {
f.delete();
}
dir.delete();
}
}