package org.jabox.applicationcontext; import org.apache.wicket.persistence.provider.ConfigXstreamDao; import org.apache.wicket.persistence.provider.ContainerXstreamDao; import org.apache.wicket.persistence.provider.ServerXstreamDao; import org.apache.wicket.persistence.provider.UserXstreamDao; import org.jabox.cis.ejenkins.EJenkinsConnectorConfig; import org.jabox.its.eredmine.ERedmineRepositoryConfig; import org.jabox.model.Container; import org.jabox.model.DefaultConfiguration; import org.jabox.model.Server; import org.jabox.model.User; import org.jabox.mrm.nexus.NexusConnectorConfig; import org.jabox.sas.sonar.SonarConnectorConfig; import org.jabox.scm.esvn.ESVNConnectorConfig; import org.jabox.utils.LocalHostName; import org.mindrot.jbcrypt.BCrypt; public class InitializeDatabase { private final DefaultConfiguration dc = ConfigXstreamDao.getConfig(); /** * check if database is already populated, if not, populate */ public void init() { if (UserXstreamDao.getUsers().size() == 0) { createAdminUser(); createSubversionServer(); createJenkinsServer(); createRedmineServer(); createNexusServer(); createSonarServer(); createTomcatContainer(); ConfigXstreamDao.persist(dc); } } private void createTomcatContainer() { Container container = new Container(); container.setName("Default"); container.setPort("9080"); container.setRmiPort("9081"); container.setAjpPort("9082"); ContainerXstreamDao.persist(container); } private void createSonarServer() { SonarConnectorConfig config = new SonarConnectorConfig(); config.setServer(new Server()); config.getServer().setName("Sonar"); config.getServer().setDeployerConfig(config); config.getServer().setUrl( "http://" + LocalHostName.getLocalHostname() + ":9080/sonar/"); ServerXstreamDao.persist(config); dc.switchDefault(config); } private void createNexusServer() { NexusConnectorConfig config = new NexusConnectorConfig(); config.setServer(new Server()); config.getServer().setName("Nexus"); config.setUsername("admin"); config.setPassword("admin123"); config.getServer().setDeployerConfig(config); config.getServer().setUrl( "http://" + LocalHostName.getLocalHostname() + ":9080/nexus/"); ServerXstreamDao.persist(config); dc.switchDefault(config); } private void createJenkinsServer() { EJenkinsConnectorConfig config = new EJenkinsConnectorConfig(); config.setServer(new Server()); config.getServer().setName("Jenkins"); config.getServer().setDeployerConfig(config); ServerXstreamDao.persist(config); dc.switchDefault(config); } private void createRedmineServer() { ERedmineRepositoryConfig config = new ERedmineRepositoryConfig(); config.setUsername("admin"); config.setPassword("admin"); config.setServer(new Server()); config.getServer().setName("Redmine"); config.getServer().setDeployerConfig(config); config.setAddRepositoryConfiguration(true); ServerXstreamDao.persist(config); dc.switchDefault(config); } private void createSubversionServer() { ESVNConnectorConfig config = new ESVNConnectorConfig(); config.setServer(new Server()); config.getServer().setName("Subversion"); config.getServer().setDeployerConfig(config); ServerXstreamDao.persist(config); dc.switchDefault(config); } private void createAdminUser() { User user = new User(); user.setLogin("admin"); String hashed = BCrypt.hashpw("admin", BCrypt.gensalt()); user.setPasswordHash(hashed); UserXstreamDao.persist(user); } }