// This software is released into the Public Domain. See copying.txt for details. package org.openstreetmap.osmosis.extract.apidb.v0_6; import java.io.File; import org.openstreetmap.osmosis.apidb.common.DatabaseContext; import org.openstreetmap.osmosis.core.Osmosis; import org.openstreetmap.osmosis.core.database.AuthenticationPropertiesLoader; import org.openstreetmap.osmosis.core.database.DatabaseConstants; import org.openstreetmap.osmosis.core.database.DatabaseLoginCredentials; import org.openstreetmap.osmosis.testutil.TestDataUtilities; /** * Contains re-usable functionality for manipulating the database during tests. * * @author Brett Henderson */ public class DatabaseUtilities { private static final String AUTHFILE = "v0_6/apidb-authfile.txt"; private static final String AUTHFILE_PROPERTY = "db.apidb.authfile"; private TestDataUtilities dataUtils; /** * Creates a new instance. * * @param dataUtils * The test data manager. */ public DatabaseUtilities(TestDataUtilities dataUtils) { this.dataUtils = dataUtils; } /** * Creates a new database context pointing at the test database. * * @return A fully configured database context. */ public DatabaseContext createDatabaseContext() { AuthenticationPropertiesLoader credentialsLoader; DatabaseLoginCredentials credentials; credentials = new DatabaseLoginCredentials(DatabaseConstants.TASK_DEFAULT_HOST, DatabaseConstants.TASK_DEFAULT_DATABASE, DatabaseConstants.TASK_DEFAULT_USER, DatabaseConstants.TASK_DEFAULT_PASSWORD, DatabaseConstants.TASK_DEFAULT_FORCE_UTF8, DatabaseConstants.TASK_DEFAULT_PROFILE_SQL, DatabaseConstants.TASK_DEFAULT_DB_TYPE); credentialsLoader = new AuthenticationPropertiesLoader(getAuthorizationFile()); credentialsLoader.updateLoginCredentials(credentials); return new DatabaseContext(credentials); } /** * Removes all data from the database. */ public void truncateDatabase() { // Remove all existing data from the database. Osmosis.run(new String[] { "-q", "--truncate-apidb-0.6", "authFile=" + getAuthorizationFile().getPath(), "allowIncorrectSchemaVersion=true" }); } /** * Returns the location of the database authorization file. * * @return The authorization file. */ public File getAuthorizationFile() { return dataUtils.createDataFile(AUTHFILE_PROPERTY, AUTHFILE); } }