/*
 * blancoStruts ソースコード自動生成起動クラス。
 * ※このクラスはblancoStrutsの自動生成の対象ではありません。
 * @since 2005/03/21
 */
package blancostruts;

import java.lang.reflect.Method;
import java.sql.Connection;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;

import blanco.web.struts.generator.StrutsGenerator;
import blanco.web.struts.generator.StrutsSetting;
import blanco.web.struts.metadata.StrutsMetadata;
import blancostruts.action.AbstractBaseAction;
import blancostruts.action.AbstractDbAction;

/**
 * blancoStruts <br>
 * Struts Actionのベースとなるクラス。 <br>
 * ※このクラスはblancoStrutsの自動生成の対象ではありません。
 * 
 * @since 2005/03/21
 * @author HiromuUchibayashi
 */
public class BlancoStrutsSampleGenerator {

    public static void main(String[] arguments) throws Exception {
        StrutsSetting setting = new StrutsSetting();

        // Runtimeがインストールされるパッケージ。
        setting.setRootNameSpace("blancostruts");
        // jarで動かす場合には不要。
        //setting.addRuntimeDirectory("../blancoIg/src/main");
        setting.setWorkDirectory("./WEB-INF");
        setting.setMainOutputDirectory("/src");
        setting.setBaseRow((short) 4);

        StrutsMetadata metadata = new StrutsMetadata();

        // Excelのファイルを指定。
        metadata.addExcel("./meta/blancoStrutsSampleForm.xls");

        // Dispatchメソッドで実装するMethodオブジェクトを指定。
        // サンプルの通りならいじらないようにしてください。
        Class superClass = null;
        Class[] parameters = null;
        Method dispatchMethod = null;

        superClass = AbstractBaseAction.class;
        parameters = new Class[] { ActionMapping.class, ActionForm.class,
                HttpServletRequest.class, HttpServletResponse.class };
        dispatchMethod = superClass.getMethod("executeAction", parameters);
        metadata.setDispatchMethod(dispatchMethod);

        superClass = AbstractDbAction.class;
        parameters = new Class[] { ActionMapping.class, ActionForm.class,
                HttpServletRequest.class, HttpServletResponse.class,
                Connection.class };
        dispatchMethod = superClass.getMethod("executeDbAction", parameters);
        metadata.setDispatchDbMethod(dispatchMethod);

        // イベントの振り分けに使用するパラメータ名。
        // サンプルの通りならいじらないようにしてください。
        metadata.setEventParameterName("eventId");

        StrutsGenerator sg = new StrutsGenerator(setting);
        sg.generate(metadata);
    }
}
