* limitations under the License.
*/
+import java.util.EnumSet;
+import java.util.HashMap;
import java.util.Map;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.hibernate.boot.spi.MetadataImplementor;
+import org.hibernate.cfg.AvailableSettings;
+import org.hibernate.engine.config.spi.ConfigurationService;
import org.hibernate.service.ServiceRegistry;
+import org.hibernate.tool.schema.TargetType;
+import org.hibernate.tool.schema.internal.ExceptionHandlerCollectingImpl;
+import org.hibernate.tool.schema.internal.exec.ScriptTargetOutputToFile;
import org.hibernate.tool.schema.spi.ExecutionOptions;
import org.hibernate.tool.schema.spi.SchemaManagementTool;
+import org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator;
+import org.hibernate.tool.schema.spi.ScriptTargetOutput;
import org.hibernate.tool.schema.spi.TargetDescriptor;
@Override
- void build(
- MetadataImplementor metadata,
- ExecutionOptions options,
- TargetDescriptor target
- )
+ ExceptionHandlerCollectingImpl build(MetadataImplementor metadata)
throws
MojoExecutionException,
MojoFailureException
{
- ServiceRegistry service =
+ final ServiceRegistry service =
metadata.getMetadataBuildingOptions().getServiceRegistry();
SchemaManagementTool tool = service.getService(SchemaManagementTool.class);
+ final EnumSet<TargetType> targetTypes = EnumSet.of(TargetType.SCRIPT);
+ if (execute)
+ targetTypes.add(TargetType.DATABASE);
+
+ TargetDescriptor target = new TargetDescriptor()
+ {
+ @Override
+ public EnumSet<TargetType> getTargetTypes()
+ {
+ return targetTypes;
+ }
+
+ @Override
+ public ScriptTargetOutput getScriptTargetOutput()
+ {
+ String charset
+ = (String) service
+ .getService(ConfigurationService.class)
+ .getSettings()
+ .get(AvailableSettings.HBM2DDL_CHARSET_NAME);
+ return new ScriptTargetOutputToFile(output, charset);
+ }
+ };
+
+ ExecutionOptions options =
+ SchemaManagementToolCoordinator.buildExecutionOptions(
+ service
+ .getService(ConfigurationService.class)
+ .getSettings(),
+ new ExceptionHandlerCollectingImpl()
+ );
+
Map config = options.getConfigurationValues();
tool.getSchemaMigrator(config).doMigration(metadata, options, target);