Package org.castor.ddlgen

Source Code of org.castor.ddlgen.Main

/*
* Copyright 2006 Le Duc Bao, Ralf Joachim
*
* 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.
*/
package org.castor.ddlgen;

import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.util.Properties;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.castor.mapping.MappingUnmarshaller;
import org.exolab.castor.mapping.Mapping;
import org.exolab.castor.util.CommandLineOptions;

/**
* Main Program.
*
* @author <a href="mailto:leducbao AT gmail DOT com">Le Duc Bao</a>
* @author <a href="mailto:ralf DOT joachim AT syscon DOT eu">Ralf Joachim</a>
* @version $Revision: 5951 $ $Date: 2006-04-25 16:09:10 -0600 (Tue, 25 Apr 2006) $
* @since 1.1
*/
public final class Main {
    //--------------------------------------------------------------------------

    /** The <a href="http://jakarta.apache.org/commons/logging/">Jakarta Commons
     *  Logging </a> instance used for all logging. */
    private static final Log LOG = LogFactory.getLog(Main.class);
   
    //--------------------------------------------------------------------------

    /**
     * @param args options
     */
    public static void main(final String[] args) {
        CommandLineOptions allOptions = new CommandLineOptions();
       
        allOptions.addFlag(
                "m", "mapping.xml", "input mapping file.");
        allOptions.addFlag(
                "c", "ddl.properties", "configuration file.", true);
        allOptions.addFlag(
                "d", "mysql.properties", "specific database configuration file.", true);
        allOptions.addFlag(
                "e", "MySQL", "database engine, for example MySQL, Oracle", true);
        allOptions.addFlag(
                "o", "output.sql", "output ddl file", true);
        allOptions.addFlag(
                "h", "", "Displays this help screen.", true);

        // Process the specified command line options.
        Properties options = allOptions.getOptions(args);
       
        String  mappingName     = options.getProperty("m");
        String  ddlName         = options.getProperty("o");
        String  globalConfig    = options.getProperty("c");
        String  specificConfig  = options.getProperty("d");
        String  engine  = options.getProperty("e");
       
        if (options.getProperty("h") != null || mappingName == null) {
            PrintWriter pw = new PrintWriter(System.out, true);
            allOptions.printHelp(pw);
            pw.flush();
            System.exit(0);
        }
       
        // Verify and adjust output file.
        if (ddlName == null) {
            ddlName = mappingName.replaceAll(".xml", ".sql");
        }       

        LOG.info("mapping file: " + mappingName);
        LOG.info("ddl output file: " + ddlName);
        LOG.info("global configuration file: " + globalConfig);
        LOG.info("specific database configuration file: " + specificConfig);
        LOG.info("database: " + engine);
       
        // Create generator and generate ddl.
        try {
            Generator generator = GeneratorFactory.createDDLGenerator(
                    engine, globalConfig, specificConfig);

            Mapping mapping = new Mapping();
            mapping.loadMapping(mappingName);
            new MappingUnmarshaller().loadMappingOnly(mapping);
            // TODO: Joachim 2007-09-07 the InternalContext should be set into the unmarshaller!
           
            generator.setMapping(mapping);
            generator.generateDDL(new FileOutputStream(ddlName));           
        } catch (Exception ex) {
            LOG.error("Error: " + ex.getMessage(), ex);
        }
    }

    //--------------------------------------------------------------------------

    /**
     * Hide utility class constructor.
     */
    private Main() {
        super();
    }

    //--------------------------------------------------------------------------
}
TOP

Related Classes of org.castor.ddlgen.Main

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.