+ getLog().debug("Adding annotated classes to hibernate-mapping-configuration...");
+ // build annotated packages
+ Set<String> packages = new HashSet<String>();
+ for (Class<?> annotatedClass : classes)
+ {
+ String packageName = annotatedClass.getPackage().getName();
+ if (!packages.contains(packageName))
+ {
+ getLog().debug("Add package " + packageName);
+ packages.add(packageName);
+ config.addPackage(packageName);
+ getLog().debug("type definintions" + config.getTypeDefs());
+ }
+ getLog().debug("Class " + annotatedClass);
+ config.addAnnotatedClass(annotatedClass);
+ }
+
+ Target target = null;
+ try
+ {
+ target = Target.valueOf(this.target.toUpperCase());
+ }
+ catch (IllegalArgumentException e)
+ {
+ getLog().error("Invalid value for configuration-option \"target\": " + this.target);
+ getLog().error("Valid values are: NONE, SCRIPT, EXPORT, BOTH");
+ throw new MojoExecutionException("Invalid value for configuration-option \"target\"");
+ }
+ Type type = null;
+ try
+ {
+ type = Type.valueOf(this.type.toUpperCase());
+ }
+ catch (IllegalArgumentException e)
+ {
+ getLog().error("Invalid value for configuration-option \"type\": " + this.type);
+ getLog().error("Valid values are: NONE, CREATE, DROP, BOTH");
+ throw new MojoExecutionException("Invalid value for configuration-option \"type\"");
+ }
+
+
+ Iterator<PersistentClass> it = config.getClassMappings();
+ if (!it.hasNext())
+ {
+ throw new MojoFailureException("No mapped classes found!");
+ }
+ else
+ {
+ getLog().info("Mapped classes:");
+ while (it.hasNext())
+ {
+ getLog().debug(" " + it.next().getClassName());
+ }
+ }
+
+ if (config.getProperty(DIALECT) == null)
+ throw new MojoFailureException("hibernate-dialect must be set!");
+
+
+ if (target.equals(Target.SCRIPT) || target.equals(Target.NONE))
+ {
+ project.getProperties().setProperty(EXPORT_SKIPPED_PROPERTY, "true");
+ }
+ if (
+ !modified
+ && !target.equals(Target.SCRIPT)
+ && !target.equals(Target.NONE)
+ && !force
+ )
+ {
+ getLog().info("No modified annotated classes or mapping-files found and dialect unchanged.");
+ getLog().info("Skipping schema generation!");
+ project.getProperties().setProperty(EXPORT_SKIPPED_PROPERTY, "true");
+ return;
+ }
+
+
+ if ( config.getProperties().containsKey(NAMING_STRATEGY))
+ {
+ String namingStrategy = config.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());
+ }
+ }
+
+
+ Environment.verifyProperties(config.getProperties());
+ ConfigurationHelper.resolvePlaceHolders(config.getProperties());
+ StandardServiceRegistryImpl registry =
+ (StandardServiceRegistryImpl)
+ new StandardServiceRegistryBuilder()
+ .applySettings(config.getProperties())
+ .build();