/*
 * blanco Framework
 * Copyright (C) 2004-2006 IGA Tosiki
 * 
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 */
package blanco.dbmetadata.task;

import java.io.File;
import java.io.IOException;
import java.sql.SQLException;

import blanco.dbmetadata.BlancoDbMetaDataConstants;
import blanco.dbmetadata.csv.BlancoDbMetaDataMeta2Csv;

/**
 * 「メッセージ定義書」Excel様式からメッセージを処理するクラス・ソースコードを生成。
 * 
 * このクラスは、Apache Antタスクを実装します。
 * 
 * @author IGA Tosiki
 */
public class BlancoDbMetaDataMeta2CsvTask extends
        AbstractBlancoDbMetaDataMeta2CsvTask {
    /**
     * 定義書(XLS)からソースコードを自動生成するApache Antタスクのエントリポイントです。
     */
    protected void process() throws IllegalArgumentException {
        System.out.println("- " + BlancoDbMetaDataConstants.PRODUCT_NAME + " ("
                + BlancoDbMetaDataConstants.VERSION + ")");

        try {
            // テンポラリディレクトリを作成。
            final File fileTempDirectory = new File(getTmpdir()
                    + BlancoDbMetaDataConstants.TARGET_SUBDIRECTORY);
            fileTempDirectory.mkdirs();

            final File fileTargetDirectory = new File(getTargetdir());
            fileTargetDirectory.mkdirs();

            // 指定されたメタディレクトリを処理します。
            new BlancoDbMetaDataMeta2Csv().process(getJdbcdriver(),
                    getJdbcurl(), getJdbcuser(), getJdbcpassword(),
                    getSchema(), getTable(), fileTargetDirectory);
        } catch (IllegalArgumentException ex) {
            ex.printStackTrace();
            throw ex;
        } catch (IOException ex) {
            ex.printStackTrace();
            throw new IllegalArgumentException(ex.toString());
        } catch (SQLException ex) {
            ex.printStackTrace();
            throw new IllegalArgumentException(ex.toString());
        }
    }
}
