diff --git a/.gitignore b/.gitignore index 4a42095..90662e1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,13 @@ +# Ignore all dotfiles... +.* +# except for .gitignore +!.gitignore + *ipr *iws *iml build.properties lib/play-db.jar + +eclipse +dist \ No newline at end of file diff --git a/conf/dependencies.yml b/conf/dependencies.yml new file mode 100644 index 0000000..fdc0704 --- /dev/null +++ b/conf/dependencies.yml @@ -0,0 +1,4 @@ +self: play -> db 1.1.2 + +require: + - play \ No newline at end of file diff --git a/lib/hibernate3.jar b/lib/hibernate3.jar deleted file mode 100644 index 3cc99f7..0000000 Binary files a/lib/hibernate3.jar and /dev/null differ diff --git a/src/play/modules/db/Exporter.java b/src/play/modules/db/Exporter.java index 8411968..22a666c 100644 --- a/src/play/modules/db/Exporter.java +++ b/src/play/modules/db/Exporter.java @@ -21,27 +21,40 @@ */ package play.modules.db; -import org.hibernate.annotations.common.util.ReflectHelper; -import org.hibernate.cfg.AnnotationConfiguration; -import org.hibernate.cfg.NamingStrategy; -import org.hibernate.tool.hbm2ddl.SchemaExport; -import play.Play; - -import javax.persistence.Entity; import java.io.File; import java.io.FileInputStream; import java.util.List; import java.util.Properties; -public class Exporter { +import javax.persistence.Entity; + +import org.hibernate.annotations.common.util.ReflectHelper; +import org.hibernate.cfg.AvailableSettings; +import org.hibernate.cfg.Configuration; +import org.hibernate.cfg.Environment; +import org.hibernate.cfg.NamingStrategy; +import org.hibernate.internal.util.config.ConfigurationHelper; +import org.hibernate.service.ServiceRegistryBuilder; +import org.hibernate.service.internal.StandardServiceRegistryImpl; +import org.hibernate.tool.hbm2ddl.ImportSqlCommandExtractor; +import org.hibernate.tool.hbm2ddl.SchemaExport; +import play.Play; + +public class Exporter { + + private static StandardServiceRegistryImpl createServiceRegistry(Properties properties) { + Environment.verifyProperties( properties ); + ConfigurationHelper.resolvePlaceHolders( properties ); + return (StandardServiceRegistryImpl) new ServiceRegistryBuilder().applySettings( properties ).buildServiceRegistry(); + } public static void main(String[] args) throws Exception { File root = new File(System.getProperty("application.path")); Play.init(root, System.getProperty("play.id", "")); List entities = Play.classloader.getAnnotatedClasses(Entity.class); - AnnotationConfiguration cfg = new AnnotationConfiguration(); + Configuration cfg = new Configuration(); cfg.setProperty("hibernate.hbm2ddl.auto", "create"); for (Class _class : entities) { cfg.addAnnotatedClass(_class); @@ -119,17 +132,25 @@ public static void main(String[] args) throws Exception { props.load(new FileInputStream(propFile)); cfg.setProperties(props); } - - SchemaExport se = new SchemaExport(cfg) - .setHaltOnError(halt) - .setOutputFile(outFile) - .setImportFile(importFile) - .setDelimiter(delim); - if (format) { - se.setFormat(true); - } - se.execute(script, export, drop, create); + + if (importFile != null) { + cfg.setProperty(AvailableSettings.HBM2DDL_IMPORT_FILES, importFile); + } + + StandardServiceRegistryImpl serviceRegistry = createServiceRegistry(cfg.getProperties()); + try { + SchemaExport se = new SchemaExport(cfg) + .setHaltOnError(halt) + .setOutputFile(outFile) + .setDelimiter(delim) + .setImportSqlCommandExtractor(serviceRegistry.getService(ImportSqlCommandExtractor.class)); + if (format) { + se.setFormat(true); + } + se.execute(script, export, drop, create); + } + finally { + serviceRegistry.destroy(); + } } - - }