<?xml version="1.0" encoding="UTF-8"?>
<document xmlns="http://maven.apache.org/XDOC/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
	<properties>
		<title>Doma-Gen</title>
	</properties>
	<body>
		<section name="目次">
			<ul>
				<li><a href="#概要">概要</a></li>
				<li><a href="#セットアップ">セットアップ</a></li>
				<li><a href="#タスク">タスク</a></li>
				<li><a href="#サンプル用ビルドファイル">サンプル用ビルドファイル</a></li>
				<li><a href="#実行方法">実行方法</a></li>
			</ul>
		</section>
		<section name="概要">
			<p>
				Doma-Genは、<a href="http://ant.apache.org/">Ant</a>と<a href="http://freemarker.org/">FreeMarker</a>を使用したコード生成ツールです。
			</p>
			<p>
				Doma-Genを利用すると、次のことが可能です。
			</p>
			<ul>
				<li>エンティティクラスのJavaコード生成</li>
				<li>エンティティリスナークラスのJavaコード生成</li>
				<li>DaoインタフェースのJavaコード生成</li>
				<li>SQLのコード生成</li>
				<li>SQLをテストするためのJavaテストコード生成</li>
			</ul>
		</section>
		<section name="セットアップ">
			<p>
				Doma-Genの配布ファイルを、<a href="../downloads.html">ダウンロードページ</a>からダウンロードします。
			</p>
			<p>
				配布ファイルを解凍し、Doma-GenとFreeMarkerのjarファイルとサンプル用のビルドファイル（doma-gen-build.xml）を取り出してください。
			</p>
			<p>
				Doma-GenとFreeMarkerのjarファイルは、Antタスクのクラスパスに通す必要があります。
				サンプル用のビルドファイルは、独自ビルドファイル作成時のコピー元として活用してください。
			</p>
		</section>
		<section name="タスク">
			<p>
				Doma-Genには、2つのタスクが用意されています。
			</p>
			<table border="1" cellpadding="2" cellspacing="0">
				<tr><th>タスク名</th><th>説明</th></tr>
				<tr><td><a href="doma_gen_gen_task.html">Gen</a></td><td>アプリケーション実行時に使用されるクラスやSQLのコードを生成します。</td></tr>
				<tr><td><a href="doma_gen_gentest_task.html">GenTest</a></td><td>テストのためのコードを生成します。</td></tr>
			</table>
		</section>
		<section name="サンプル用ビルドファイル">
			<p>
				GenタスクとGenTestタスクを使用するサンプル用ビルドファイルの内容を示します。
				これは、配布ファイルに含まれているサンプルのdoma-gen-build.xmlと同じものです。
			</p>
<source><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<project name="doma-gen-example" default="gen" basedir=".">
    
    <property name="javaDestDir" value="src"/>
    <property name="sqlDestDir" value="src"/>
    <property name="dialectName" value="hsqldb"/>
    <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
    <property name="url" value="jdbc:hsqldb:file:example"/>
    <property name="user" value="sa"/>
    <property name="password" value=""/>
    <property name="entityPackageName" value="example.entity"/>
    <property name="daoPackageName" value="example.dao"/>
    <property name="configClassName" value="example.AppConfig"/>
    <property name="sqlTestClassName" value="example.SqlTest"/>
    <property name="sqlFilePattern" value="META-INF/**/*.sql"/>
    
    <path id="classpath">
        <fileset dir="lib"/>
    </path>

    <taskdef name="gen" classname="org.seasar.doma.extension.gen.task.Gen" classpathref="classpath" loaderref="loader"/>
    <taskdef name="genTest" classname="org.seasar.doma.extension.gen.task.GenTest" loaderref="loader"/>
    <typedef name="entityConfig" classname="org.seasar.doma.extension.gen.task.EntityConfig" loaderref="loader"/>
    <typedef name="daoConfig" classname="org.seasar.doma.extension.gen.task.DaoConfig" loaderref="loader"/>
    <typedef name="sqlConfig" classname="org.seasar.doma.extension.gen.task.SqlConfig" loaderref="loader"/>
    <typedef name="sqlTestConfig" classname="org.seasar.doma.extension.gen.task.SqlTestConfig" loaderref="loader"/>
    
    <target name="gen">
        <gen
            dialectName="${dialectName}"
            driverClassName="${driverClassName}"
            url="${url}"
            user="${user}"
            password="${password}">
            <entityConfig
                destdir="${javaDestDir}"
                packageName="${entityPackageName}"
            />
            <daoConfig
                destdir="${javaDestDir}"
                packageName="${daoPackageName}"
                configClassName="${configClassName}"
            />
            <sqlConfig
                destdir="${sqlDestDir}"
            />
        </gen>
    </target>

    <target name="genTest">
        <genTest
            dialectName="${dialectName}"
            driverClassName="${driverClassName}"
            url="${url}"
            user="${user}"
            password="${password}">
            <sqlTestConfig
                destdir="${javaDestDir}"
                testClassName="${sqlTestClassName}">
                <fileset dir="${sqlDestDir}">
                    <include name="${sqlFilePattern}"/>
                </fileset>
            </sqlTestConfig>
        </genTest>
    </target>

</project>]]></source>
		</section>
		<section name="実行方法">
			<p>
				Eclipse3.5のWindows版を使用している場合、AntはEclipse上からではなく、コマンドラインから実行してください。
				Eclipse3.5のWindows版には、コンソールに日本語を出力できない問題があります（Ecipse3.6では解決されています）。
				コマンドラインから実行するには、Antを適切にインストールした環境で、次のように実行してください。
			</p>
<source><![CDATA[ant -f doma-gen-build.xml ターゲット名]]></source>
			<p>
				この例では、上述したdoma-gen-build.xmlを使うものとします。
				ターゲット名にはgen、もしくはgenTestを指定できます。
			</p>
			<p>
				Eclipseを使用している場合、Eclipseの自動リフレッシュ機能を有効にしておくと、Eclipse外部で生成されたファイルが自動で認識されます。
				この機能を有効にしておけば、Antでファイルを生成した後、手動でEclipseのワークスペースをリフレッシュする必要がなくなります。
			</p>
			<p>
				この機能を有効にするには、メニューから「Window」 - [Preferences」 - 「General」 - 「Workspace」と辿り、「Refresh Automatically」をチェックします。
			</p>
			<img src="../images/eclipse_auto_refresh.png" width="454" height="152" alt="自動リフレッシュ機能の設定" />
		</section>
	</body>
</document>
