Merge pull request #289 from Athou/liquibase

initial liquibase setup
This commit is contained in:
Athou
2013-06-12 03:26:29 -07:00
7 changed files with 426 additions and 5 deletions

View File

@@ -0,0 +1,64 @@
package com.commafeed.backend;
import java.sql.Connection;
import java.util.ResourceBundle;
import javax.ejb.Stateless;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import liquibase.Liquibase;
import liquibase.database.Database;
import liquibase.database.DatabaseFactory;
import liquibase.database.jvm.JdbcConnection;
import liquibase.resource.ClassLoaderResourceAccessor;
import liquibase.resource.ResourceAccessor;
@Stateless
@TransactionManagement(TransactionManagementType.BEAN)
public class DatabaseUpdater {
public void update() {
String datasourceName = ResourceBundle.getBundle("application")
.getString("datasource");
try {
Context context = null;
Connection connection = null;
try {
Thread currentThread = Thread.currentThread();
ClassLoader classLoader = currentThread.getContextClassLoader();
ResourceAccessor accessor = new ClassLoaderResourceAccessor(
classLoader);
context = new InitialContext();
DataSource dataSource = (DataSource) context
.lookup(datasourceName);
connection = dataSource.getConnection();
Database database = DatabaseFactory.getInstance()
.findCorrectDatabaseImplementation(
new JdbcConnection(connection));
Liquibase liq = new Liquibase(
"changelogs/db.changelog-master.xml", accessor,
database);
liq.update("prod");
} finally {
if (context != null) {
context.close();
}
if (connection != null) {
connection.close();
}
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}

View File

@@ -43,6 +43,9 @@ public class StartupBean {
public static final String USERNAME_ADMIN = "admin";
public static final String USERNAME_DEMO = "demo";
@Inject
DatabaseUpdater databaseUpdater;
@Inject
FeedDAO feedDAO;
@@ -74,6 +77,8 @@ public class StartupBean {
private void init() {
startupTime = Calendar.getInstance().getTimeInMillis();
databaseUpdater.update();
if (userDAO.getCount() == 0) {
initialData();
}
@@ -148,5 +153,4 @@ public class StartupBean {
}
}
}
}