/* (c) 2014 Open Source Geospatial Foundation - all rights reserved * (c) 2001 - 2013 OpenPlans * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.importer; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import java.io.File; import java.sql.Connection; import java.sql.Statement; import org.geoserver.catalog.Catalog; import org.geoserver.catalog.DataStoreInfo; import org.geotools.data.jdbc.JDBCUtils; import org.junit.Test; public abstract class ImporterDbTestBase extends ImporterDbTestSupport { @Override protected void doSetUpInternal() throws Exception { Connection cx = getConnection(); try { Statement st = cx.createStatement(); try { dropTable("widgets", st); dropTable("archsites", st); dropTable("bugsites", st); createWidgetsTable(st); } finally { JDBCUtils.close(st); } } finally { JDBCUtils.close(cx, null, null); } } protected String tableName(String name) { return name; } protected abstract void createWidgetsTable(Statement st) throws Exception; protected void dropTable(String tableName, Statement st) throws Exception { runSafe("DROP TABLE " + tableName(tableName), st); } @Test public void testDirectImport() throws Exception { Database db = new Database(getConnectionParams()); ImportContext context = importer.createContext(db); assertEquals(ImportContext.State.PENDING, context.getState()); assertEquals(1, context.getTasks().size()); importer.run(context); runChecks("gs:" + tableName("widgets")); } @Test public void testIndirectToShapefile() throws Exception { File dir = tmpDir(); unpack("shape/archsites_epsg_prj.zip", dir); unpack("shape/bugsites_esri_prj.tar.gz", dir); ImportContext context = importer.createContext(new Directory(dir)); importer.run(context); runChecks("gs:archsites"); runChecks("gs:bugsites"); DataStoreInfo store = (DataStoreInfo) context.getTasks().get(0).getStore(); assertNotNull(store); assertEquals(2, getCatalog().getFeatureTypesByDataStore(store).size()); context = importer.createContext(new Database(getConnectionParams()), store); assertEquals(1, context.getTasks().size()); ImportTask task = context.getTasks().get(0); assertEquals(ImportTask.State.READY, task.getState()); importer.run(context); assertEquals(ImportContext.State.COMPLETE, context.getState()); assertEquals(3, getCatalog().getFeatureTypesByDataStore(store).size()); runChecks("gs:" + tableName("widgets")); } @Test public void testIndirectToDb() throws Exception { Catalog cat = getCatalog(); DataStoreInfo ds = cat.getFactory().createDataStore(); ds.setName("oracle"); ds.setWorkspace(cat.getDefaultWorkspace()); ds.setEnabled(true); ds.getConnectionParameters().putAll(getConnectionParams()); cat.add(ds); assertEquals(0, cat.getFeatureTypesByDataStore(ds).size()); File dir = tmpDir(); unpack("shape/archsites_epsg_prj.zip", dir); unpack("shape/bugsites_esri_prj.tar.gz", dir); ImportContext context = importer.createContext(new Directory(dir), ds); assertEquals(2, context.getTasks().size()); assertEquals(ImportTask.State.READY, context.getTasks().get(0).getState()); assertEquals(ImportTask.State.READY, context.getTasks().get(1).getState()); importer.run(context); assertEquals(ImportContext.State.COMPLETE, context.getState()); assertEquals(2, cat.getFeatureTypesByDataStore(ds).size()); runChecks("gs:" + tableName("archsites")); runChecks("gs:" + tableName("bugsites")); } }