Java tutorial
/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 2002-2008, Open Source Geospatial Foundation (OSGeo) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. */ package org.geotools.data.h2; import java.util.Collections; import java.util.HashMap; import java.util.Map; import javax.sql.DataSource; import junit.framework.TestCase; import org.apache.commons.dbcp.BasicDataSource; import org.geotools.data.DataStore; import org.geotools.data.jdbc.datasource.ManageableDataSource; import org.geotools.jdbc.JDBCDataStore; import org.geotools.jdbc.JDBCDataStoreFactory; import org.h2.tools.Server; /** * * * @source $URL$ */ public class H2DataStoreFactoryTest extends TestCase { H2DataStoreFactory factory; HashMap params; protected void setUp() throws Exception { factory = new H2DataStoreFactory(); params = new HashMap(); params.put(JDBCDataStoreFactory.NAMESPACE.key, "http://www.geotools.org/test"); params.put(JDBCDataStoreFactory.DATABASE.key, "geotools"); params.put(JDBCDataStoreFactory.DBTYPE.key, "h2"); } public void testCanProcess() throws Exception { assertFalse(factory.canProcess(Collections.EMPTY_MAP)); assertTrue(factory.canProcess(params)); } public void testCreateDataStore() throws Exception { JDBCDataStore ds = factory.createDataStore(params); assertNotNull(ds); assertTrue(ds.getDataSource() instanceof ManageableDataSource); } public void testCreateDataStoreMVCC() throws Exception { Map clonedParams = new HashMap(params); clonedParams.put(H2DataStoreFactory.MVCC.key, true); JDBCDataStore ds = factory.createDataStore(clonedParams); assertNotNull(ds); final DataSource source = ds.getDataSource(); assertNotNull(source); final DataSource wrapped = source.unwrap(DataSource.class); assertNotNull(wrapped); if (wrapped instanceof BasicDataSource) { final BasicDataSource basicSource = (BasicDataSource) wrapped; final String url = basicSource.getUrl(); assertTrue(url.contains("MVCC=true")); } } public void testTCP() throws Exception { HashMap params = new HashMap(); params.put(H2DataStoreFactory.HOST.key, "localhost"); params.put(H2DataStoreFactory.DATABASE.key, "geotools"); params.put(H2DataStoreFactory.USER.key, "geotools"); params.put(H2DataStoreFactory.PASSWD.key, "geotools"); DataStore ds = factory.createDataStore(params); try { ds.getTypeNames(); fail("Should not have made a connection."); } catch (Exception ok) { } Server server = Server.createTcpServer(new String[] { "-baseDir", "target" }); server.start(); try { while (!server.isRunning(false)) { Thread.sleep(100); } ds = factory.createDataStore(params); ds.getTypeNames(); } finally { server.shutdown(); } } }