View Javadoc
1   package de.juplo.plugins.hibernate;
2   
3   /*
4    * Copyright 2001-2005 The Apache Software Foundation.
5    *
6    * Licensed under the Apache License, Version 2.0 (the "License");
7    * you may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    *
10   *      http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  
19  import java.util.Map;
20  import org.apache.maven.plugin.MojoExecutionException;
21  import org.apache.maven.plugin.MojoFailureException;
22  import org.hibernate.boot.spi.MetadataImplementor;
23  import org.hibernate.service.ServiceRegistry;
24  import org.hibernate.tool.schema.SourceType;
25  import org.hibernate.tool.schema.spi.ExecutionOptions;
26  import org.hibernate.tool.schema.spi.SchemaManagementTool;
27  import org.hibernate.tool.schema.spi.ScriptSourceInput;
28  import org.hibernate.tool.schema.spi.SourceDescriptor;
29  import org.hibernate.tool.schema.spi.TargetDescriptor;
30  
31  
32  /**
33   * Generate/Execute SQL to create a database-schema that represents the
34   * configured mappings.
35   *
36   * @goal create
37   * @phase process-classes
38   * @threadSafe
39   * @requiresDependencyResolution runtime
40   */
41  public class CreateMojo extends AbstractSchemaMojo
42  {
43    /**
44     * Output file.
45     * <p>
46     * If the specified filename is not absolut, the file will be created
47     * relative to the project build directory
48     * (<code>project.build.directory</code>).
49     *
50     * @parameter property="hibernate.schema.create" default-value="create.sql"
51     * @since 1.0
52     */
53    private String outputFile;
54  
55  
56    @Override
57    public final void execute()
58      throws
59        MojoFailureException,
60        MojoExecutionException
61    {
62      super.execute(outputFile);
63    }
64  
65  
66    @Override
67    void build(
68        MetadataImplementor metadata,
69        ExecutionOptions options,
70        TargetDescriptor target
71        )
72        throws
73          MojoExecutionException,
74          MojoFailureException
75    {
76      ServiceRegistry service =
77          metadata.getMetadataBuildingOptions().getServiceRegistry();
78      SchemaManagementTool tool = service.getService(SchemaManagementTool.class);
79  
80      Map config = options.getConfigurationValues();
81      SourceDescriptor source = new SourceDescriptor()
82      {
83  	  @Override
84        public SourceType getSourceType()
85        {
86          return SourceType.METADATA;
87        }
88  
89        @Override
90        public ScriptSourceInput getScriptSourceInput()
91        {
92          return null;
93        }
94      };
95  
96      tool.getSchemaCreator(config).doCreation(metadata, options, source, target);
97    }
98  }