Fixed problem with NamingStrategy (contribution from Lorenzo Nicora)
authornicus <lorenzo.nicora@nicus.it>
Fri, 19 Apr 2013 13:27:21 +0000 (15:27 +0200)
committerKai Moritz <kai@juplo.de>
Wed, 1 May 2013 23:20:35 +0000 (01:20 +0200)
 * NamingStrategy is set explicitly on Hibernate Configuration (not
   passed by properties)
 * Added  'hibernateNamingStrategy' configuration property

.gitignore
pom.xml
src/main/java/de/juplo/plugins/hibernate4/Hbm2DdlMojo.java

index eb5a316..e47f277 100644 (file)
@@ -1 +1,4 @@
 target
+/.settings/
+/.classpath
+/.project
diff --git a/pom.xml b/pom.xml
index e430860..d12718e 100644 (file)
--- a/pom.xml
+++ b/pom.xml
       <name>Adriano Machado</name>
       <email>adriano.m.machado@hotmail.com</email>
     </contributor>
+    <contributor>
+      <name>Lorenzo Nicora</name>
+      <email>lorenzo.nicora@nicus.it</email>
+    </contributor>
   </contributors>
 
   <distributionManagement>
index 2ad0a29..36a5aca 100644 (file)
@@ -53,6 +53,7 @@ import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.project.MavenProject;
 import org.hibernate.cfg.Configuration;
+import org.hibernate.cfg.NamingStrategy;
 import org.hibernate.tool.hbm2ddl.SchemaExport;
 import org.hibernate.tool.hbm2ddl.SchemaExport.Type;
 import org.hibernate.tool.hbm2ddl.Target;
@@ -77,6 +78,7 @@ public class Hbm2DdlMojo extends AbstractMojo
   public final static String USERNAME = "hibernate.connection.username";
   public final static String PASSWORD = "hibernate.connection.password";
   public final static String DIALECT = "hibernate.dialect";
+  public final static String NAMING_STRATEGY="hibernate.ejb.naming_strategy";
 
   private final static String MD5S = "schema.md5s";
 
@@ -197,6 +199,13 @@ public class Hbm2DdlMojo extends AbstractMojo
    */
   private String hibernateDialect;
 
+  /**
+   * Hibernate Naming Strategy
+   * @parameter property="hibernate.ejb.naming_strategy"
+   * @author nicus
+   */
+  private String hibernateNamingStrategy;
+
   /**
    * Path to Hibernate configuration file.
    *
@@ -468,7 +477,7 @@ public class Hbm2DdlMojo extends AbstractMojo
         getLog().debug(
             "Overwriting property " +
             PASSWORD + "=" + properties.getProperty(PASSWORD) +
-            " with the value " + password 
+            " with the value " + password
           );
       else
         getLog().debug("Using the value " + password);
@@ -486,6 +495,18 @@ public class Hbm2DdlMojo extends AbstractMojo
         getLog().debug("Using the value " + hibernateDialect);
       properties.setProperty(DIALECT, hibernateDialect);
     }
+    if ( hibernateNamingStrategy != null )
+    {
+      if ( properties.contains(NAMING_STRATEGY))
+        getLog().debug(
+            "Overwriting property " +
+            NAMING_STRATEGY + "=" + properties.getProperty(NAMING_STRATEGY) +
+            " with the value " + hibernateNamingStrategy
+           );
+      else
+        getLog().debug("Using the value " + hibernateNamingStrategy);
+      properties.setProperty(NAMING_STRATEGY, hibernateNamingStrategy);
+    }
 
     /** The generated SQL varies with the dialect! */
     if (md5s.containsKey(DIALECT))
@@ -514,6 +535,24 @@ public class Hbm2DdlMojo extends AbstractMojo
 
     Configuration config = new Configuration();
     config.setProperties(properties);
+
+    if ( properties.containsKey(NAMING_STRATEGY))
+    {
+      String namingStrategy = properties.getProperty(NAMING_STRATEGY);
+      getLog().debug("Explicitly set NamingStrategy: " + namingStrategy);
+      try
+      {
+        @SuppressWarnings("unchecked")
+        Class<NamingStrategy> namingStrategyClass = (Class<NamingStrategy>) Class.forName(namingStrategy);
+        config.setNamingStrategy(namingStrategyClass.newInstance());
+      }
+      catch (Exception e)
+      {
+        getLog().error("Error setting NamingStrategy", e);
+        throw new MojoExecutionException(e.getMessage());
+      }
+    }
+
     getLog().debug("Adding annotated classes to hibernate-mapping-configuration...");
     for (Class<?> annotatedClass : classes)
     {