Author: epbernard
Date: 2010-06-23 18:32:15 -0400 (Wed, 23 Jun 2010)
New Revision: 19803
Added:
core/trunk/testsuite/src/test/java/org/hibernate/test/importfile/
core/trunk/testsuite/src/test/java/org/hibernate/test/importfile/Human.hbm.xml
core/trunk/testsuite/src/test/java/org/hibernate/test/importfile/Human.java
core/trunk/testsuite/src/test/java/org/hibernate/test/importfile/ImportFileTest.java
core/trunk/testsuite/src/test/resources/database.sql
Modified:
core/trunk/core/src/main/java/org/hibernate/cfg/Environment.java
core/trunk/core/src/main/java/org/hibernate/cfg/Settings.java
core/trunk/core/src/main/java/org/hibernate/cfg/SettingsFactory.java
core/trunk/core/src/main/java/org/hibernate/tool/hbm2ddl/SchemaExport.java
Log:
HHH-5337 Allow Customization of DML import file name
hibernate.hbm2ddl.import_file=[filename]
Modified: core/trunk/core/src/main/java/org/hibernate/cfg/Environment.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/cfg/Environment.java 2010-06-23 18:08:55
UTC (rev 19802)
+++ core/trunk/core/src/main/java/org/hibernate/cfg/Environment.java 2010-06-23 22:32:15
UTC (rev 19803)
@@ -469,6 +469,15 @@
public static final String HBM2DDL_AUTO = "hibernate.hbm2ddl.auto";
/**
+ * Name of the optional file containing SQL DML statements executed during the
SessionFactory creation.
+ * These statements are only executed if the schema is created ie if
<tt>hibernate.hbm2ddl.auto</tt>
+ * is set to <tt>create</tt> or <tt>create-drop</tt>.
+ *
+ * The default value is <tt>/import.sql</tt>
+ */
+ public static final String HBM2DDL_IMPORT_FILE =
"hibernate.hbm2ddl.import_file";
+
+ /**
* The {@link org.hibernate.exception.SQLExceptionConverter} to use for converting
SQLExceptions
* to Hibernate's JDBCException hierarchy. The default is to use the configured
* {@link org.hibernate.dialect.Dialect}'s preferred SQLExceptionConverter.
Modified: core/trunk/core/src/main/java/org/hibernate/cfg/Settings.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/cfg/Settings.java 2010-06-23 18:08:55 UTC
(rev 19802)
+++ core/trunk/core/src/main/java/org/hibernate/cfg/Settings.java 2010-06-23 22:32:15 UTC
(rev 19803)
@@ -100,6 +100,7 @@
// private ComponentTuplizerFactory componentTuplizerFactory; todo : HHH-3517 and
HHH-1907
// private BytecodeProvider bytecodeProvider;
private JdbcSupport jdbcSupport;
+private String importFile;
/**
* Package protected constructor
@@ -117,6 +118,14 @@
// return formatSql;
// }
+ public String getImportFile() {
+ return importFile;
+ }
+
+ public void setImportFile(String importFile) {
+ this.importFile = importFile;
+ }
+
public SQLStatementLogger getSqlStatementLogger() {
return sqlStatementLogger;
}
Modified: core/trunk/core/src/main/java/org/hibernate/cfg/SettingsFactory.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/cfg/SettingsFactory.java 2010-06-23
18:08:55 UTC (rev 19802)
+++ core/trunk/core/src/main/java/org/hibernate/cfg/SettingsFactory.java 2010-06-23
22:32:15 UTC (rev 19803)
@@ -337,6 +337,7 @@
settings.setAutoCreateSchema(true);
settings.setAutoDropSchema(true);
}
+ settings.setImportFile( properties.getProperty( Environment.HBM2DDL_IMPORT_FILE ) );
EntityMode defaultEntityMode = EntityMode.parse( properties.getProperty(
Environment.DEFAULT_ENTITY_MODE ) );
log.info( "Default entity-mode: " + defaultEntityMode );
Modified: core/trunk/core/src/main/java/org/hibernate/tool/hbm2ddl/SchemaExport.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/tool/hbm2ddl/SchemaExport.java 2010-06-23
18:08:55 UTC (rev 19802)
+++ core/trunk/core/src/main/java/org/hibernate/tool/hbm2ddl/SchemaExport.java 2010-06-23
22:32:15 UTC (rev 19803)
@@ -73,13 +73,14 @@
private String[] dropSQL;
private String[] createSQL;
private String outputFile = null;
- private String importFile = "/import.sql";
+ private String importFile;
private Dialect dialect;
private String delimiter;
private final List exceptions = new ArrayList();
private boolean haltOnError = false;
private Formatter formatter;
private SQLStatementLogger sqlStatementLogger;
+ private static final String DEFAULT_IMPORT_FILE = "/import.sql";
/**
* Create a schema exporter for the given Configuration
@@ -105,6 +106,7 @@
createSQL = cfg.generateSchemaCreationScript( dialect );
sqlStatementLogger = settings.getSqlStatementLogger();
formatter = ( sqlStatementLogger.isFormatSql() ? FormatStyle.DDL : FormatStyle.NONE
).getFormatter();
+ importFile = settings.getImportFile() != null ? settings.getImportFile() :
DEFAULT_IMPORT_FILE;
}
/**
@@ -129,6 +131,8 @@
createSQL = cfg.generateSchemaCreationScript( dialect );
formatter = ( PropertiesHelper.getBoolean( Environment.FORMAT_SQL, props ) ?
FormatStyle.DDL : FormatStyle.NONE ).getFormatter();
+
+ importFile = PropertiesHelper.getString( Environment.HBM2DDL_IMPORT_FILE, props,
DEFAULT_IMPORT_FILE );
}
/**
@@ -144,6 +148,9 @@
dropSQL = cfg.generateDropSchemaScript( dialect );
createSQL = cfg.generateSchemaCreationScript( dialect );
formatter = ( PropertiesHelper.getBoolean( Environment.FORMAT_SQL, cfg.getProperties()
) ? FormatStyle.DDL : FormatStyle.NONE ).getFormatter();
+ importFile = PropertiesHelper.getString( Environment.HBM2DDL_IMPORT_FILE,
cfg.getProperties(),
+ DEFAULT_IMPORT_FILE
+ );
}
/**
@@ -162,6 +169,7 @@
*
* @param filename The import file name.
* @return this
+ * @deprecated use {@link org.hibernate.cfg.Environment.HBM2DDL_IMPORT_FILE}
*/
public SchemaExport setImportFile(String filename) {
importFile = filename;
@@ -405,7 +413,7 @@
boolean halt = false;
boolean export = true;
String outFile = null;
- String importFile = "/import.sql";
+ String importFile = DEFAULT_IMPORT_FILE;
String propFile = null;
boolean format = false;
String delim = null;
@@ -471,10 +479,12 @@
cfg.setProperties( props );
}
+ if (importFile != null) {
+ cfg.setProperty( Environment.HBM2DDL_IMPORT_FILE, importFile );
+ }
SchemaExport se = new SchemaExport( cfg )
.setHaltOnError( halt )
.setOutputFile( outFile )
- .setImportFile( importFile )
.setDelimiter( delim );
if ( format ) {
se.setFormat( true );
Added: core/trunk/testsuite/src/test/java/org/hibernate/test/importfile/Human.hbm.xml
===================================================================
--- core/trunk/testsuite/src/test/java/org/hibernate/test/importfile/Human.hbm.xml
(rev 0)
+++
core/trunk/testsuite/src/test/java/org/hibernate/test/importfile/Human.hbm.xml 2010-06-23
22:32:15 UTC (rev 19803)
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+<!--
+
+ Test for import files.
+
+-->
+
+<hibernate-mapping package="org.hibernate.test.importfile">
+ <class name="Human" table="human">
+ <id name="id"/>
+ <property name="firstname" column="fname"/>
+ <property name="lastname" column="lname"/>
+ </class>
+</hibernate-mapping>
Added: core/trunk/testsuite/src/test/java/org/hibernate/test/importfile/Human.java
===================================================================
--- core/trunk/testsuite/src/test/java/org/hibernate/test/importfile/Human.java
(rev 0)
+++ core/trunk/testsuite/src/test/java/org/hibernate/test/importfile/Human.java 2010-06-23
22:32:15 UTC (rev 19803)
@@ -0,0 +1,34 @@
+package org.hibernate.test.importfile;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public class Human {
+ private Integer id;
+ private String firstname;
+ private String lastname;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getFirstname() {
+ return firstname;
+ }
+
+ public void setFirstname(String firstname) {
+ this.firstname = firstname;
+ }
+
+ public String getLastname() {
+ return lastname;
+ }
+
+ public void setLastname(String lastname) {
+ this.lastname = lastname;
+ }
+}
Added:
core/trunk/testsuite/src/test/java/org/hibernate/test/importfile/ImportFileTest.java
===================================================================
--- core/trunk/testsuite/src/test/java/org/hibernate/test/importfile/ImportFileTest.java
(rev 0)
+++
core/trunk/testsuite/src/test/java/org/hibernate/test/importfile/ImportFileTest.java 2010-06-23
22:32:15 UTC (rev 19803)
@@ -0,0 +1,41 @@
+package org.hibernate.test.importfile;
+
+import java.util.List;
+
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.hibernate.cfg.Configuration;
+import org.hibernate.cfg.Environment;
+import org.hibernate.junit.functional.FunctionalTestCase;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public class ImportFileTest extends FunctionalTestCase {
+
+ public void testImportFile() throws Exception {
+ Session s = openSession( );
+ final Transaction tx = s.beginTransaction();
+ final List<?> list = s.createQuery( "from " + Human.class.getName()
).list();
+ assertEquals( "database.sql not imported", 3, list.size() );
+ for (Object entity : list) {
+ s.delete( entity );
+ }
+ tx.commit();
+ s.close();
+ }
+
+ public void configure(Configuration cfg) {
+ cfg.setProperty( Environment.HBM2DDL_IMPORT_FILE, "/database.sql");
+ }
+
+ public ImportFileTest(String string) {
+ super( string );
+ }
+
+ public String[] getMappings() {
+ return new String[] {
+ "importfile/Human.hbm.xml"
+ };
+ }
+}
Added: core/trunk/testsuite/src/test/resources/database.sql
===================================================================
--- core/trunk/testsuite/src/test/resources/database.sql (rev 0)
+++ core/trunk/testsuite/src/test/resources/database.sql 2010-06-23 22:32:15 UTC (rev
19803)
@@ -0,0 +1,3 @@
+INSERT INTO human (id, fname, lname) VALUES (1,'Emmanuel','Bernard')
+INSERT INTO human (id, fname, lname) VALUES (2,'Gavin','King')
+INSERT INTO human (id, fname, lname) VALUES (3,'Max','Andersen')
\ No newline at end of file