[hibernate-commits] Hibernate SVN: r19803 - in core/trunk: core/src/main/java/org/hibernate/tool/hbm2ddl and 3 other directories.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Wed Jun 23 18:32:15 EDT 2010


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



More information about the hibernate-commits mailing list