Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Ignore all dotfiles...
.*
# except for .gitignore
!.gitignore

*ipr
*iws
*iml
build.properties
lib/play-db.jar

eclipse
dist
4 changes: 4 additions & 0 deletions conf/dependencies.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
self: play -> db 1.1.2

require:
- play
Binary file removed lib/hibernate3.jar
Binary file not shown.
63 changes: 42 additions & 21 deletions src/play/modules/db/Exporter.java
Original file line number Diff line number Diff line change
Expand Up @@ -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<Class> 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);
Expand Down Expand Up @@ -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();
}
}


}