Java tutorial
package org.codehaus.mojo.hibernate3.exporter; /* * Copyright 2005 Johann Reyes. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import org.apache.maven.plugin.MojoExecutionException; import org.codehaus.mojo.hibernate3.HibernateExporterMojo; import org.codehaus.mojo.hibernate3.HibernateUtils; import org.hibernate.tool.hbm2x.Exporter; import org.hibernate.tool.hbm2ddl.SchemaUpdate; import org.hibernate.tool.hbm2ddl.SchemaExport; import org.hibernate.cfg.Configuration; import java.util.Iterator; import java.io.File; /** * Generates database schema. * * @author <a href="mailto:jreyes@hiberforum.org">Johann Reyes</a> * @version $Id$ * @goal hbm2ddl * @execute phase="process-resources" */ public class Hbm2DDLExporterMojo extends HibernateExporterMojo { /** * Default constructor. */ public Hbm2DDLExporterMojo() { addDefaultComponent("target/hibernate3/sql", "configuration", false); addDefaultComponent("target/hibernate3/sql", "annotationconfiguration", true); } // --------------------- Interface ExporterMojo --------------------- /** * Returns <b>hbm2ddl</b>. * * @return String goal's name */ public String getName() { return "hbm2ddl"; } /** * This method is not to be used. * * @return throws IllegalStateException */ protected Exporter createExporter() { throw new IllegalStateException("Should not call create exporter on hbm2ddl"); } /** * Overrides the default implementation of executing this goal. * * @throws MojoExecutionException if there is an error executing the goal */ protected void doExecute() throws MojoExecutionException { boolean scriptToConsole = getComponentProperty("console", true); boolean exportToDatabase = getComponentProperty("export", true); boolean haltOnError = getComponentProperty("haltonerror", false); boolean drop = getComponentProperty("drop", false); boolean create = getComponentProperty("create", true); String implementation = getComponentProperty("implementation", getComponent().getImplementation()); Configuration configuration = getComponentConfiguration(implementation).getConfiguration(this); if (getComponentProperty("update", false)) { SchemaUpdate update = new SchemaUpdate(configuration); update.execute(scriptToConsole, exportToDatabase); } else { SchemaExport export = new SchemaExport(configuration); export.setDelimiter(getComponentProperty("delimiter", ";")); export.setHaltOnError(haltOnError); export.setFormat(getComponentProperty("format", false)); String outputFilename = getComponentProperty("outputfilename"); if (outputFilename != null) { File outputFile = HibernateUtils.prepareFile( new File(getProject().getBasedir(), getComponent().getOutputDirectory()), outputFilename, "outputfilename"); export.setOutputFile(outputFile.toString()); } if (drop && create) { export.create(scriptToConsole, exportToDatabase); } else { export.execute(scriptToConsole, exportToDatabase, drop, create); } if (export.getExceptions().size() > 0) { Iterator iterator = export.getExceptions().iterator(); int cnt = 1; getLog().warn(export.getExceptions().size() + " errors occurred while performing <hbm2ddl>."); while (iterator.hasNext()) { getLog().error("Error #" + cnt + ": " + iterator.next().toString()); } if (haltOnError) { throw new MojoExecutionException("Errors while performing <hbm2ddl>"); } } } } }