Namesクラス と SqlFilesクラス
たけぞうさんからリクエストがあったNamesクラスとSqlFilesクラスに対応しました。次のバージョン(2.4.40)に入ります。
Namesクラスは、Gen-Namesタスクを実行すれば自動で作られるようにしました(生成しないことも可)。
SqlFilesクラスは、こんなantタスクで生成できるようにしました。
<gen-sqlfileconstants classpathDir="build/classes" rootpackagename="examples" classpathref="classpath"> <sqlfileset dir="build/classes"> <include name="META-INF/sql/**/*.sql" /> </sqlfileset> </gen-sqlfileconstants>
上のタスクを実行すると、たとえば、こんなクラスが作られます。
/** * SQLファイルの定数クラスです。 * */ public final class SqlFiles { /** * {@code META-INF/sql/Address/getStreet.sql}の定数です。 */ public static final String ADDRESS_GET_STREET = "META-INF/sql/Address/getStreet.sql"; /** * {@code META-INF/sql/Employee/updateEmployeeName.sql}の定数です。 */ public static final String EMPLOYEE_UPDATE_EMPLOYEE_NAME = "META-INF/sql/Employee/updateEmployeeName.sql"; }
定数名は、デフォルトでは、SQLファイルのディレクトリ名とファイル名をキャメルケースから大文字のアンダースコア(_)区切りに変換し、 両者をアンダースコア(_)で連結したものになります。
定数名をカスタマイズするには、SqlFileConstantNamingRuleというインタフェースの実装クラスを作ってクラス名をタスクのパラメータで指定します。SqlFileConstantNamingRuleはこんなインタフェースです。
/** * SQLファイルのパスを表す定数の名前付けルールです。 * * @author taedium * */ public interface SqlFileConstantNamingRule { /** * SQLファイルのパスから定数名に変換します。 * * @param path * SQLファイルのパス。ディレクトリの区切りはスラッシュで表されます。たとえば次のような {@code * aaa/bbb/ccc.sql}のような文字列になります。 * @return 定数名 */ String fromPathToConstantName(String path); }
一応SNAPSHOTをつくってみました。よければどうぞ。
http://maven.seasar.org/maven2-snapshot/org/seasar/container/s2jdbc-gen/2.4.40-SNAPSHOT/s2jdbc-gen-2.4.40-20091008.121505-1.jar