Skip to content

Instantly share code, notes, and snippets.

@mgonto
Created April 4, 2013 20:19
Show Gist options
  • Save mgonto/5314014 to your computer and use it in GitHub Desktop.
Save mgonto/5314014 to your computer and use it in GitHub Desktop.
package drivers;
import java.io.File;
import java.sql.SQLException;
import java.util.List;
import javax.persistence.Entity;
import org.hibernate.dialect.Dialect;
import org.hibernate.ejb.Ejb3Configuration;
import org.hibernate.tool.hbm2ddl.DatabaseMetadata;
import play.Play;
import play.db.DB;
import play.db.DBPlugin;
/**
* Creates Schema updates
*
*
* @author Gonto
* @since Dec 4, 2012
*/
public final class PrintSchemaUpdate {
/**
* Creates the PrintSchemaUpdate.
*/
private PrintSchemaUpdate() {
}
/**
* Generates Schema Update SQL script
*
* @param args
* @throws SQLException
* @throws Exception
*/
public static void main(final String[] args) throws Exception {
String id = "schema";
if (args.length > 0) {
id = args[0];
}
// Starting up Play!
Play.init(new File("."), id);
// Getting DB configuration from Play!'s application configuration
final String db = Play.configuration.getProperty("db");
final String dialect = Play.configuration.getProperty("jpa.dialect");
final String ddl = Play.configuration.getProperty("jpa.ddl");
System.out.println("Connection against " + db);
// Setting hibernate configuration
final Ejb3Configuration configuration = new Ejb3Configuration();
configuration.setProperty("hibernate.dialect", dialect);
configuration.setProperty("hibernate.ddl", ddl);
configuration.setProperty("hibernate.db", db);
// Getting persisten classes
final List<Class> classes = Play.classloader.getAnnotatedClasses(Entity.class);
for (final Class clazz : classes) {
configuration.addAnnotatedClass(clazz);
}
configuration.buildEntityManagerFactory();
final DBPlugin plugin = new DBPlugin();
plugin.onApplicationStart();
Dialect dialectInstance = (Dialect) Class.forName(dialect).newInstance();
final DatabaseMetadata metadata = new DatabaseMetadata(DB.getConnection(), dialectInstance);
final String[] sa = configuration.getHibernateConfiguration().generateSchemaUpdateScript(
dialectInstance, metadata);
System.out.println("Schema update scripts:");
for (final String s : sa) {
System.out.println(s + ";");
}
System.exit(0);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment