X-Git-Url: http://juplo.de/gitweb/?p=hibernate4-maven-plugin;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fplugins%2Fhibernate%2FCreateMojo.java;h=cdba7a432ca1bcd6222554bd8277f00860e8a9d6;hp=19078ea89efc313a89269200066bcc3c8272b41c;hb=d7a81e54bda02c6ea5b08410c7de8eb8e24a192e;hpb=4940080670944a15916c68fb294e18a6bfef12d5 diff --git a/src/main/java/de/juplo/plugins/hibernate/CreateMojo.java b/src/main/java/de/juplo/plugins/hibernate/CreateMojo.java index 19078ea8..cdba7a43 100644 --- a/src/main/java/de/juplo/plugins/hibernate/CreateMojo.java +++ b/src/main/java/de/juplo/plugins/hibernate/CreateMojo.java @@ -16,16 +16,22 @@ package de.juplo.plugins.hibernate; * limitations under the License. */ -import java.io.File; +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.tool.hbm2ddl.SchemaExport; +import org.hibernate.service.ServiceRegistry; +import org.hibernate.tool.schema.SourceType; +import org.hibernate.tool.schema.spi.ExecutionOptions; +import org.hibernate.tool.schema.spi.SchemaManagementTool; +import org.hibernate.tool.schema.spi.ScriptSourceInput; +import org.hibernate.tool.schema.spi.SourceDescriptor; +import org.hibernate.tool.schema.spi.TargetDescriptor; /** - * Goal which extracts the hibernate-mapping-configuration and - * exports an according SQL-database-schema. + * Generate/Execute SQL to create a database-schema that represents the + * configured mappings. * * @goal create * @phase process-classes @@ -34,89 +40,59 @@ import org.hibernate.tool.hbm2ddl.SchemaExport; */ public class CreateMojo extends AbstractSchemaMojo { - /** - * Export the database-schma to the database. - * If set to false, only the SQL-script is created and the - * database is not touched. - * - * @parameter property="hibernate.export.export" default-value="true" - * @since 2.0 - */ - private boolean export; - - /** - * Create the catalog - * If set to false, only the SQL-script is created and the - * database is not touched. - * - * @parameter property=org.hibernate.cfg.AvailableSettings.HBM2DDL_IMPORT_FILES_SQL_EXTRACTOR default-value="false" - * @since 2.0 - */ - private boolean createNamespaces; // TODO handle in configure-Method - /** * Output file. + *

+ * If the specified filename is not absolut, the file will be created + * relative to the project build directory + * (project.build.directory). * - * @parameter property="hibernate.export.schema.filename" default-value="${project.build.directory}/schema.sql" + * @parameter property="hibernate.schema.create" default-value="create.sql" * @since 1.0 */ private String outputFile; - /** - * Delimiter in output-file. - * - * @parameter property="hibernate.export.schema.delimiter" default-value=";" - * @since 1.0 - */ - private String delimiter; - /** - * Format output-file. - * - * @parameter property="hibernate.export.schema.format" default-value="true" - * @since 1.0 - */ - private boolean format; + @Override + public final void execute() + throws + MojoFailureException, + MojoExecutionException + { + super.execute(outputFile); + } @Override - void build(MetadataImplementor metadata) + void build( + MetadataImplementor metadata, + ExecutionOptions options, + TargetDescriptor target + ) throws MojoExecutionException, MojoFailureException { - SchemaExport schemaExport = new SchemaExport(metadata, createNamespaces); - schemaExport.setDelimiter(delimiter); - schemaExport.setFormat(format); - - File output = new File(outputFile); - - if (!output.isAbsolute()) - { - // Interpret relative file path relative to build directory - output = new File(buildDirectory, outputFile); - getLog().debug("Adjusted relative path, resulting path is " + output.getPath()); - } + ServiceRegistry service = + metadata.getMetadataBuildingOptions().getServiceRegistry(); + SchemaManagementTool tool = service.getService(SchemaManagementTool.class); - // Ensure that directory path for specified file exists - File outFileParentDir = output.getParentFile(); - if (null != outFileParentDir && !outFileParentDir.exists()) + Map config = options.getConfigurationValues(); + SourceDescriptor source = new SourceDescriptor() { - try + @Override + public SourceType getSourceType() { - getLog().info("Creating directory path for output file:" + outFileParentDir.getPath()); - outFileParentDir.mkdirs(); + return SourceType.METADATA; } - catch (Exception e) + + @Override + public ScriptSourceInput getScriptSourceInput() { - getLog().error("Error creating directory path for output file: " + e.getLocalizedMessage()); + return null; } - } - - schemaExport.setOutputFile(output.getPath()); - schemaExport.execute(false, this.export, false, true); + }; - for (Object exception : schemaExport.getExceptions()) - getLog().error(exception.toString()); + tool.getSchemaCreator(config).doCreation(metadata, options, source, target); } }