Added a test-case to proofe, that @Converter and @Lob can be used together
[hibernate4-maven-plugin] / src / main / java / de / juplo / plugins / hibernate / CreateMojo.java
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 }