Created
April 4, 2013 20:19
-
-
Save mgonto/5314014 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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