All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.myjavadoc.hibernate4.exporter.Hbm2DDLExporterMojo Maven / Gradle / Ivy

Go to download

Hibernate 4 maven plugin, run hibernate tools from inside maven builds. Based off Codehaus hibernate3-maven-plugin 2.2. The configuration is the same but the performance is alot better. See source for example database reverse engineering to JPA.

The newest version!
package com.myjavadoc.hibernate4.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.apache.maven.plugins.annotations.Execute;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.ResolutionScope;
//import org.codehaus.mojo.hibernate3.HibernateExporterMojo;
//import org.codehaus.mojo.hibernate3.HibernateUtils;
import org.hibernate.tool.hbm2x.Exporter;

import com.myjavadoc.hibernate4.HibernateExporterMojo;
import com.myjavadoc.hibernate4.HibernateUtils;

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 Johann Reyes
 * @version $Id: Hbm2DDLExporterMojo.java 6588 2008-03-28 12:22:57Z bentmann $
 // * @goal hbm2ddl
 //* @execute phase="process-resources"
 */
@Mojo(name = "hbm2ddl", threadSafe = true, defaultPhase = LifecyclePhase.PROCESS_RESOURCES, requiresDependencyResolution = ResolutionScope.TEST)
public class Hbm2DDLExporterMojo
    extends HibernateExporterMojo
{
    /**
     * Default constructor.
     */
    public Hbm2DDLExporterMojo()
    {
    	super();
        addDefaultComponent( "target/hibernate3/sql", "configuration", false );
        addDefaultComponent( "target/hibernate3/sql", "annotationconfiguration", true );
    }

// --------------------- Interface ExporterMojo ---------------------

    /**
     * Returns hbm2ddl.
     *
     * @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 ." );
                while ( iterator.hasNext() )
                {
                    getLog().error( "Error #" + cnt + ": " + iterator.next().toString() );
                }
                if ( haltOnError )
                {
                    throw new MojoExecutionException( "Errors while performing " );
                }
            }
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy