/** * Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.integration.regression; import static com.opengamma.integration.regression.PropertiesUtils.createProperties; import java.io.IOException; import java.util.Objects; import java.util.Properties; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.opengamma.util.db.tool.DbTool; /** * */ public class EmptyDatabaseCreator { private static final String s_managerInclude = "MANAGER.INCLUDE"; private static final Logger s_logger = LoggerFactory.getLogger(EmptyDatabaseCreator.class); /** Shared database URL. */ public static final String KEY_SHARED_URL = "db.standard.url"; /** Shared database user name. */ public static final String KEY_SHARED_USER_NAME = "db.standard.username"; /** Shared database password. */ public static final String KEY_SHARED_PASSWORD = "db.standard.password"; /** Temporary user database URL. */ public static final String KEY_USERFINANCIAL_URL = "db.userfinancial.url"; /** Temporary user database user name. */ public static final String KEY_USERFINANCIAL_USER_NAME = "db.userfinancial.username"; /** Temporary user database password. */ public static final String KEY_USERFINANCIAL_PASSWORD = "db.userfinancial.password"; /** Catalog. */ private static final String CATALOG = "og-financial"; public static void main(String[] args) throws IOException { if (args.length == 0) { throw new IllegalArgumentException("Argument required specifying configuration file"); } EmptyDatabaseCreator.createDatabases(createProperties(args[0])); } public static void createForConfig(String configFile) { Properties allProperties = createProperties(configFile); //loosely adds support for includes: for (Properties lastProperties = allProperties; lastProperties.containsKey(s_managerInclude); ) { Properties properties = createProperties(lastProperties.getProperty(s_managerInclude)); allProperties.putAll(properties); lastProperties = properties; }; createDatabases(allProperties); } public static void createDatabases(Properties props) { // create main database s_logger.info("Creating main database using properties {}", props); DbTool dbTool = new DbTool(); dbTool.setJdbcUrl(Objects.requireNonNull(props.getProperty(KEY_SHARED_URL))); dbTool.setUser(props.getProperty(KEY_SHARED_USER_NAME, "")); dbTool.setPassword(props.getProperty(KEY_SHARED_PASSWORD, "")); dbTool.setCatalog(CATALOG); // ignored, as it is parsed from the url dbTool.setCreate(true); dbTool.setDrop(true); dbTool.setCreateTables(true); dbTool.execute(); // create user database s_logger.info("Creating user database using properties {}", props); DbTool dbToolUser = new DbTool(); dbToolUser.setJdbcUrl(Objects.requireNonNull(props.getProperty(KEY_USERFINANCIAL_URL))); dbToolUser.setUser(props.getProperty(KEY_USERFINANCIAL_USER_NAME, "")); dbToolUser.setPassword(props.getProperty(KEY_USERFINANCIAL_PASSWORD, "")); dbToolUser.setCatalog(CATALOG); // ignored, as it is parsed from the url dbToolUser.setCreate(true); dbToolUser.setDrop(true); dbToolUser.setCreateTables(true); dbToolUser.execute(); } }