svnno****@sourc*****
svnno****@sourc*****
2009年 4月 15日 (水) 14:16:24 JST
Revision: 3283 http://svn.sourceforge.jp/view?root=jiemamy&view=rev&rev=3283 Author: j5ik2o Date: 2009-04-15 14:16:24 +0900 (Wed, 15 Apr 2009) Log Message: ----------- リファクタリング Modified Paths: -------------- leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/desc/impl/AttributeDescFactoryImpl.java leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/desc/impl/EntityDescFactoryImpl.java leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/desc/impl/EntitySetDescFactoryImpl.java leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/dialect/GenDialect.java leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/dialect/StandardGenDialect.java leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/EntityMetaWriterFactory.java leto/jiemamy-entity-io/trunk/src/test/java/org/jiemamy/entity/io/meta/impl/EntityMetaWriterImplTest.java leto/jiemamy-entity-io/trunk/src/test/java/org/jiemamy/entity/io/meta/impl/TestDialect.java Added Paths: ----------- leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/meta/impl/ leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/meta/impl/DbTableMetaReaderImpl.java leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/DefaultEntityDescWriterContext.java leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/DefaultEntityDescWriterFactory.java leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/EntityDescWriter.java leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/EntityDescWriterContext.java leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/impl/EntityDescWriterImpl.java leto/jiemamy-entity-io/trunk/src/test/java/org/jiemamy/entity/io/gen/ leto/jiemamy-entity-io/trunk/src/test/java/org/jiemamy/entity/io/gen/desc/ leto/jiemamy-entity-io/trunk/src/test/java/org/jiemamy/entity/io/gen/desc/impl/ leto/jiemamy-entity-io/trunk/src/test/java/org/jiemamy/entity/io/gen/desc/impl/EntitySetDescFactoryImplTest.java Removed Paths: ------------- leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/dialect/UnsupportedSqlTypeException.java leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/dialect/ValueType.java leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/DefaultEntityMetaWriterContext.java leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/DefaultEntityMetaWriterFactory.java leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/EntityMetaWriter.java leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/EntityMetaWriterContext.java leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/impl/EntityMetaWriterImpl.java -------------- next part -------------- Modified: leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/desc/impl/AttributeDescFactoryImpl.java =================================================================== --- leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/desc/impl/AttributeDescFactoryImpl.java 2009-04-15 04:55:22 UTC (rev 3282) +++ leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/desc/impl/AttributeDescFactoryImpl.java 2009-04-15 05:16:24 UTC (rev 3283) @@ -27,6 +27,7 @@ import org.apache.commons.lang.Validate; +import org.jiemamy.entity.io.convensition.PersistenceConvention; import org.jiemamy.entity.io.gen.desc.AttributeDesc; import org.jiemamy.entity.io.gen.desc.AttributeDescFactory; import org.jiemamy.entity.io.gen.dialect.GenDialect; @@ -34,7 +35,6 @@ import org.jiemamy.entity.io.gen.meta.DbTableMeta; import org.jiemamy.entity.io.utils.AnnotationUtil; import org.jiemamy.utils.ClassUtil; -import org.jiemamy.utils.StringUtil; /** * {@link AttributeDescFactory}の実装クラスです。 @@ -55,27 +55,33 @@ /** エンティティの識別子の割り当てサイズ */ protected int allocationSize; + /** SQL方言 */ protected GenDialect dialect; + private PersistenceConvention persistenceConvention; + /** * インスタンスを構築する。 * - * @param dialect + * @param persistenceConvention 永続化層の命名規約 + * @param dialect SQL方言 * @param versionColumnNamePattern バージョンカラム名のパターン * @param generationType エンティティの識別子の生成方法を示す列挙型 、生成しない場合は{@code null} * @param initialValue エンティティの識別子の初期値、指定しない場合は{@code null} * @param allocationSize エンティティの識別子の割り当てサイズ、指定しない場合は{@code null} - * @throws IdentityNotSupportedException + * @throws IdentityNotSupportedException IDENTITYがサポートされていない場合 */ - public AttributeDescFactoryImpl(GenDialect dialect, Pattern versionColumnNamePattern, - GenerationType generationType, Integer initialValue, Integer allocationSize) - throws IdentityNotSupportedException { + public AttributeDescFactoryImpl(PersistenceConvention persistenceConvention, GenDialect dialect, + Pattern versionColumnNamePattern, GenerationType generationType, Integer initialValue, + Integer allocationSize) throws IdentityNotSupportedException { Validate.notNull(dialect); Validate.notNull(versionColumnNamePattern); + this.persistenceConvention = persistenceConvention; this.dialect = dialect; this.versionColumnNamePattern = versionColumnNamePattern; - this.generationType = generationType == GenerationType.AUTO ? getDefaultGenerationType() : generationType; + this.generationType = + generationType == GenerationType.AUTO ? dialect.getDefaultGenerationType() : generationType; if (this.generationType == GenerationType.IDENTITY) { if (dialect.supportsIdentity() == false) { throw new IdentityNotSupportedException(); @@ -155,7 +161,7 @@ * @param attributeDesc 属性記述 */ protected void doName(DbTableMeta tableMeta, DbColumnMeta columnMeta, AttributeDesc attributeDesc) { - attributeDesc.setName(fromColumnNameToPropertyName(columnMeta.getName())); + attributeDesc.setName(persistenceConvention.fromColumnNameToPropertyName(columnMeta.getName())); } /** @@ -183,12 +189,6 @@ } } - private String fromColumnNameToPropertyName(String name) { - String result = StringUtil.camelize(name); - result = StringUtil.decapitalize(result); - return result; - } - public AttributeDesc getAttributeDesc(DbTableMeta tableMeta, DbColumnMeta columnMeta) { AttributeDesc attributeDesc = new AttributeDesc(); doName(tableMeta, columnMeta, attributeDesc); @@ -199,10 +199,6 @@ return attributeDesc; } - private GenerationType getDefaultGenerationType() { - return dialect.getDefaultGenerationType(); - } - /** * {@link Version}を注釈できるクラスの場合{@code true} * Modified: leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/desc/impl/EntityDescFactoryImpl.java =================================================================== --- leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/desc/impl/EntityDescFactoryImpl.java 2009-04-15 04:55:22 UTC (rev 3282) +++ leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/desc/impl/EntityDescFactoryImpl.java 2009-04-15 05:16:24 UTC (rev 3283) @@ -20,6 +20,7 @@ import org.apache.commons.lang.Validate; +import org.jiemamy.entity.io.convensition.PersistenceConvention; import org.jiemamy.entity.io.gen.desc.AttributeDesc; import org.jiemamy.entity.io.gen.desc.AttributeDescFactory; import org.jiemamy.entity.io.gen.desc.CompositeUniqueConstraintDesc; @@ -29,7 +30,6 @@ import org.jiemamy.entity.io.gen.meta.DbColumnMeta; import org.jiemamy.entity.io.gen.meta.DbTableMeta; import org.jiemamy.entity.io.gen.meta.DbUniqueKeyMeta; -import org.jiemamy.utils.StringUtil; /** * {@link EntityDescFactory}の実装クラスです。 @@ -47,17 +47,24 @@ /** スキーマが指定されている場合{@code true} */ protected boolean schemaSpecified; + /** 永続化層の命名規約 */ + protected PersistenceConvention persistenceConvention; + /** * インスタンスを生成する。 * + * @param persistenceConvention 永続化層の命名規約 * @param compositeUniqueConstraintDescFactory 複合一意制約記述のファクトリ * @param attributeDescFactory 属性記述のファクトリ */ - public EntityDescFactoryImpl(AttributeDescFactory attributeDescFactory, + public EntityDescFactoryImpl(PersistenceConvention persistenceConvention, + AttributeDescFactory attributeDescFactory, CompositeUniqueConstraintDescFactory compositeUniqueConstraintDescFactory) { + Validate.notNull(persistenceConvention); Validate.notNull(attributeDescFactory); Validate.notNull(compositeUniqueConstraintDescFactory); + this.persistenceConvention = persistenceConvention; this.attributeDescFactory = attributeDescFactory; this.compositeUniqueConstraintDescFactory = compositeUniqueConstraintDescFactory; } @@ -98,7 +105,7 @@ * @param entityDesc エンティティ記述 */ protected void doName(DbTableMeta tableMeta, EntityDesc entityDesc) { - entityDesc.setName(fromTableNameToEntityName(tableMeta.getName())); + entityDesc.setName(persistenceConvention.fromTableNameToEntityName(tableMeta.getName())); } /** @@ -114,10 +121,6 @@ entityDesc.setComment(tableMeta.getComment()); } - private String fromTableNameToEntityName(String name) { - return StringUtil.camelize(name); - } - public EntityDesc getEntityDesc(DbTableMeta tableMeta) { EntityDesc entityDesc = new EntityDesc(); doName(tableMeta, entityDesc); Modified: leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/desc/impl/EntitySetDescFactoryImpl.java =================================================================== --- leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/desc/impl/EntitySetDescFactoryImpl.java 2009-04-15 04:55:22 UTC (rev 3282) +++ leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/desc/impl/EntitySetDescFactoryImpl.java 2009-04-15 05:16:24 UTC (rev 3283) @@ -31,6 +31,7 @@ import org.apache.commons.lang.Validate; +import org.jiemamy.entity.io.convensition.PersistenceConvention; import org.jiemamy.entity.io.gen.desc.AttributeDescFactory; import org.jiemamy.entity.io.gen.desc.CompositeUniqueConstraintDescFactory; import org.jiemamy.entity.io.gen.desc.EntityDesc; @@ -73,26 +74,35 @@ /** 方言 */ protected GenDialect dialect; + private PersistenceConvention persistenceConvention; + /** * インスタンスを構築する。 * * @param dbTableMetaReader テーブルメタデータのリーダ + <<<<<<< .mine + * @param persistenceConvention 永続化層の命名規約 + * @param dialect SQL方言 + ======= * @param dialect + >>>>>>> .r3282 * @param versionColumnNamePattern バージョンカラム名のパターン * @param pluralFormFile 単語を複数系に変換するための辞書ファイル、使用しない場合は{@code null} * @param generationType エンティティの識別子の生成方法を示す列挙型 、生成しない場合は{@code null} * @param initialValue エンティティの識別子の初期値、指定しない場合は{@code null} * @param allocationSize エンティティの識別子の割り当てサイズ、指定しない場合は{@code null} - * @throws IdentityNotSupportedException + * @throws IdentityNotSupportedException IDENTITYがサポートされていない場合 */ - public EntitySetDescFactoryImpl(DbTableMetaReader dbTableMetaReader, GenDialect dialect, - Pattern versionColumnNamePattern, File pluralFormFile, GenerationType generationType, Integer initialValue, - Integer allocationSize) throws IdentityNotSupportedException { + public EntitySetDescFactoryImpl(DbTableMetaReader dbTableMetaReader, PersistenceConvention persistenceConvention, + GenDialect dialect, Pattern versionColumnNamePattern, File pluralFormFile, GenerationType generationType, + Integer initialValue, Integer allocationSize) throws IdentityNotSupportedException { Validate.notNull(dbTableMetaReader); + Validate.notNull(persistenceConvention); Validate.notNull(dialect); Validate.notNull(versionColumnNamePattern); this.dbTableMetaReader = dbTableMetaReader; + this.persistenceConvention = persistenceConvention; this.dialect = dialect; this.versionColumnNamePattern = versionColumnNamePattern; this.pluralFormFile = pluralFormFile; @@ -102,6 +112,48 @@ entityDescFactory = createEntityDescFactory(); } + /** + * 関連のリゾルバを作成する。 + * + * @param entitySetDesc エンティティ集合記述 + * @param pluralFormDictinary 単語を複数形に変換するための辞書 + * @return 関連のリゾルバ + */ + protected AssociationResolver createAssociationResolver(EntitySetDesc entitySetDesc, + PluralFormDictinary pluralFormDictinary) { + return new AssociationResolver(entitySetDesc, pluralFormDictinary); + } + + /** + * {@link EntityDescFactory}の実装を作成する。 + * + * @return {@link EntityDescFactory}の実装 + * @throws IdentityNotSupportedException IDENTITYがサポートされていない場合 + */ + protected EntityDescFactory createEntityDescFactory() throws IdentityNotSupportedException { + AttributeDescFactory attributeDescFactory = + new AttributeDescFactoryImpl(persistenceConvention, dialect, versionColumnNamePattern, generationType, + initialValue, allocationSize); + CompositeUniqueConstraintDescFactory compositeUniqueConstraintDescFactory = + new CompositeUniqueConstraintDescFactoryImpl(); + return new EntityDescFactoryImpl(persistenceConvention, attributeDescFactory, + compositeUniqueConstraintDescFactory); + } + + /** + * 単語を複数形に変換するための辞書を作成する。 + * + * @return 単語を複数形に変換するための辞書 + * @throws IOException 入出力が失敗した場合 + */ + protected PluralFormDictinary createPluralFormDictinary() throws IOException { + if (pluralFormFile != null) { + LinkedHashMap<String, String> map = loadPluralFormFile(); + return new PluralFormDictinary(map); + } + return new PluralFormDictinary(); + } + public EntitySetDesc getEntitySetDesc() throws IOException { EntitySetDesc entitySetDesc = new EntitySetDesc(); List<DbTableMeta> dbTableMetaList = dbTableMetaReader.read(); @@ -156,45 +208,4 @@ return map; } - /** - * 関連のリゾルバを作成する。 - * - * @param entitySetDesc エンティティ集合記述 - * @param pluralFormDictinary 単語を複数形に変換するための辞書 - * @return 関連のリゾルバ - */ - protected AssociationResolver createAssociationResolver(EntitySetDesc entitySetDesc, - PluralFormDictinary pluralFormDictinary) { - return new AssociationResolver(entitySetDesc, pluralFormDictinary); - } - - /** - * {@link EntityDescFactory}の実装を作成する。 - * - * @return {@link EntityDescFactory}の実装 - * @throws IdentityNotSupportedException - */ - protected EntityDescFactory createEntityDescFactory() throws IdentityNotSupportedException { - AttributeDescFactory attributeDescFactory = - new AttributeDescFactoryImpl(dialect, versionColumnNamePattern, generationType, initialValue, - allocationSize); - CompositeUniqueConstraintDescFactory compositeUniqueConstraintDescFactory = - new CompositeUniqueConstraintDescFactoryImpl(); - return new EntityDescFactoryImpl(attributeDescFactory, compositeUniqueConstraintDescFactory); - } - - /** - * 単語を複数形に変換するための辞書を作成する。 - * - * @return 単語を複数形に変換するための辞書 - * @throws IOException 入出力が失敗した場合 - */ - protected PluralFormDictinary createPluralFormDictinary() throws IOException { - if (pluralFormFile != null) { - LinkedHashMap<String, String> map = loadPluralFormFile(); - return new PluralFormDictinary(map); - } - return new PluralFormDictinary(); - } - } Modified: leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/dialect/GenDialect.java =================================================================== --- leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/dialect/GenDialect.java 2009-04-15 04:55:22 UTC (rev 3282) +++ leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/dialect/GenDialect.java 2009-04-15 05:16:24 UTC (rev 3283) @@ -17,22 +17,17 @@ */ package org.jiemamy.entity.io.gen.dialect; -import java.sql.Connection; -import java.sql.DatabaseMetaData; -import java.sql.SQLException; -import java.util.Map; - import javax.persistence.GenerationType; /** - * RDBMSごとの方言を扱うインタフェースです。 + * RDBMSごとの方言を扱うインタフェース。 * * @author j5ik2o */ public interface GenDialect { /** - * カラム型です。 + * カラム型。 * <p> * データベースのメタデータが返すカラムの型名に対応する。 * <p> @@ -47,12 +42,9 @@ /** * 属性のクラスを取得する。 * - * @param length - * 長さ - * @param precision - * 精度 - * @param scale - * スケール + * @param length 長さ + * @param precision 精度 + * @param scale スケール * @return 属性のクラス */ Class<?> getAttributeClass(int length, int precision, int scale); @@ -60,14 +52,10 @@ /** * カラム定義を取得する。 * - * @param length - * 長さ - * @param precision - * 精度 - * @param scale - * スケール - * @param defaultValue - * デフォルト値、存在しない場合は{@code null} + * @param length 長さ + * @param precision 精度 + * @param scale スケール + * @param defaultValue デフォルト値、存在しない場合は{@code null} * @return カラム定義 */ String getColumnDefinition(int length, int precision, int scale, String defaultValue); @@ -81,44 +69,40 @@ } + /** - * SQLブロックのコンテキストです。 + * SQLブロックのコンテキスト。 * * @author j5ik2o */ - interface SqlBlockContext { - - /** - * SQLのキーワードを追加する。 - * - * @param keyword - * SQLのキーワード - */ - void addKeyword(String keyword); - - /** - * SQLブロックの内側と判定できる場合{@code true} - * - * @return SQLブロックの内側と判定できる場合{@code true} - */ - boolean isInSqlBlock(); - } - - +// interface SqlBlockContext { +// +// /** +// * SQLのキーワードを追加する。 +// * +// * @param keyword SQLのキーワード +// */ +// void addKeyword(String keyword); +// +// /** +// * SQLブロックの内側と判定できる場合{@code true} +// * +// * @return SQLブロックの内側と判定できる場合{@code true} +// */ +// boolean isInSqlBlock(); +// } /** * SQLブロックのコンテキストを作成する。 * * @return SQLブロックのコンテキスト */ - SqlBlockContext createSqlBlockContext(); - + //SqlBlockContext createSqlBlockContext(); /** * 終了を表すクォートを取得する。 * * @return 終了を表すクォート */ - String getCloseQuote(); - + //String getCloseQuote(); /** * カラムのコメントをデータベースから直接取得しマップに詰めて取得する。 * <p> @@ -128,28 +112,20 @@ * 戻り値のマップのキーは大文字小文字を気にしません。 カラム名に対応するコメントが存在しない、値は{@code null}になります。 * </p> * - * @param connection - * コネクション - * @param catalogName - * カタログ名 - * @param schemaName - * スキーマ名 - * @param tableName - * テーブル名 + * @param connection コネクション + * @param catalogName カタログ名 + * @param schemaName スキーマ名 + * @param tableName テーブル名 * @return 大文字小文字を気にしないカラム名をキー、カラムのコメントを値とするマップ - * @throws SQLException - * SQL例外が発生した場合 + * @throws SQLException SQL例外が発生した場合 */ - Map<String, String> getColumnCommentMap(Connection connection, String catalogName, String schemaName, - String tableName) throws SQLException; - +// Map<String, String> getColumnCommentMap(Connection connection, String catalogName, String schemaName, +// String tableName) throws SQLException; /** * カラム型を取得する。 * - * @param columnTypeName - * カラムの型名 - * @param sqlType - * JDBCのSQL型 + * @param columnTypeName カラムの型名 + * @param sqlType JDBCのSQL型 * @return カラム型、サポートされていないカラムの型名の場合{@code null} */ ColumnType getColumnType(String columnTypeName, int sqlType); @@ -164,50 +140,42 @@ /** * デフォルトのスキーマ名を取得する。 * - * @param userName - * ユーザー名 + * @param userName ユーザー名 * @return スキーマ名 */ - String getDefaultSchemaName(String userName); - + //String getDefaultSchemaName(String userName); /** * 外部キーを削除する構文を取得する。 * * @return 外部キーを削除する構文 */ - String getDropForeignKeySyntax(); - + //String getDropForeignKeySyntax(); /** * 一意キーを削除する構文を取得する。 * * @return 外部キーを削除する構文 */ - String getDropUniqueKeySyntax(); - + //String getDropUniqueKeySyntax(); /** * IDENTITYカラムの定義を取得する。 * * @return IDENTITYカラムの定義 */ - String getIdentityColumnDefinition(); - + //String getIdentityColumnDefinition(); /** * IDENTITYカラムに対するinsertを無効化するステートメントを取得する。 * - * @param tableName - * テーブル名 + * @param tableName テーブル名 * @return IDENTITYカラムに対するinsertを無効化するステートメント */ - String getIdentityInsertDisableStatement(String tableName); - + //String getIdentityInsertDisableStatement(String tableName); /** * IDENTITYカラムに対するinsertを有効化するステートメントを取得する。 * * @param tableName テーブル名 * @return IDENTITYカラムに対するinsertを有効化するステートメント */ - String getIdentityInsertEnableStatement(String tableName); - + //String getIdentityInsertEnableStatement(String tableName); /** * 名前を取得する。 * @@ -220,53 +188,41 @@ * * @return 開始を表すクォート */ - String getOpenQuote(); - + //String getOpenQuote(); /** * シーケンス定義の断片を取得する。 * <p> * この断片は create sequence 以降に続きます。 * </p> * - * @param dataType - * データタイプ - * @param initialValue - * 初期値 - * @param allocationSize - * 割り当てサイズ - * @return + * @param dataType データタイプ + * @param initialValue 初期値 + * @param allocationSize 割り当てサイズ + * @return シーケンス定義の断片 */ - String getSequenceDefinitionFragment(String dataType, long initialValue, int allocationSize); - + //String getSequenceDefinitionFragment(String dataType, long initialValue, int allocationSize); /** * シーケンスの値を取得するSQLを取得する。 * - * @param sequenceName - * シーケンス名 - * @param allocationSize - * 割り当てサイズ + * @param sequenceName シーケンス名 + * @param allocationSize 割り当てサイズ * @return シーケンスの値を取得するSQL */ - String getSequenceNextValString(String sequenceName, int allocationSize); - + //String getSequenceNextValString(String sequenceName, int allocationSize); /** * SQLブロックの区切り文字を取得する。 * * @return SQLブロックの区切り文字、SQLブロックの区切り文字蛾存在しない場合{@code null} */ - String getSqlBlockDelimiter(); - + //String getSqlBlockDelimiter(); /** * SQL型を取得する。 * - * @param sqlType - * JDBCのSQL型 + * @param sqlType JDBCのSQL型 * @return SQL型 - * @throws UnsupportedSqlTypeRuntimeException - * サポートされていないJDBCのSQL型が渡された場合 + * @throws UnsupportedSqlTypeException サポートされていないJDBCのSQL型が渡された場合 */ - SqlType getSqlType(int sqlType) throws UnsupportedSqlTypeException; - + //SqlType getSqlType(int sqlType) throws UnsupportedSqlTypeException; /** * SQL型を取得する。 * @@ -294,37 +250,28 @@ * @return テーブルのコメント、存在しない場合{@code null} * @throws SQLException SQL例外が発生した場合 */ - String getTableComment(Connection connection, String catalogName, String schemaName, String tableName) - throws SQLException; - + //String getTableComment(Connection connection, String catalogName, String schemaName, String tableName) + // throws SQLException; /** * 列の値が自動的に増分される場合{@code true}を取得する。 * - * @param connection - * コネクション - * @param catalogName - * カタログ名 - * @param schemaName - * スキーマ名 - * @param tableName - * テーブル名 - * @param columnName - * カラム名 + * @param connection コネクション + * @param catalogName カタログ名 + * @param schemaName スキーマ名 + * @param tableName テーブル名 + * @param columnName カラム名 * @return 列が自動的に増分される場合{@code true}、そうでない場合{@code false} - * @throws SQLException - * SQL例外が発生した場合 + * @throws SQLException SQL例外が発生した場合 */ - boolean isAutoIncrement(Connection connection, String catalogName, String schemaName, String tableName, - String columnName) throws SQLException; - +// boolean isAutoIncrement(Connection connection, String catalogName, String schemaName, String tableName, +// String columnName) throws SQLException; /** * カラムが存在しない例外を表す場合{@code true}を取得する。 * * @param throwable 何らかの例外 * @return カラムが存在しない例外を表す場合{@code true} */ - boolean isColumnNotFound(Throwable throwable); - + //boolean isColumnNotFound(Throwable throwable); /** * JDBCのコメント取得機能が利用できる場合{@code true}を取得する。 * <p> @@ -337,46 +284,40 @@ * * @return JDBCのコメント取得機能が利用できる場合{@code true} */ - boolean isJdbcCommentAvailable(); - + //boolean isJdbcCommentAvailable(); /** * シーケンスが存在しない例外を表す場合{@code true}を取得する。 * * @param throwable 何らかの例外 * @return シーケンスが存在しない例外を表す場合{@code true} */ - boolean isSequenceNotFound(Throwable throwable); - + //boolean isSequenceNotFound(Throwable throwable); /** * テーブルが存在しない例外を表す場合{@code true}を取得する。 * * @param throwable 何らかの例外 * @return テーブルが存在しない例外を表す場合{@code true} */ - boolean isTableNotFound(Throwable throwable); - + //boolean isTableNotFound(Throwable throwable); /** * クォートで囲みます。 * * @param value 値 * @return クォートで囲まれた値 */ - String quote(String value); - + //String quote(String value); /** * CREATE TABLEでコメントをサポートする場合{@code true}を取得する。 * * @return コメントをサポートする場合{@code true} */ - boolean supportsCommentInCreateTable(); - + //boolean supportsCommentInCreateTable(); /** * COMMENT ONをサポートする場合{@code true}を取得する。 * * @return COMMENT ONをサポートする場合{@code true} */ - boolean supportsCommentOn(); - + //boolean supportsCommentOn(); /** * {@link DatabaseMetaData#getIndexInfo(String, String, String, boolean, boolean)} * をサポートする場合{@code true}を取得する。 @@ -387,8 +328,7 @@ * @return {@link DatabaseMetaData#getIndexInfo(String, String, String, boolean, boolean)} * をサポートする場合{@code true} */ - boolean supportsGetIndexInfo(String catalogName, String schemaName, String tableName); - + //boolean supportsGetIndexInfo(String catalogName, String schemaName, String tableName); /** * IDENTITYカラムをサポートしている場合{@code true}を取得する。 * @@ -401,48 +341,42 @@ * * @return IDENTITYカラムに対するinsertをサポートしている場合{@code true} */ - boolean supportsIdentityInsert(); - + //boolean supportsIdentityInsert(); /** * IDENTITYカラムに対するinsertの有効/無効を制御するステートメントをサポートしている場合{@code true}を取得する。 * * @return IDENTITYカラムに対するinsertをサポートしている場合{@code true} */ - boolean supportsIdentityInsertControlStatement(); - + //boolean supportsIdentityInsertControlStatement(); /** * NULLが可能な一意制約をサポートしている場合{@code true}を取得する。 * * @return NULLが可能な一意制約をサポートしている場合{@code true} */ - boolean supportsNullableUnique(); - + //boolean supportsNullableUnique(); /** * 参照整合制約の削除規則をサポートする場合{@code true}を取得する。 * * @return 参照整合制約の削除規則をサポートする場合{@code true} */ - boolean supportsReferentialDeleteRule(); - + //boolean supportsReferentialDeleteRule(); /** * 参照整合制約の更新規則をサポートする場合{@code true}を取得する。 * * @return 参照整合制約の更新規則をサポートする場合{@code true} */ - boolean supportsReferentialUpdateRule(); - + //boolean supportsReferentialUpdateRule(); /** * シーケンスをサポートする場合{@code true}を取得する。 * * @return シーケンスをサポートする場合{@code true}、しない場合{@code false} */ - boolean supportsSequence(); - + //boolean supportsSequence(); /** - * クォートを取り除きます。 + * クォートを除去する。 * * @param value 値 * @return クォートが取り除かれた値 */ - String unquote(String value); + //String unquote(String value); } Modified: leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/dialect/StandardGenDialect.java =================================================================== --- leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/dialect/StandardGenDialect.java 2009-04-15 04:55:22 UTC (rev 3282) +++ leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/dialect/StandardGenDialect.java 2009-04-15 05:16:24 UTC (rev 3283) @@ -18,20 +18,16 @@ package org.jiemamy.entity.io.gen.dialect; import java.math.BigDecimal; -import java.sql.Connection; import java.sql.SQLException; import java.sql.Timestamp; import java.sql.Types; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; import javax.persistence.GenerationType; import org.jiemamy.entity.io.utils.CaseInsensitiveMap; import org.jiemamy.entity.io.utils.ColumnUtil; -import org.jiemamy.utils.StringUtil; /** * 標準的な方言をあつかうクラスです。 @@ -153,66 +149,65 @@ } + /** * 標準の{@link StandardColumnType}の実装クラスです。 * * @author j5ik2o */ - public static class StandardSqlBlockContext implements SqlBlockContext { - - /** SQLブロックの開始を表すキーワードの連なりのリスト */ - protected List<List<String>> sqlBlockStartKeywordsList = new ArrayList<List<String>>(); - - /** 追加されたキーワードの連なり */ - protected List<String> keywords = new ArrayList<String>(); - - /** SQLブロックの内側の場合{@code true} */ - protected boolean inSqlBlock; - - - public void addKeyword(String keyword) { - if (!inSqlBlock) { - keywords.add(keyword); - check(); - } - } - - /** - * ブロックの内側かどうかチェックする。 - */ - protected void check() { - for (List<String> startKeywords : sqlBlockStartKeywordsList) { - if (startKeywords.size() > keywords.size()) { - continue; - } - for (int i = 0; i < startKeywords.size(); i++) { - String word1 = startKeywords.get(i); - String word2 = keywords.get(i); - inSqlBlock = word1.equalsIgnoreCase(word2); - if (!inSqlBlock) { - break; - } - } - if (inSqlBlock) { - break; - } - } - } - - public boolean isInSqlBlock() { - return inSqlBlock; - } - } - - +// public static class StandardSqlBlockContext implements SqlBlockContext { +// +// /** SQLブロックの開始を表すキーワードの連なりのリスト */ +// protected List<List<String>> sqlBlockStartKeywordsList = new ArrayList<List<String>>(); +// +// /** 追加されたキーワードの連なり */ +// protected List<String> keywords = new ArrayList<String>(); +// +// /** SQLブロックの内側の場合{@code true} */ +// protected boolean inSqlBlock; +// +// +// public void addKeyword(String keyword) { +// if (!inSqlBlock) { +// keywords.add(keyword); +// check(); +// } +// } +// +// /** +// * ブロックの内側かどうかチェックする。 +// */ +// protected void check() { +// for (List<String> startKeywords : sqlBlockStartKeywordsList) { +// if (startKeywords.size() > keywords.size()) { +// continue; +// } +// for (int i = 0; i < startKeywords.size(); i++) { +// String word1 = startKeywords.get(i); +// String word2 = keywords.get(i); +// inSqlBlock = word1.equalsIgnoreCase(word2); +// if (!inSqlBlock) { +// break; +// } +// } +// if (inSqlBlock) { +// break; +// } +// } +// } +// +// public boolean isInSqlBlock() { +// return inSqlBlock; +// } +// } /** SQL型をキー、{@link SqlType}を値とするマップ */ protected Map<Integer, SqlType> sqlTypeMap = new HashMap<Integer, SqlType>(); - /** カラムの型名をキー、{@link ColumnType}を値とするマップ */ + /** カラムの型名をキー、{@link GenDialect.ColumnType}を値とするマップ */ @SuppressWarnings("unchecked") protected Map<Object, ColumnType> columnTypeMap = new CaseInsensitiveMap(); - /** カラムのSQL型をキー、{@link ColumnType}を値とするマップ。 */ + /** カラムのSQL型をキー、{@link GenDialect.ColumnType}を値とするマップ。 */ protected Map<Integer, ColumnType> fallbackColumnTypeMap = new HashMap<Integer, ColumnType>(); @@ -283,9 +278,9 @@ fallbackColumnTypeMap.put(Types.VARCHAR, StandardColumnType.VARCHAR); } - public SqlBlockContext createSqlBlockContext() { - return new StandardSqlBlockContext(); - } +// public SqlBlockContext createSqlBlockContext() { +// return new StandardSqlBlockContext(); +// } /** * 例外チェーンをたどって原因となった{@link SQLException SQL例外}を取得する。 @@ -293,35 +288,31 @@ * 例外チェーンにSQL例外が存在しない場合は<code>null</code>を取得する。 * </p> * - * @param t - * 例外 + * @param t 例外 * @return 原因となった{@link SQLException SQL例外} */ - protected SQLException getCauseSQLException(Throwable t) { - SQLException cause = null; - while (t != null) { - if (t instanceof SQLException) { - cause = SQLException.class.cast(t); - if (cause.getNextException() != null) { - cause = cause.getNextException(); - t = cause; - continue; - } - } - t = t.getCause(); - } - return cause; - } - - public String getCloseQuote() { - return "\""; - } - - public Map<String, String> getColumnCommentMap(Connection connection, String catalogName, String schemaName, - String tableName) throws SQLException { - throw new UnsupportedOperationException("getColumnCommentMap"); - } - +// protected SQLException getCauseSQLException(Throwable t) { +// SQLException cause = null; +// while (t != null) { +// if (t instanceof SQLException) { +// cause = SQLException.class.cast(t); +// if (cause.getNextException() != null) { +// cause = cause.getNextException(); +// t = cause; +// continue; +// } +// } +// t = t.getCause(); +// } +// return cause; +// } +// public String getCloseQuote() { +// return "\""; +// } +// public Map<String, String> getColumnCommentMap(Connection connection, String catalogName, String schemaName, +// String tableName) throws SQLException { +// throw new UnsupportedOperationException("getColumnCommentMap"); +// } public ColumnType getColumnType(String typeName, int sqlType) { ColumnType columnType = columnTypeMap.get(typeName); return columnType != null ? columnType : fallbackColumnTypeMap.get(sqlType); @@ -331,18 +322,22 @@ return GenerationType.TABLE; } - public String getDefaultSchemaName(String userName) { - return userName; + public String getName() { + return null; } - public String getDropForeignKeySyntax() { - return "drop constraint"; - } - - public String getDropUniqueKeySyntax() { - return "drop constraint"; - } - + // public String getDefaultSchemaName(String userName) { +// return userName; +// } +// +// public String getDropForeignKeySyntax() { +// return "drop constraint"; +// } +// +// public String getDropUniqueKeySyntax() { +// return "drop constraint"; +// } +// /** * 例外チェーンをたどって原因となった{@link SQLException#getErrorCode() ベンダー固有の例外コード}を取得する。 * <p> @@ -353,46 +348,44 @@ * @param t 例外 * @return 原因となった{@link SQLException#getErrorCode() ベンダー固有の例外コード} */ - protected Integer getErrorCode(Throwable t) { - SQLException cause = getCauseSQLException(t); - if (cause != null) { - return cause.getErrorCode(); - } - return null; - } - - public String getIdentityColumnDefinition() { - throw new UnsupportedOperationException("getIdentityDefinition"); - } - - public String getIdentityInsertDisableStatement(String tableName) { - throw new UnsupportedOperationException("getIdentityInsertOffStatement"); - } - - public String getIdentityInsertEnableStatement(String tableName) { - throw new UnsupportedOperationException("getIdentityInsertOnStatement"); - } - - public String getName() { - return null; - } - - public String getOpenQuote() { - return "\""; - } - - public String getSequenceDefinitionFragment(String dataType, long initialValue, int allocationSize) { - throw new UnsupportedOperationException("getSequenceDefinitionFragment"); - } - - public String getSequenceNextValString(final String sequenceName, final int allocationSize) { - throw new UnsupportedOperationException("getSequenceNextValString"); - } - - public String getSqlBlockDelimiter() { - return null; - } - +// protected Integer getErrorCode(Throwable t) { +// SQLException cause = getCauseSQLException(t); +// if (cause != null) { +// return cause.getErrorCode(); +// } +// return null; +// } +// public String getIdentityColumnDefinition() { +// throw new UnsupportedOperationException("getIdentityDefinition"); +// } +// +// public String getIdentityInsertDisableStatement(String tableName) { +// throw new UnsupportedOperationException("getIdentityInsertOffStatement"); +// } +// +// public String getIdentityInsertEnableStatement(String tableName) { +// throw new UnsupportedOperationException("getIdentityInsertOnStatement"); +// } +// +// public String getName() { +// return null; +// } +// +// public String getOpenQuote() { +// return "\""; +// } +// +// public String getSequenceDefinitionFragment(String dataType, long initialValue, int allocationSize) { +// throw new UnsupportedOperationException("getSequenceDefinitionFragment"); +// } +// +// public String getSequenceNextValString(final String sequenceName, final int allocationSize) { +// throw new UnsupportedOperationException("getSequenceNextValString"); +// } +// +// public String getSqlBlockDelimiter() { +// return null; +// } /** * 例外チェーンをたどって原因となった{@link SQLException#getSQLState() SQLステート}を取得する。 * <p> @@ -403,24 +396,17 @@ * @param t 例外 * @return 原因となった{@link SQLException#getSQLState() SQLステート} */ - protected String getSQLState(Throwable t) { - SQLException cause = getCauseSQLException(t); - if (cause != null && !StringUtil.isEmpty(cause.getSQLState())) { - return cause.getSQLState(); - } - return null; - } - - public SqlType getSqlType(int sqlType) throws UnsupportedSqlTypeException { - return getSqlTypeInternal(sqlType); - } - -// public SqlType getSqlType(ValueTypeProvider valueTypeProvider, PropertyMeta propertyMeta) -// throws UnsupportedSqlTypeException { -// ValueType valueType = valueTypeProvider.provide(propertyMeta); -// return getSqlTypeInternal(valueType.getSqlType()); +// protected String getSQLState(Throwable t) { +// SQLException cause = getCauseSQLException(t); +// if (cause != null && !StringUtil.isEmpty(cause.getSQLState())) { +// return cause.getSQLState(); +// } +// return null; // } - +// +// public SqlType getSqlType(int sqlType) throws UnsupportedSqlTypeException { +// return getSqlTypeInternal(sqlType); +// } /** * 内部的にSQL型を取得する。 * @@ -428,90 +414,90 @@ * @return SQL型 * @throws UnsupportedSqlTypeException */ - protected SqlType getSqlTypeInternal(int sqlType) throws UnsupportedSqlTypeException { - SqlType type = sqlTypeMap.get(sqlType); - if (type != null) { - return type; - } - throw new UnsupportedSqlTypeException(sqlType); - } - - public String getTableComment(Connection connection, String catalogName, String schemaName, String tableName) - throws SQLException { - throw new UnsupportedOperationException("getTableComment"); - } - - public boolean isAutoIncrement(Connection connection, String catalogName, String schemaName, String tableName, - String columnName) throws SQLException { - return true; - } - - public boolean isColumnNotFound(Throwable throwable) { - return false; - } - - public boolean isJdbcCommentAvailable() { - return true; - } - - public boolean isSequenceNotFound(Throwable throwable) { - return false; - } - - public boolean isTableNotFound(Throwable throwable) { - return false; - } - - public String quote(String value) { - if (value == null) { - return null; - } - return getOpenQuote() + value + getCloseQuote(); - } - - public boolean supportsCommentInCreateTable() { - return false; - } - - public boolean supportsCommentOn() { - return false; - } - - public boolean supportsGetIndexInfo(String catalogName, String schemaName, String tableName) { - return true; - } - +// protected SqlType getSqlTypeInternal(int sqlType) throws UnsupportedSqlTypeException { +// SqlType type = sqlTypeMap.get(sqlType); +// if (type != null) { +// return type; +// } +// throw new UnsupportedSqlTypeException(sqlType); +// } +// @SuppressWarnings("unused") +// public String getTableComment(Connection connection, String catalogName, String schemaName, String tableName) +// throws SQLException { +// throw new UnsupportedOperationException("getTableComment"); +// } +// +// @SuppressWarnings("unused") +// public boolean isAutoIncrement(Connection connection, String catalogName, String schemaName, String tableName, +// String columnName) throws SQLException { +// return true; +// } +// +// public boolean isColumnNotFound(Throwable throwable) { +// return false; +// } +// +// public boolean isJdbcCommentAvailable() { +// return true; +// } +// +// public boolean isSequenceNotFound(Throwable throwable) { +// return false; +// } +// +// public boolean isTableNotFound(Throwable throwable) { +// return false; +// } +// +// public String quote(String value) { +// if (value == null) { +// return null; +// } +// return getOpenQuote() + value + getCloseQuote(); +// } +// +// public boolean supportsCommentInCreateTable() { +// return false; +// } +// +// public boolean supportsCommentOn() { +// return false; +// } +// +// public boolean supportsGetIndexInfo(String catalogName, String schemaName, String tableName) { +// return true; +// } public boolean supportsIdentity() { return false; } - public boolean supportsIdentityInsert() { - return false; - } +// public boolean supportsIdentityInsert() { +// return false; +// } +// +// public boolean supportsIdentityInsertControlStatement() { +// return false; +// } +// +// public boolean supportsNullableUnique() { +// return true; +// } +// +// public boolean supportsReferentialDeleteRule() { +// return true; +// } +// +// public boolean supportsReferentialUpdateRule() { +// return true; +// } +// +// public boolean supportsSequence() { +// return false; +// } +// +// public String unquote(String value) { +// String s = StringUtil.ltrim(value, getOpenQuote()); +// return StringUtil.rtrim(s, getCloseQuote()); +// } - public boolean supportsIdentityInsertControlStatement() { - return false; - } - - public boolean supportsNullableUnique() { - return true; - } - - public boolean supportsReferentialDeleteRule() { - return true; - } - - public boolean supportsReferentialUpdateRule() { - return true; - } - - public boolean supportsSequence() { - return false; - } - - public String unquote(String value) { - String s = StringUtil.ltrim(value, getOpenQuote()); - return StringUtil.rtrim(s, getCloseQuote()); - } - } Deleted: leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/dialect/UnsupportedSqlTypeException.java =================================================================== --- leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/dialect/UnsupportedSqlTypeException.java 2009-04-15 04:55:22 UTC (rev 3282) +++ leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/dialect/UnsupportedSqlTypeException.java 2009-04-15 05:16:24 UTC (rev 3283) @@ -1,72 +0,0 @@ -/* - * Copyright 2007-2009 Jiemamy Project and the Others. - * Created on Apr 14, 2009 - * - * This file is part of Jiemamy. - * - * 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.jiemamy.entity.io.gen.dialect; - -/** - * TODO for kato - * - * @author kato - */ - @ SuppressWarnings("serial") -public class UnsupportedSqlTypeException extends Exception { - - /** - * インスタンスを生成する。 - * - */ - public UnsupportedSqlTypeException() { - } - - /** - * インスタンスを生成する。 - * - * @param sqlType - */ - public UnsupportedSqlTypeException(int sqlType) { - } - - /** - * インスタンスを生成する。 - * - * @param message - */ - public UnsupportedSqlTypeException(String message) { - super(message); - } - - /** - * インスタンスを生成する。 - * - * @param message - * @param cause - */ - public UnsupportedSqlTypeException(String message, Throwable cause) { - super(message, cause); - } - - /** - * インスタンスを生成する。 - * - * @param cause - */ - public UnsupportedSqlTypeException(Throwable cause) { - super(cause); - } - -} Deleted: leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/dialect/ValueType.java =================================================================== --- leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/dialect/ValueType.java 2009-04-15 04:55:22 UTC (rev 3282) +++ leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/dialect/ValueType.java 2009-04-15 05:16:24 UTC (rev 3283) @@ -1,152 +0,0 @@ -/* - * Copyright 2007-2009 Jiemamy Project and the Others. - * - * This file is part of Jiemamy. - * - * 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.jiemamy.entity.io.gen.dialect; - -import java.sql.CallableStatement; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; - -/** - * S2JDBC用の値の型をあらわすインターフェースです。 - * - * @author j5ik2o - * - */ -public interface ValueType { - - /** - * 変数の値をバインドする。 - * - * @param cs - * ストアドプロシージャを表す文 - * @param parameterName - * パラメータ名 - * @param value - * 値 - * @throws SQLException - * SQL例外が発生した場合 - */ - void bindValue(CallableStatement cs, String parameterName, Object value) throws SQLException; - - /** - * 変数の値をバインドする。 - * - * @param ps - * 準備されたSQL文 - * @param index - * 位置 - * @param value - * 値 - * @throws SQLException - * SQL例外が発生した場合 - */ - void bindValue(PreparedStatement ps, int index, Object value) throws SQLException; - - /** - * JDBCのSQL型を取得する。 - * - * @return JDBCのSQL型 - */ - int getSqlType(); - - /** - * パラメータの値を取得する。 - * - * @param cs - * ストアドプロシージャを表す文 - * @param index - * 位置 - * @return パラメータの値 - * @throws SQLException - * SQL例外が発生した場合 - */ - Object getValue(CallableStatement cs, int index) throws SQLException; - - /** - * パラメータの値を取得する。 - * - * @param cs - * ストアドプロシージャを表す文 - * @param parameterName - * パラメータ名 - * @return パラメータの値 - * @throws SQLException - * SQL例外が発生した場合 - */ - Object getValue(CallableStatement cs, String parameterName) throws SQLException; - - /** - * カラムの値を取得する。 - * - * @param resultSet - * 結果セット - * @param index - * 位置 - * @return カラムの値 - * @throws SQLException - * SQL例外が発生した場合 - */ - Object getValue(ResultSet resultSet, int index) throws SQLException; - - /** - * カラムの値を取得する。 - * - * @param resultSet - * 結果セット - * @param columnName - * カラム名 - * @return カラムの値 - * @throws SQLException - * SQL例外が発生した場合 - */ - Object getValue(ResultSet resultSet, String columnName) throws SQLException; - - /** - * OUTパラメータを登録する。 - * - * @param cs - * ストアドプロシージャを表す文 - * @param index - * 位置 - * @throws SQLException - * SQL例外が発生した場合 - */ - void registerOutParameter(CallableStatement cs, int index) throws SQLException; - - /** - * OUTパラメータを登録する。 - * - * @param cs - * ストアドプロシージャを表す文 - * @param parameterName - * パラメータ名 - * @throws SQLException - * SQL例外が発生した場合 - */ - void registerOutParameter(CallableStatement cs, String parameterName) throws SQLException; - - /** - * 変数の値を文字列表現に変換する。 - * - * @param value - * 値 - * @return 値の文字列表現 - */ - String toText(Object value); -} Added: leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/meta/impl/DbTableMetaReaderImpl.java =================================================================== --- leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/meta/impl/DbTableMetaReaderImpl.java (rev 0) +++ leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/meta/impl/DbTableMetaReaderImpl.java 2009-04-15 05:16:24 UTC (rev 3283) @@ -0,0 +1,458 @@ +/* + * Copyright 2004-2009 the Seasar Foundation and the Others. + * + * 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.jiemamy.entity.io.gen.meta.impl; + +import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.regex.Pattern; + +import javax.sql.DataSource; + +import org.jiemamy.entity.io.gen.dialect.GenDialect; +import org.jiemamy.entity.io.gen.meta.DbColumnMeta; +import org.jiemamy.entity.io.gen.meta.DbForeignKeyMeta; +import org.jiemamy.entity.io.gen.meta.DbTableMeta; +import org.jiemamy.entity.io.gen.meta.DbTableMetaReader; +import org.jiemamy.entity.io.gen.meta.DbUniqueKeyMeta; + +/** + * {@code DbTableMetaReader}の実装クラスです。 + * + * @author taedium + */ +public class DbTableMetaReaderImpl implements DbTableMetaReader { + + /** ロガー */ + + /** データソース */ + protected DataSource dataSource; + + /** 方言 */ + protected GenDialect dialect; + + /** スキーマ名 */ + protected String schemaName; + + /** 読み取り対象とするテーブル名のパターン */ + protected Pattern tableNamePattern; + + /** 読み取り非対象とするテーブル名のパターン */ + protected Pattern ignoreTableNamePattern; + + /** コメントを読む場合{@code true} */ + protected boolean readComment; + + + /** + * インスタンスを構築します。 + * + * @param dataSource + * データソース + * @param dialect + * 方言 + * @param schemaName + * スキーマ名、デフォルトのスキーマ名を表す場合は{@code null} + * @param tableNamePattern + * 対象とするテーブル名の正規表現 + * @param ignoreTableNamePattern + * 対象としないテーブル名の正規表現 + * @param readComment + * コメントを読む場合{@code true} + */ + public DbTableMetaReaderImpl(DataSource dataSource, GenDialect dialect, String schemaName, String tableNamePattern, + String ignoreTableNamePattern, boolean readComment) { + if (dataSource == null) { + throw new NullPointerException("dataSource"); + } + if (dialect == null) { + throw new NullPointerException("dialect"); + } + if (tableNamePattern == null) { + throw new NullPointerException("tableNamePattern"); + } + if (ignoreTableNamePattern == null) { + throw new NullPointerException("ignoreTableNamePattern"); + } + this.dataSource = dataSource; + this.dialect = dialect; + this.schemaName = schemaName; + this.tableNamePattern = Pattern.compile(tableNamePattern, Pattern.CASE_INSENSITIVE); + this.ignoreTableNamePattern = Pattern.compile(ignoreTableNamePattern, Pattern.CASE_INSENSITIVE); + this.readComment = readComment; + } + + /** + * カラムメタデータを処理します。 + * + * @param metaData + * データベースメタデータ + * @param tableMeta + * テーブルメタデータ + * @param primaryKeySet + * 主キーのセット + */ + protected void doDbColumnMeta(DatabaseMetaData metaData, DbTableMeta tableMeta, Set<String> primaryKeySet) { + for (DbColumnMeta columnMeta : getDbColumnMetaList(metaData, tableMeta)) { + if (primaryKeySet.contains(columnMeta.getName())) { + columnMeta.setPrimaryKey(true); + if (primaryKeySet.size() == 1) { + columnMeta.setAutoIncrement(isAutoIncrement(metaData, tableMeta, columnMeta.getName())); + } + } + for (DbUniqueKeyMeta ukMeta : tableMeta.getUniqueKeyMetaList()) { + if (ukMeta.getColumnNameList().size() == 1) { + String ukColumnName = ukMeta.getColumnNameList().get(0); + if (columnMeta.getName().equals(ukColumnName)) { + columnMeta.setUnique(true); + } + } + } + tableMeta.addColumnMeta(columnMeta); + } + } + + /** + * 外部キーメタデータを処理します。 + * + * @param metaData + * データベースメタデータ + * @param tableMeta + * テーブルメタデータ + */ + protected void doDbForeignKeyMeta(DatabaseMetaData metaData, DbTableMeta tableMeta) { + for (DbForeignKeyMeta fkMeta : getDbForeignKeyMetaList(metaData, tableMeta)) { + for (DbUniqueKeyMeta ukMeta : tableMeta.getUniqueKeyMetaList()) { + if (fkMeta.getForeignKeyColumnNameList().equals(ukMeta.getColumnNameList())) { + fkMeta.setUnique(true); + } + } + tableMeta.addForeignKeyMeta(fkMeta); + } + } + + /** + * 一意キーメタデータを処理します。 + * + * @param metaData + * データベースメタデータ + * @param tableMeta + * テーブルメタデータ + * @param primaryKeySet + * 主キーのセット + */ + protected void doDbUniqueKeyMeta(DatabaseMetaData metaData, DbTableMeta tableMeta, Set<String> primaryKeySet) { + for (DbUniqueKeyMeta ukMeta : getDbUniqueKeyMetaList(metaData, tableMeta)) { + if (primaryKeySet.size() == ukMeta.getColumnNameList().size() + && primaryKeySet.containsAll(ukMeta.getColumnNameList())) { + ukMeta.setPrimaryKey(true); + } + tableMeta.addUniqueKeyMeta(ukMeta); + } + } + + /** + * カラムメタデータのリストを返します。 + * + * @param metaData データベースメタデータ + * @param tableMeta テーブルメタデータ + * + * @return カラムメタデータのリスト + */ + protected List<DbColumnMeta> getDbColumnMetaList(DatabaseMetaData metaData, DbTableMeta tableMeta) { + List<DbColumnMeta> result = new ArrayList<DbColumnMeta>(); +// try { +// ResultSet rs = +// metaData.getColumns(tableMeta.getCatalogName(), tableMeta.getSchemaName(), tableMeta.getName(), +// null); +// try { +// while (rs.next()) { +// DbColumnMeta columnDesc = new DbColumnMeta(); +// columnDesc.setName(rs.getString("COLUMN_NAME")); +// columnDesc.setSqlType(rs.getInt("DATA_TYPE")); +// columnDesc.setTypeName(rs.getString("TYPE_NAME")); +// columnDesc.setLength(rs.getInt("COLUMN_SIZE")); +// columnDesc.setScale(rs.getInt("DECIMAL_DIGITS")); +// columnDesc.setNullable(rs.getBoolean("NULLABLE")); +// columnDesc.setDefaultValue(rs.getString("COLUMN_DEF")); +// if (readComment) { +// columnDesc.setComment(rs.getString("REMARKS")); +// } +// result.add(columnDesc); +// } +// return result; +// } finally { +// ResultSetUtil.close(rs); +// } +// } catch (SQLException ex) { +// throw new SQLRuntimeException(ex); +// } + return result; + } + + /** + * 外部キーメタデータのリストを返します。 + * + * @param metaData データベースメタデータ + * @param tableMeta テーブルメタデータ + * @return 外部キーメタデータのリスト + */ + protected List<DbForeignKeyMeta> getDbForeignKeyMetaList(DatabaseMetaData metaData, DbTableMeta tableMeta) { + return null; +// @SuppressWarnings("unchecked") +// Map<String, DbForeignKeyMeta> map = new ArrayMap(); +// try { +// ResultSet rs = +// metaData +// .getImportedKeys(tableMeta.getCatalogName(), tableMeta.getSchemaName(), tableMeta.getName()); +// try { +// while (rs.next()) { +// String name = rs.getString("FK_NAME"); +// if (!map.containsKey(name)) { +// DbForeignKeyMeta fkMeta = new DbForeignKeyMeta(); +// fkMeta.setName(name); +// fkMeta.setPrimaryKeyCatalogName(rs.getString("PKTABLE_CAT")); +// fkMeta.setPrimaryKeySchemaName(rs.getString("PKTABLE_SCHEM")); +// fkMeta.setPrimaryKeyTableName(rs.getString("PKTABLE_NAME")); +// map.put(name, fkMeta); +// } +// DbForeignKeyMeta fkMeta = map.get(name); +// fkMeta.addPrimaryKeyColumnName(rs.getString("PKCOLUMN_NAME")); +// fkMeta.addForeignKeyColumnName(rs.getString("FKCOLUMN_NAME")); +// } +// } finally { +// ResultSetUtil.close(rs); +// } +// DbForeignKeyMeta[] array = map.values().toArray(new DbForeignKeyMeta[map.size()]); +// return Arrays.asList(array); +// } catch (SQLException ex) { +// throw new SQLRuntimeException(ex); +// } + } + + /** + * テーブルメタデータのリストを返します。 + * + * @param metaData データベースメタデータ + * @param schemaName スキーマ名 + * @return テーブルメタデータのリスト + */ + protected List<DbTableMeta> getDbTableMetaList(DatabaseMetaData metaData, String schemaName) { + List<DbTableMeta> result = new ArrayList<DbTableMeta>(); +// try { +// ResultSet rs = metaData.getTables(null, schemaName, null, new String[] { +// "TABLE" +// }); +// try { +// while (rs.next()) { +// DbTableMeta dbTableMeta = new DbTableMeta(); +// dbTableMeta.setCatalogName(rs.getString("TABLE_CAT")); +// dbTableMeta.setSchemaName(rs.getString("TABLE_SCHEM")); +// dbTableMeta.setName(rs.getString("TABLE_NAME")); +// if (readComment) { +// dbTableMeta.setComment(rs.getString("REMARKS")); +// } +// if (isTargetTable(dbTableMeta)) { +// result.add(dbTableMeta); +// } +// } +// return result; +// } finally { +// ResultSetUtil.close(rs); +// } +// } catch (SQLException e) { +// throw new SQLRuntimeException(e); +// } + return result; + } + + /** + * 一意キーメタデータのリストを返します。 + * + * @param metaData データベースメタデータ + * @param tableMeta テーブルメタデータ + * @return 一意キーメタデータのリスト + */ + protected List<DbUniqueKeyMeta> getDbUniqueKeyMetaList(DatabaseMetaData metaData, DbTableMeta tableMeta) { + return null; +// if (!dialect.supportsGetIndexInfo(tableMeta.getCatalogName(), tableMeta.getSchemaName(), tableMeta.getName())) { +// logger.log("WS2JDBCGen0002", new Object[] { +// tableMeta.getCatalogName(), +// tableMeta.getSchemaName(), +// tableMeta.getName() +// }); +// return Collections.emptyList(); +// } +// +// @SuppressWarnings("unchecked") +// Map<String, DbUniqueKeyMeta> map = new ArrayMap(); +// try { +// ResultSet rs = +// metaData.getIndexInfo(tableMeta.getCatalogName(), tableMeta.getSchemaName(), tableMeta.getName(), +// true, false); +// try { +// while (rs.next()) { +// String name = rs.getString("INDEX_NAME"); +// if (!map.containsKey(name)) { +// DbUniqueKeyMeta ukMeta = new DbUniqueKeyMeta(); +// ukMeta.setName(name); +// map.put(name, ukMeta); +// } +// DbUniqueKeyMeta ukMeta = map.get(name); +// ukMeta.addColumnName(rs.getString("COLUMN_NAME")); +// } +// } finally { +// ResultSetUtil.close(rs); +// } +// DbUniqueKeyMeta[] array = map.values().toArray(new DbUniqueKeyMeta[map.size()]); +// return Arrays.asList(array); +// } catch (SQLException ex) { +// throw new SQLRuntimeException(ex); +// } + } + + /** + * デフォルトのスキーマ名を返します。 + * + * @param metaData データベースメタデータ + * @return デフォルトのスキーマ名 + */ + protected String getDefaultSchemaName(DatabaseMetaData metaData) { +// String userName = DatabaseMetaDataUtil.getUserName(metaData); +// return dialect.getDefaultSchemaName(userName); + return null; + } + + /** + * 主キーのセットを返します。 + * + * @param metaData データベースメタデータ + * @param tableMeta + * テーブルメタデータ + * @return 主キーのセット + */ + protected Set<String> getPrimaryKeySet(DatabaseMetaData metaData, DbTableMeta tableMeta) { + Set<String> result = new HashSet<String>(); +// try { +// ResultSet rs = +// metaData.getPrimaryKeys(tableMeta.getCatalogName(), tableMeta.getSchemaName(), tableMeta.getName()); +// try { +// while (rs.next()) { +// result.add(rs.getString("COLUMN_NAME")); +// } +// } finally { +// ResultSetUtil.close(rs); +// } +// return result; +// } catch (SQLException ex) { +// throw new SQLRuntimeException(ex); +// } + return result; + } + + /** + * 列の値が自動的に増分される場合{@code true}を返します。 + * + * @param metaData データベースメタデータ + * @param tableMeta テーブルメタデータ + * @param columnName カラム名 + * @return 列が自動的に増分される場合{@code true}、そうでない場合{@code false} + */ + protected boolean isAutoIncrement(DatabaseMetaData metaData, DbTableMeta tableMeta, String columnName) { +// try { +// return dialect.isAutoIncrement(metaData.getConnection(), tableMeta.getCatalogName(), tableMeta +// .getSchemaName(), tableMeta.getName(), columnName); +// } catch (SQLException ex) { +// throw new SQLRuntimeException(ex); +// } + return false; + } + + /** + * 読み取り対象のテーブルの場合{@code true}を返します。 + * + * @param dbTableMeta テーブルメタデータ + * @return 読み取り対象のテーブルの場合{@code true} + */ + protected boolean isTargetTable(DbTableMeta dbTableMeta) { + String name = dbTableMeta.getName(); + if (!tableNamePattern.matcher(name).matches()) { + return false; + } + if (ignoreTableNamePattern.matcher(name).matches()) { + return false; + } + return true; + } + + public List<DbTableMeta> read() { + return null; +// Connection con = DataSourceUtil.getConnection(dataSource); +// try { +// DatabaseMetaData metaData = ConnectionUtil.getMetaData(con); +// List<DbTableMeta> dbTableMetaList = +// getDbTableMetaList(metaData, schemaName != null ? schemaName : getDefaultSchemaName(metaData)); +// if (dbTableMetaList.isEmpty()) { +// throw new TableNotFoundRuntimeException(dialect.getClass().getName(), schemaName, tableNamePattern +// .pattern(), ignoreTableNamePattern.pattern()); +// } +// for (DbTableMeta tableMeta : dbTableMetaList) { +// Set<String> primaryKeySet = getPrimaryKeySet(metaData, tableMeta); +// doDbUniqueKeyMeta(metaData, tableMeta, primaryKeySet); +// doDbColumnMeta(metaData, tableMeta, primaryKeySet); +// doDbForeignKeyMeta(metaData, tableMeta); +// } +// if (readComment && !dialect.isJdbcCommentAvailable()) { +// readCommentFromDictinary(con, dbTableMetaList); +// } +// return dbTableMetaList; +// } finally { +// ConnectionUtil.close(con); +// } + } + + /** + * コメントをデータベースのディクショナリから直接取得します。 + * + * @param connection コネクション + * @param dbTableMetaList テーブルメタデータのリスト + */ + protected void readCommentFromDictinary(Connection connection, List<DbTableMeta> dbTableMetaList) { +// try { +// for (DbTableMeta tableMeta : dbTableMetaList) { +// String tableComment = +// dialect.getTableComment(connection, tableMeta.getCatalogName(), tableMeta.getSchemaName(), +// tableMeta.getName()); +// tableMeta.setComment(tableComment); +// Map<String, String> columnCommentMap = +// dialect.getColumnCommentMap(connection, tableMeta.getCatalogName(), tableMeta.getSchemaName(), +// tableMeta.getName()); +// for (DbColumnMeta columnMeta : tableMeta.getColumnMetaList()) { +// String columnName = columnMeta.getName(); +// if (columnCommentMap.containsKey(columnName)) { +// String columnComment = columnCommentMap.get(columnName); +// columnMeta.setComment(columnComment); +// } +// } +// } +// } catch (SQLException e) { +// throw new SQLRuntimeException(e); +// } + } +} Property changes on: leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/gen/meta/impl/DbTableMetaReaderImpl.java ___________________________________________________________________ Added: svn:mime-type + text/plain Copied: leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/DefaultEntityDescWriterContext.java (from rev 3270, leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/DefaultEntityMetaWriterContext.java) =================================================================== --- leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/DefaultEntityDescWriterContext.java (rev 0) +++ leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/DefaultEntityDescWriterContext.java 2009-04-15 05:16:24 UTC (rev 3283) @@ -0,0 +1,402 @@ +/* + * Copyright 2007-2009 Jiemamy Project and the Others. + * Created on Apr 14, 2009 + * + * This file is part of Jiemamy. + * + * 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.jiemamy.entity.io.meta; + +import java.io.File; +import java.util.regex.Pattern; + +import javax.persistence.GenerationType; + +import org.jiemamy.entity.io.convensition.PersistenceConvention; +import org.jiemamy.entity.io.gen.dialect.GenDialect; +import org.jiemamy.entity.io.gen.meta.DbTableMetaReader; + +/** + * TODO for kato + * + * @author kato + */ +public class DefaultEntityDescWriterContext implements EntityDescWriterContext { + + private Integer allocationSize; + + private GenerationType idGenerationType; + + private Integer initialValue; + + private File javaSrcFileDestDir; + + private String entityPackageName; + + private String javaSrcFileEncoding; + + private boolean overwrite; + + private String rootPackageName; + + private boolean applyDbCommentToJava; + + private boolean useTemporalType; + + private boolean useAccessor; + + private boolean showTableName; + + private String schemaName; + + private Pattern tableNamePattern; + + private String templateFileEncoding; + + private File templateFilePrimaryDir; + + private String templateName; + + private Pattern versionColumnNamePattern; + + private boolean showCatalogName; + + private boolean showColumnDefinition; + + private Pattern ignoreTableNamePattern; + + private boolean showColumnName; + + private boolean showJoinColumn; + + private boolean showSchemaName; + + private Class<?> entitySuperClass; + + private GenDialect dialect; + + + public Integer getAllocationSize() { + return allocationSize; + } + + public DbTableMetaReader getDbTableMetaReader() { + // TODO Auto-generated method stub + return null; + } + + public GenDialect getDialect() { + return dialect; + } + + public String getEntityPackageName() { + return entityPackageName; + } + + public Class<?> getEntitySuperClass() { + return entitySuperClass; + } + + public GenerationType getIdGenerationType() { + return idGenerationType; + } + + public Pattern getIgnoreTableNamePattern() { + return ignoreTableNamePattern; + } + + public Integer getInitialValue() { + return initialValue; + } + + public File getJavaSrcFileDestDir() { + return javaSrcFileDestDir; + } + + public String getJavaSrcFileEncoding() { + return javaSrcFileEncoding; + } + + public PersistenceConvention getPersistenceConvention() { + // TODO Auto-generated method stub + return null; + } + + public File getPluralFormFile() { + // TODO Auto-generated method stub + return null; + } + + public String getRootPackageName() { + return rootPackageName; + } + + public String getSchemaName() { + return schemaName; + } + + public Pattern getTableNamePattern() { + return tableNamePattern; + } + + public String getTemplateFileEncoding() { + return templateFileEncoding; + } + + public File getTemplateFilePrimaryDir() { + return templateFilePrimaryDir; + } + + public String getTemplateName() { + return templateName; + } + + public Pattern getVersionColumnNamePattern() { + return versionColumnNamePattern; + } + + public boolean isApplyDbCommentToJava() { + return applyDbCommentToJava; + } + + public boolean isOverwrite() { + return overwrite; + } + + public boolean isShowCatalogName() { + return showCatalogName; + } + + public boolean isShowColumnDefinition() { + return showColumnDefinition; + } + + public boolean isShowColumnName() { + return showColumnName; + } + + public boolean isShowJoinColumn() { + return showJoinColumn; + } + + public boolean isShowSchemaName() { + return showSchemaName; + } + + public boolean isShowTableName() { + return showTableName; + } + + public boolean isUseAccessor() { + return useAccessor; + } + + public boolean isUseTemporalType() { + return useTemporalType; + } + + /** + * TODO for kato + * + * @param allocationSize + */ + public void setAllocationSize(Integer allocationSize) { + this.allocationSize = allocationSize; + } + + /** + * TODO for kato + * + * @param applyDbCommentToJava + */ + public void setApplyDbCommentToJava(boolean applyDbCommentToJava) { + this.applyDbCommentToJava = applyDbCommentToJava; + } + + public void setDialect(GenDialect dialect) { + this.dialect = dialect; + } + + /** + * TODO for kato + * + * @param entityPackageName + */ + public void setEntityPackageName(String entityPackageName) { + this.entityPackageName = entityPackageName; + } + + /** + * TODO for kato + * + * @param idGenerationType + */ + public void setIdGenerationType(GenerationType idGenerationType) { + this.idGenerationType = idGenerationType; + } + + /** + * TODO for kato + * + * @param ignoreTableNamePattern + */ + public void setIgnoreTableNamePattern(Pattern ignoreTableNamePattern) { + this.ignoreTableNamePattern = ignoreTableNamePattern; + } + + /** + * TODO for kato + * + * @param initialValue + */ + public void setInitialValue(Integer initialValue) { + this.initialValue = initialValue; + } + + /** + * TODO for kato + * + * @param javaSrcFileDestDir + */ + public void setJavaSrcFileDestDir(File javaSrcFileDestDir) { + this.javaSrcFileDestDir = javaSrcFileDestDir; + } + + /** + * TODO for kato + * + * @param javaSrcFileEncoding + */ + public void setJavaSrcFileEncoding(String javaSrcFileEncoding) { + this.javaSrcFileEncoding = javaSrcFileEncoding; + } + + /** + * TODO for kato + * + * @param overwrite + */ + public void setOverwrite(boolean overwrite) { + this.overwrite = overwrite; + } + + /** + * TODO for kato + * + * @param rootPackageName + */ + public void setRootPackageName(String rootPackageName) { + this.rootPackageName = rootPackageName; + } + + /** + * TODO for kato + * + * @param schemaName + */ + public void setSchemaName(String schemaName) { + this.schemaName = schemaName; + } + + /** + * TODO for kato + * + * @param showCatalogName + */ + public void setShowCatalogName(boolean showCatalogName) { + this.showCatalogName = showCatalogName; + } + + /** + * TODO for kato + * + * @param showColumnDefinition + */ + public void setShowColumnDefinition(boolean showColumnDefinition) { + this.showColumnDefinition = showColumnDefinition; + } + + /** + * TODO for kato + * + * @param showTableName + */ + public void setShowTableName(boolean showTableName) { + this.showTableName = showTableName; + } + + /** + * TODO for kato + * + * @param tableNamePattern + */ + public void setTableNamePattern(Pattern tableNamePattern) { + this.tableNamePattern = tableNamePattern; + } + + /** + * TODO for kato + * + * @param templateFileEncoding + */ + public void setTemplateFileEncoding(String templateFileEncoding) { + this.templateFileEncoding = templateFileEncoding; + } + + /** + * TODO for kato + * + * @param templateFilePrimaryDir + */ + public void setTemplateFilePrimaryDir(File templateFilePrimaryDir) { + this.templateFilePrimaryDir = templateFilePrimaryDir; + } + + /** + * TODO for kato + * + * @param templateName + */ + public void setTemplateName(String templateName) { + this.templateName = templateName; + } + + /** + * TODO for kato + * + * @param useAccessor + */ + public void setUseAccessor(boolean useAccessor) { + this.useAccessor = useAccessor; + } + + /** + * TODO for kato + * + * @param useTemporalType + */ + public void setUseTemporalType(boolean useTemporalType) { + this.useTemporalType = useTemporalType; + } + + /** + * TODO for kato + * + * @param versionColumnNamePattern + */ + public void setVersionColumnNamePattern(Pattern versionColumnNamePattern) { + this.versionColumnNamePattern = versionColumnNamePattern; + } + +} Property changes on: leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/DefaultEntityDescWriterContext.java ___________________________________________________________________ Added: svn:mime-type + text/plain Copied: leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/DefaultEntityDescWriterFactory.java (from rev 3270, leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/DefaultEntityMetaWriterFactory.java) =================================================================== --- leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/DefaultEntityDescWriterFactory.java (rev 0) +++ leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/DefaultEntityDescWriterFactory.java 2009-04-15 05:16:24 UTC (rev 3283) @@ -0,0 +1,41 @@ +/* + * Copyright 2007-2009 Jiemamy Project and the Others. + * Created on Apr 13, 2009 + * + * This file is part of Jiemamy. + * + * 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.jiemamy.entity.io.meta; + +import java.io.IOException; + +import org.apache.commons.lang.Validate; + +import org.jiemamy.entity.io.gen.desc.impl.IdentityNotSupportedException; +import org.jiemamy.entity.io.meta.impl.EntityDescWriterImpl; + +/** + * {@link EntityMetaWriterFactory}の実装クラス。 + * + * @author j5ik2o + */ +public class DefaultEntityDescWriterFactory implements EntityMetaWriterFactory { + + public EntityDescWriter createEntityMetaWriter(EntityDescWriterContext entityDescWriterContext) + throws IdentityNotSupportedException, IOException { + Validate.notNull(entityDescWriterContext); + return new EntityDescWriterImpl(entityDescWriterContext); + } + +} Property changes on: leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/DefaultEntityDescWriterFactory.java ___________________________________________________________________ Added: svn:mime-type + text/plain Deleted: leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/DefaultEntityMetaWriterContext.java =================================================================== --- leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/DefaultEntityMetaWriterContext.java 2009-04-15 04:55:22 UTC (rev 3282) +++ leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/DefaultEntityMetaWriterContext.java 2009-04-15 05:16:24 UTC (rev 3283) @@ -1,385 +0,0 @@ -/* - * Copyright 2007-2009 Jiemamy Project and the Others. - * Created on Apr 14, 2009 - * - * This file is part of Jiemamy. - * - * 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.jiemamy.entity.io.meta; - -import java.io.File; -import java.util.regex.Pattern; - -import javax.persistence.GenerationType; - -import org.jiemamy.entity.io.gen.dialect.GenDialect; - -/** - * TODO for kato - * - * @author kato - */ -public class DefaultEntityMetaWriterContext implements EntityMetaWriterContext { - - private Integer allocationSize; - - private GenerationType idGenerationType; - - private Integer initialValue; - - private File javaSrcFileDestDir; - - private String entityPackageName; - - private String javaSrcFileEncoding; - - private boolean overwrite; - - private String rootPackageName; - - private boolean applyDbCommentToJava; - - private boolean useTemporalType; - - private boolean useAccessor; - - private boolean showTableName; - - private String schemaName; - - private Pattern tableNamePattern; - - private String templateFileEncoding; - - private File templateFilePrimaryDir; - - private String templateName; - - private Pattern versionColumnNamePattern; - - private boolean showCatalogName; - - private boolean showColumnDefinition; - - private Pattern ignoreTableNamePattern; - - private boolean showColumnName; - - private boolean showJoinColumn; - - private boolean showSchemaName; - - private Class<?> entitySuperClass; - - private GenDialect dialect; - - - public Integer getAllocationSize() { - return allocationSize; - } - - public GenDialect getDialect() { - return dialect; - } - - public String getEntityPackageName() { - return entityPackageName; - } - - public Class<?> getEntitySuperClass() { - return entitySuperClass; - } - - public GenerationType getIdGenerationType() { - return idGenerationType; - } - - public Pattern getIgnoreTableNamePattern() { - return ignoreTableNamePattern; - } - - public Integer getInitialValue() { - return initialValue; - } - - public File getJavaSrcFileDestDir() { - return javaSrcFileDestDir; - } - - public String getJavaSrcFileEncoding() { - return javaSrcFileEncoding; - } - - public String getRootPackageName() { - return rootPackageName; - } - - public String getSchemaName() { - return schemaName; - } - - public Pattern getTableNamePattern() { - return tableNamePattern; - } - - public String getTemplateFileEncoding() { - return templateFileEncoding; - } - - public File getTemplateFilePrimaryDir() { - return templateFilePrimaryDir; - } - - public String getTemplateName() { - return templateName; - } - - public Pattern getVersionColumnNamePattern() { - return versionColumnNamePattern; - } - - public boolean isApplyDbCommentToJava() { - return applyDbCommentToJava; - } - - public boolean isOverwrite() { - return overwrite; - } - - public boolean isShowCatalogName() { - return showCatalogName; - } - - public boolean isShowColumnDefinition() { - return showColumnDefinition; - } - - public boolean isShowColumnName() { - return showColumnName; - } - - public boolean isShowJoinColumn() { - return showJoinColumn; - } - - public boolean isShowSchemaName() { - return showSchemaName; - } - - public boolean isShowTableName() { - return showTableName; - } - - public boolean isUseAccessor() { - return useAccessor; - } - - public boolean isUseTemporalType() { - return useTemporalType; - } - - /** - * TODO for kato - * - * @param allocationSize - */ - public void setAllocationSize(Integer allocationSize) { - this.allocationSize = allocationSize; - } - - /** - * TODO for kato - * - * @param applyDbCommentToJava - */ - public void setApplyDbCommentToJava(boolean applyDbCommentToJava) { - this.applyDbCommentToJava = applyDbCommentToJava; - } - - public void setDialect(GenDialect dialect) { - this.dialect = dialect; - } - - /** - * TODO for kato - * - * @param entityPackageName - */ - public void setEntityPackageName(String entityPackageName) { - this.entityPackageName = entityPackageName; - } - - /** - * TODO for kato - * - * @param idGenerationType - */ - public void setIdGenerationType(GenerationType idGenerationType) { - this.idGenerationType = idGenerationType; - } - - /** - * TODO for kato - * - * @param ignoreTableNamePattern - */ - public void setIgnoreTableNamePattern(Pattern ignoreTableNamePattern) { - this.ignoreTableNamePattern = ignoreTableNamePattern; - } - - /** - * TODO for kato - * - * @param initialValue - */ - public void setInitialValue(Integer initialValue) { - this.initialValue = initialValue; - } - - /** - * TODO for kato - * - * @param javaSrcFileDestDir - */ - public void setJavaSrcFileDestDir(File javaSrcFileDestDir) { - this.javaSrcFileDestDir = javaSrcFileDestDir; - } - - /** - * TODO for kato - * - * @param javaSrcFileEncoding - */ - public void setJavaSrcFileEncoding(String javaSrcFileEncoding) { - this.javaSrcFileEncoding = javaSrcFileEncoding; - } - - /** - * TODO for kato - * - * @param overwrite - */ - public void setOverwrite(boolean overwrite) { - this.overwrite = overwrite; - } - - /** - * TODO for kato - * - * @param rootPackageName - */ - public void setRootPackageName(String rootPackageName) { - this.rootPackageName = rootPackageName; - } - - /** - * TODO for kato - * - * @param schemaName - */ - public void setSchemaName(String schemaName) { - this.schemaName = schemaName; - } - - /** - * TODO for kato - * - * @param showCatalogName - */ - public void setShowCatalogName(boolean showCatalogName) { - this.showCatalogName = showCatalogName; - } - - /** - * TODO for kato - * - * @param showColumnDefinition - */ - public void setShowColumnDefinition(boolean showColumnDefinition) { - this.showColumnDefinition = showColumnDefinition; - } - - /** - * TODO for kato - * - * @param showTableName - */ - public void setShowTableName(boolean showTableName) { - this.showTableName = showTableName; - } - - /** - * TODO for kato - * - * @param tableNamePattern - */ - public void setTableNamePattern(Pattern tableNamePattern) { - this.tableNamePattern = tableNamePattern; - } - - /** - * TODO for kato - * - * @param templateFileEncoding - */ - public void setTemplateFileEncoding(String templateFileEncoding) { - this.templateFileEncoding = templateFileEncoding; - } - - /** - * TODO for kato - * - * @param templateFilePrimaryDir - */ - public void setTemplateFilePrimaryDir(File templateFilePrimaryDir) { - this.templateFilePrimaryDir = templateFilePrimaryDir; - } - - /** - * TODO for kato - * - * @param templateName - */ - public void setTemplateName(String templateName) { - this.templateName = templateName; - } - - /** - * TODO for kato - * - * @param useAccessor - */ - public void setUseAccessor(boolean useAccessor) { - this.useAccessor = useAccessor; - } - - /** - * TODO for kato - * - * @param useTemporalType - */ - public void setUseTemporalType(boolean useTemporalType) { - this.useTemporalType = useTemporalType; - } - - /** - * TODO for kato - * - * @param versionColumnNamePattern - */ - public void setVersionColumnNamePattern(Pattern versionColumnNamePattern) { - this.versionColumnNamePattern = versionColumnNamePattern; - } - -} Deleted: leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/DefaultEntityMetaWriterFactory.java =================================================================== --- leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/DefaultEntityMetaWriterFactory.java 2009-04-15 04:55:22 UTC (rev 3282) +++ leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/DefaultEntityMetaWriterFactory.java 2009-04-15 05:16:24 UTC (rev 3283) @@ -1,39 +0,0 @@ -/* - * Copyright 2007-2009 Jiemamy Project and the Others. - * Created on Apr 13, 2009 - * - * This file is part of Jiemamy. - * - * 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.jiemamy.entity.io.meta; - -import org.apache.commons.lang.Validate; - -import org.jiemamy.entity.io.gen.desc.impl.IdentityNotSupportedException; -import org.jiemamy.entity.io.meta.impl.EntityMetaWriterImpl; - -/** - * {@link EntityMetaWriterFactory}の実装クラス。 - * - * @author j5ik2o - */ -public class DefaultEntityMetaWriterFactory implements EntityMetaWriterFactory { - - public EntityMetaWriter createEntityMetaWriter(EntityMetaWriterContext entityMetaWriterContext) - throws IdentityNotSupportedException { - Validate.notNull(entityMetaWriterContext); - return new EntityMetaWriterImpl(entityMetaWriterContext); - } - -} Copied: leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/EntityDescWriter.java (from rev 3267, leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/EntityMetaWriter.java) =================================================================== --- leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/EntityDescWriter.java (rev 0) +++ leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/EntityDescWriter.java 2009-04-15 05:16:24 UTC (rev 3283) @@ -0,0 +1,41 @@ +/* + * Copyright 2007-2009 Jiemamy Project and the Others. + * Created on Apr 13, 2009 + * + * This file is part of Jiemamy. + * + * 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.jiemamy.entity.io.meta; + +import java.io.IOException; +import java.util.List; + +import org.jiemamy.entity.io.gen.meta.DbTableMeta; + +/** + * {@link EntityMeta エンティティメタデータ}を書き込むインタフェース。 + * + * @author j5ik2o + */ +public interface EntityDescWriter { + + /** + * エンティティメタデータを書き込む。 + * + * @param tableMetaList {@link EntityMeta}のリスト + * @throws IOException 入出力が失敗した場合 + */ + void write(List<DbTableMeta> tableMetaList) throws IOException; + +} Property changes on: leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/EntityDescWriter.java ___________________________________________________________________ Added: svn:mime-type + text/plain Copied: leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/EntityDescWriterContext.java (from rev 3270, leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/EntityMetaWriterContext.java) =================================================================== --- leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/EntityDescWriterContext.java (rev 0) +++ leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/EntityDescWriterContext.java 2009-04-15 05:16:24 UTC (rev 3283) @@ -0,0 +1,239 @@ +/* + * Copyright 2007-2009 Jiemamy Project and the Others. + * Created on Apr 13, 2009 + * + * This file is part of Jiemamy. + * + * 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.jiemamy.entity.io.meta; + +import java.io.File; +import java.util.regex.Pattern; + +import javax.persistence.GenerationType; + +import org.jiemamy.entity.io.convensition.PersistenceConvention; +import org.jiemamy.entity.io.gen.dialect.GenDialect; +import org.jiemamy.entity.io.gen.meta.DbTableMetaReader; + +/** + * {@link EntityDescWriter}のコンテキストインターフェイス。 + * + * @author j5ik2o + */ +public interface EntityDescWriterContext { + + /** + * 識別子の割り当てサイズを取得する。 + * + * @return 識別子の割り当てサイズ + */ + Integer getAllocationSize(); + + /** + * TODO for kato + * + * @return + */ + DbTableMetaReader getDbTableMetaReader(); + + /** + * TODO for kato + * + * @return + */ + GenDialect getDialect(); + + /** + * エンティティクラスのパッケージ名を取得する。 + * + * @return エンティティクラス + */ + String getEntityPackageName(); + + /** + * エンティティクラスのスーパークラスを取得する。 + * + * @return エンティティクラス + */ + Class<?> getEntitySuperClass(); + + /** + * 識別子を生成する方法を取得する。 + * + * @return {@link GenerationType} + */ + GenerationType getIdGenerationType(); + + /** + * 対象としないテーブル名の正規表現を取得する。 + * + * @return {@link Pattern} + */ + Pattern getIgnoreTableNamePattern(); + + /** + * 識別子の初期値を取得する。 + * + * @return 識別子の初期値 + */ + Integer getInitialValue(); + + /** + * Javaソースファイルの出力先ディレクトリを取得する。 + * + * @return Javaソースファイルの出力先ディレクトリ + */ + File getJavaSrcFileDestDir(); + + /** + * Javaファイルのエンコーディングを取得する。 + * + * @return Javaファイルのエンコーディング + */ + String getJavaSrcFileEncoding(); + + /** + * TODO for kato + * + */ + PersistenceConvention getPersistenceConvention(); + + /** + * TODO for kato + * + * @return + */ + File getPluralFormFile(); + + /** + * ルートパッケージ名を取得する。 + * + * @return パッケージ名 + */ + String getRootPackageName(); + + /** + * スキーマ名を取得する。 + * + * @return スキーマ名 + */ + String getSchemaName(); + + /** + * 対象とするテーブル名の正規表現を取得する。 + * + * @return {@link Pattern} + */ + Pattern getTableNamePattern(); + + /** + * テンプレートファイルのエンコーディングを取得する。 + * + * @return テンプレートファイルのエンコーディング + */ + String getTemplateFileEncoding(); + + /** + * テンプレートファイルを検索する際の優先ディレクトリを取得する。 + * + * @return テンプレートファイルを検索する際の優先ディレクトリ + */ + File getTemplateFilePrimaryDir(); + + /** + * テンプレート名を取得する。 + * + * @return テンプレート名 + */ + String getTemplateName(); + + /** + * エンティティのプロパティに@Versionを付与するカラム名の正規表現を取得する。 + * + * @return {@link Pattern} + */ + Pattern getVersionColumnNamePattern(); + + /** + * DB上のコメントをエンティティに適用するかどうかのフラグを取得する。 + * + * @return trueの場合適用する + */ + boolean isApplyDbCommentToJava(); + + /** + * 上書きフラグを取得する。 + * + * @return 上書きする場合は{@code true}、しない場合は{@code false} + */ + boolean isOverwrite(); + + /** + * Tableアノテーションのcatalog属性にカタログ名を明記するかどうかのフラグを取得する。 + * + * @return trueの場合明記する + */ + boolean isShowCatalogName(); + + /** + * ColumnアノテーションのcolumnDefinition属性にカラム定義を明記するかどうかのフラグを取得する。 + * + * @return trueの場合明記する + */ + boolean isShowColumnDefinition(); + + /** + * Columnアノテーションのname属性にカラム名を明記するかどうかのフラグを取得する。 + * + * @return trueの場合明記する + */ + boolean isShowColumnName(); + + /** + * JoinColumnアノテーションを明記するかどうかのフラグを取得する。 + * + * @return trueの場合明記する + */ + boolean isShowJoinColumn(); + + /** + * Tableアノテーションのschema属性にスキーマ名を明記するかどうかのフラグを取得する。 + * + * @return trueの場合明記する + */ + boolean isShowSchemaName(); + + /** + * Tableアノテーションのname属性にテーブル名を明記するかどうかのフラグを取得する。 + * + * @return trueの場合明記する + */ + boolean isShowTableName(); + + /** + * 生成するエンティティのアクセサメソッドを付与するかどうかのフラグを取得する。 + * + * @return trueの場合 + */ + boolean isUseAccessor(); + + /** + * 日付型カラムに対応するプロパティの型を@Temporalつきのjava.util.Dateとする。 + * + * @return trueの場合@Temporalつきのjava.util.Dateにする。 + */ + boolean isUseTemporalType(); + +} Property changes on: leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/EntityDescWriterContext.java ___________________________________________________________________ Added: svn:mime-type + text/plain Deleted: leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/EntityMetaWriter.java =================================================================== --- leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/EntityMetaWriter.java 2009-04-15 04:55:22 UTC (rev 3282) +++ leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/EntityMetaWriter.java 2009-04-15 05:16:24 UTC (rev 3283) @@ -1,41 +0,0 @@ -/* - * Copyright 2007-2009 Jiemamy Project and the Others. - * Created on Apr 13, 2009 - * - * This file is part of Jiemamy. - * - * 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.jiemamy.entity.io.meta; - -import java.io.IOException; -import java.util.List; - -import org.jiemamy.entity.io.gen.meta.DbTableMeta; - -/** - * {@link EntityMeta エンティティメタデータ}を書き込むインタフェース。 - * - * @author j5ik2o - */ -public interface EntityMetaWriter { - - /** - * エンティティメタデータを書き込む。 - * - * @param tableMetaList {@link EntityMeta}のリスト - * @throws IOException 入出力が失敗した場合 - */ - void write(List<DbTableMeta> tableMetaList) throws IOException; - -} Deleted: leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/EntityMetaWriterContext.java =================================================================== --- leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/EntityMetaWriterContext.java 2009-04-15 04:55:22 UTC (rev 3282) +++ leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/EntityMetaWriterContext.java 2009-04-15 05:16:24 UTC (rev 3283) @@ -1,217 +0,0 @@ -/* - * Copyright 2007-2009 Jiemamy Project and the Others. - * Created on Apr 13, 2009 - * - * This file is part of Jiemamy. - * - * 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.jiemamy.entity.io.meta; - -import java.io.File; -import java.util.regex.Pattern; - -import javax.persistence.GenerationType; - -import org.jiemamy.entity.io.gen.dialect.GenDialect; - -/** - * {@link EntityMetaWriter}のコンテキストインターフェイス。 - * - * @author j5ik2o - */ -public interface EntityMetaWriterContext { - - /** - * 識別子の割り当てサイズを取得する。 - * - * @return 識別子の割り当てサイズ - */ - Integer getAllocationSize(); - - /** - * TODO for kato - * - * @return - */ - GenDialect getDialect(); - - /** - * エンティティクラスのパッケージ名を取得する。 - * - * @return エンティティクラス - */ - String getEntityPackageName(); - - /** - * エンティティクラスのスーパークラスを取得する。 - * - * @return エンティティクラス - */ - Class<?> getEntitySuperClass(); - - /** - * 識別子を生成する方法を取得する。 - * - * @return {@link GenerationType} - */ - GenerationType getIdGenerationType(); - - /** - * 対象としないテーブル名の正規表現を取得する。 - * - * @return {@link Pattern} - */ - Pattern getIgnoreTableNamePattern(); - - /** - * 識別子の初期値を取得する。 - * - * @return 識別子の初期値 - */ - Integer getInitialValue(); - - /** - * Javaソースファイルの出力先ディレクトリを取得する。 - * - * @return Javaソースファイルの出力先ディレクトリ - */ - File getJavaSrcFileDestDir(); - - /** - * Javaファイルのエンコーディングを取得する。 - * - * @return Javaファイルのエンコーディング - */ - String getJavaSrcFileEncoding(); - - /** - * ルートパッケージ名を取得する。 - * - * @return パッケージ名 - */ - String getRootPackageName(); - - /** - * スキーマ名を取得する。 - * - * @return スキーマ名 - */ - String getSchemaName(); - - /** - * 対象とするテーブル名の正規表現を取得する。 - * - * @return {@link Pattern} - */ - Pattern getTableNamePattern(); - - /** - * テンプレートファイルのエンコーディングを取得する。 - * - * @return テンプレートファイルのエンコーディング - */ - String getTemplateFileEncoding(); - - /** - * テンプレートファイルを検索する際の優先ディレクトリを取得する。 - * - * @return テンプレートファイルを検索する際の優先ディレクトリ - */ - File getTemplateFilePrimaryDir(); - - /** - * テンプレート名を取得する。 - * - * @return テンプレート名 - */ - String getTemplateName(); - - /** - * エンティティのプロパティに@Versionを付与するカラム名の正規表現を取得する。 - * - * @return {@link Pattern} - */ - Pattern getVersionColumnNamePattern(); - - /** - * DB上のコメントをエンティティに適用するかどうかのフラグを取得する。 - * - * @return trueの場合適用する - */ - boolean isApplyDbCommentToJava(); - - /** - * 上書きフラグを取得する。 - * - * @return 上書きする場合は{@code true}、しない場合は{@code false} - */ - boolean isOverwrite(); - - /** - * Tableアノテーションのcatalog属性にカタログ名を明記するかどうかのフラグを取得する。 - * - * @return trueの場合明記する - */ - boolean isShowCatalogName(); - - /** - * ColumnアノテーションのcolumnDefinition属性にカラム定義を明記するかどうかのフラグを取得する。 - * - * @return trueの場合明記する - */ - boolean isShowColumnDefinition(); - - /** - * Columnアノテーションのname属性にカラム名を明記するかどうかのフラグを取得する。 - * - * @return trueの場合明記する - */ - boolean isShowColumnName(); - - /** - * JoinColumnアノテーションを明記するかどうかのフラグを取得する。 - * - * @return trueの場合明記する - */ - boolean isShowJoinColumn(); - - /** - * Tableアノテーションのschema属性にスキーマ名を明記するかどうかのフラグを取得する。 - * - * @return trueの場合明記する - */ - boolean isShowSchemaName(); - - /** - * Tableアノテーションのname属性にテーブル名を明記するかどうかのフラグを取得する。 - * - * @return trueの場合明記する - */ - boolean isShowTableName(); - - /** - * 生成するエンティティのアクセサメソッドを付与するかどうかのフラグを取得する。 - * - * @return trueの場合 - */ - boolean isUseAccessor(); - - /** - * 日付型カラムに対応するプロパティの型を@Temporalつきのjava.util.Dateとする。 - * - * @return trueの場合@Temporalつきのjava.util.Dateにする。 - */ - boolean isUseTemporalType(); - -} Modified: leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/EntityMetaWriterFactory.java =================================================================== --- leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/EntityMetaWriterFactory.java 2009-04-15 04:55:22 UTC (rev 3282) +++ leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/EntityMetaWriterFactory.java 2009-04-15 05:16:24 UTC (rev 3283) @@ -18,22 +18,25 @@ */ package org.jiemamy.entity.io.meta; +import java.io.IOException; + import org.jiemamy.entity.io.gen.desc.impl.IdentityNotSupportedException; /** - * {@link EntityMetaWriter}用のファクトリインターフェイス。 + * {@link EntityDescWriter}用のファクトリインターフェイス。 * * @author j5ik2o */ public interface EntityMetaWriterFactory { /** - * {@link EntityMetaWriter}を生成する。 + * {@link EntityDescWriter}を生成する。 * - * @param entityMetaWriterContext {@link EntityMetaWriterContext} - * @return {@link EntityMetaWriter} + * @param entityDescWriterContext {@link EntityDescWriterContext} + * @return {@link EntityDescWriter} * @throws IdentityNotSupportedException + * @throws IOException */ - EntityMetaWriter createEntityMetaWriter(EntityMetaWriterContext entityMetaWriterContext) - throws IdentityNotSupportedException; + EntityDescWriter createEntityMetaWriter(EntityDescWriterContext entityDescWriterContext) + throws IdentityNotSupportedException, IOException; } Copied: leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/impl/EntityDescWriterImpl.java (from rev 3270, leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/impl/EntityMetaWriterImpl.java) =================================================================== --- leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/impl/EntityDescWriterImpl.java (rev 0) +++ leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/impl/EntityDescWriterImpl.java 2009-04-15 05:16:24 UTC (rev 3283) @@ -0,0 +1,129 @@ +/* + * Copyright 2007-2009 Jiemamy Project and the Others. + * Created on Apr 13, 2009 + * + * This file is part of Jiemamy. + * + * 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.jiemamy.entity.io.meta.impl; + +import java.io.File; +import java.io.IOException; +import java.util.List; + +import org.apache.commons.lang.Validate; + +import org.jiemamy.entity.io.convensition.PersistenceConvention; +import org.jiemamy.entity.io.convensition.impl.PersistenceConventionImpl; +import org.jiemamy.entity.io.gen.desc.EntityDesc; +import org.jiemamy.entity.io.gen.desc.EntityDescFactory; +import org.jiemamy.entity.io.gen.desc.EntitySetDesc; +import org.jiemamy.entity.io.gen.desc.EntitySetDescFactory; +import org.jiemamy.entity.io.gen.desc.impl.EntitySetDescFactoryImpl; +import org.jiemamy.entity.io.gen.desc.impl.IdentityNotSupportedException; +import org.jiemamy.entity.io.gen.generator.GenerateException; +import org.jiemamy.entity.io.gen.generator.Generator; +import org.jiemamy.entity.io.gen.generator.impl.GeneratorContextImpl; +import org.jiemamy.entity.io.gen.generator.impl.GeneratorImpl; +import org.jiemamy.entity.io.gen.meta.DbTableMeta; +import org.jiemamy.entity.io.gen.model.EntityModel; +import org.jiemamy.entity.io.gen.model.EntityModelFactory; +import org.jiemamy.entity.io.meta.EntityDescWriter; +import org.jiemamy.entity.io.meta.EntityDescWriterContext; +import org.jiemamy.entity.io.utils.FileUtil; +import org.jiemamy.utils.ClassUtil; +import org.jiemamy.utils.StringUtil; + +/** + * EntityMetaWriterContextの実装クラス。 + * + * @author j5ik2o + */ +public class EntityDescWriterImpl implements EntityDescWriter { + + private Generator generator; + + private EntityDescWriterContext entityDescWriterContext; + + private EntityModelFactory entityModelFactory; + + private EntityDescFactory entityDescFactory; + + private EntitySetDescFactory entitySetDescFactory; + + private EntitySetDesc entitySetDesc; + + + /** + * インスタンスを生成する。 + * + * @param entityMetaWriterContext {@link EntityMetaWriterContext} + * @throws IdentityNotSupportedException + * @throws IOException + */ + public EntityDescWriterImpl(EntityDescWriterContext entityDescWriterContext) throws IdentityNotSupportedException, + IOException { + Validate.notNull(entityDescWriterContext); + Validate.notNull(entityDescWriterContext.getDbTableMetaReader()); + Validate.notNull(entityDescWriterContext.getJavaSrcFileEncoding()); + Validate.notNull(entityDescWriterContext.getTemplateName()); + this.entityDescWriterContext = entityDescWriterContext; + PersistenceConvention persistenceConvention = entityDescWriterContext.getPersistenceConvention(); + if (persistenceConvention == null) { + persistenceConvention = new PersistenceConventionImpl(); + } + entitySetDescFactory = + new EntitySetDescFactoryImpl(entityDescWriterContext.getDbTableMetaReader(), persistenceConvention, + entityDescWriterContext.getDialect(), entityDescWriterContext.getVersionColumnNamePattern(), + entityDescWriterContext.getPluralFormFile(), entityDescWriterContext.getIdGenerationType(), + entityDescWriterContext.getInitialValue(), entityDescWriterContext.getAllocationSize()); + + } + + private EntityModel convertModel(DbTableMeta dbTableMeta) { + EntityDesc entityDesc = entityDescFactory.getEntityDesc(dbTableMeta); + EntityModel result = entityModelFactory.getEntityModel(entityDesc); + return result; + } + + public void write(List<DbTableMeta> tableMetaList) throws IOException { + Validate.notNull(tableMetaList); + generator = + new GeneratorImpl(entityDescWriterContext.getTemplateFileEncoding(), entityDescWriterContext + .getTemplateFilePrimaryDir()); + GeneratorContextImpl context = new GeneratorContextImpl(); + context.setEncoding(entityDescWriterContext.getJavaSrcFileEncoding()); + context.setOverwrite(entityDescWriterContext.isOverwrite()); + context.setTemplateName(entityDescWriterContext.getTemplateName()); + + String packageName = + ClassUtil.concatName(entityDescWriterContext.getRootPackageName(), entityDescWriterContext + .getEntityPackageName()); + + for (DbTableMeta tableMeta : tableMetaList) { + File file = + FileUtil.createJavaFile(entityDescWriterContext.getJavaSrcFileDestDir(), packageName, StringUtil + .camelize(tableMeta.getName())); + context.setFile(file); + Object model = convertModel(tableMeta); + context.setModel(model); + try { + generator.generate(context); + } catch (GenerateException e) { + e.printStackTrace(); + throw new IOException(); + } + } + } +} Property changes on: leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/impl/EntityDescWriterImpl.java ___________________________________________________________________ Added: svn:mime-type + text/plain Deleted: leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/impl/EntityMetaWriterImpl.java =================================================================== --- leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/impl/EntityMetaWriterImpl.java 2009-04-15 04:55:22 UTC (rev 3282) +++ leto/jiemamy-entity-io/trunk/src/main/java/org/jiemamy/entity/io/meta/impl/EntityMetaWriterImpl.java 2009-04-15 05:16:24 UTC (rev 3283) @@ -1,140 +0,0 @@ -/* - * Copyright 2007-2009 Jiemamy Project and the Others. - * Created on Apr 13, 2009 - * - * This file is part of Jiemamy. - * - * 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.jiemamy.entity.io.meta.impl; - -import java.io.File; -import java.io.IOException; -import java.util.List; - -import org.apache.commons.lang.Validate; - -import org.jiemamy.entity.io.gen.desc.AttributeDescFactory; -import org.jiemamy.entity.io.gen.desc.CompositeUniqueConstraintDescFactory; -import org.jiemamy.entity.io.gen.desc.EntityDesc; -import org.jiemamy.entity.io.gen.desc.EntityDescFactory; -import org.jiemamy.entity.io.gen.desc.impl.AttributeDescFactoryImpl; -import org.jiemamy.entity.io.gen.desc.impl.CompositeUniqueConstraintDescFactoryImpl; -import org.jiemamy.entity.io.gen.desc.impl.EntityDescFactoryImpl; -import org.jiemamy.entity.io.gen.desc.impl.IdentityNotSupportedException; -import org.jiemamy.entity.io.gen.generator.GenerateException; -import org.jiemamy.entity.io.gen.generator.Generator; -import org.jiemamy.entity.io.gen.generator.impl.GeneratorContextImpl; -import org.jiemamy.entity.io.gen.generator.impl.GeneratorImpl; -import org.jiemamy.entity.io.gen.meta.DbTableMeta; -import org.jiemamy.entity.io.gen.model.AssociationModelFactory; -import org.jiemamy.entity.io.gen.model.AttributeModelFactory; -import org.jiemamy.entity.io.gen.model.CompositeUniqueConstraintModelFactory; -import org.jiemamy.entity.io.gen.model.EntityModel; -import org.jiemamy.entity.io.gen.model.EntityModelFactory; -import org.jiemamy.entity.io.gen.model.impl.AssociationModelFactoryImpl; -import org.jiemamy.entity.io.gen.model.impl.AttributeModelFactoryImpl; -import org.jiemamy.entity.io.gen.model.impl.CompositeUniqueConstraintModelFactoryImpl; -import org.jiemamy.entity.io.gen.model.impl.EntityModelFactoryImpl; -import org.jiemamy.entity.io.meta.EntityMetaWriter; -import org.jiemamy.entity.io.meta.EntityMetaWriterContext; -import org.jiemamy.entity.io.utils.FileUtil; -import org.jiemamy.utils.ClassUtil; -import org.jiemamy.utils.StringUtil; - -/** - * EntityMetaWriterContextの実装クラス。 - * - * @author j5ik2o - */ -public class EntityMetaWriterImpl implements EntityMetaWriter { - - private Generator generator; - - private EntityMetaWriterContext entityMetaWriterContext; - - EntityModelFactory entityModelFactory; - - EntityDescFactory entityDescFactory; - - - /** - * インスタンスを生成する。 - * - * @param entityMetaWriterContext {@link EntityMetaWriterContext} - * @throws IdentityNotSupportedException - */ - public EntityMetaWriterImpl(EntityMetaWriterContext entityMetaWriterContext) throws IdentityNotSupportedException { - Validate.notNull(entityMetaWriterContext); - Validate.notNull(entityMetaWriterContext.getJavaSrcFileEncoding()); - Validate.notNull(entityMetaWriterContext.getTemplateName()); - this.entityMetaWriterContext = entityMetaWriterContext; - AttributeDescFactory attributeDescFactory = - new AttributeDescFactoryImpl(entityMetaWriterContext.getDialect(), entityMetaWriterContext - .getVersionColumnNamePattern(), entityMetaWriterContext.getIdGenerationType(), - entityMetaWriterContext.getInitialValue(), entityMetaWriterContext.getAllocationSize()); - CompositeUniqueConstraintDescFactory compositeUniqueConstraintDescFactory = - new CompositeUniqueConstraintDescFactoryImpl(); - entityDescFactory = new EntityDescFactoryImpl(attributeDescFactory, compositeUniqueConstraintDescFactory); - AttributeModelFactory attributeModelFactory = - new AttributeModelFactoryImpl(entityMetaWriterContext.isShowColumnName(), entityMetaWriterContext - .isShowColumnDefinition(), entityMetaWriterContext.isUseTemporalType()); - AssociationModelFactory associationModelFactory = - new AssociationModelFactoryImpl(entityMetaWriterContext.isShowJoinColumn()); - CompositeUniqueConstraintModelFactory compositeUniqueConstraintModelFactory = - new CompositeUniqueConstraintModelFactoryImpl(); - entityModelFactory = - new EntityModelFactoryImpl(ClassUtil.concatName(entityMetaWriterContext.getRootPackageName(), - entityMetaWriterContext.getEntityPackageName()), entityMetaWriterContext.getEntitySuperClass(), - attributeModelFactory, associationModelFactory, compositeUniqueConstraintModelFactory, - entityMetaWriterContext.isUseAccessor(), entityMetaWriterContext.isApplyDbCommentToJava(), - entityMetaWriterContext.isShowCatalogName(), entityMetaWriterContext.isShowSchemaName(), - entityMetaWriterContext.isShowTableName()); - } - - private EntityModel convertModel(DbTableMeta dbTableMeta) { - EntityDesc entityDesc = entityDescFactory.getEntityDesc(dbTableMeta); - EntityModel result = entityModelFactory.getEntityModel(entityDesc); - return result; - } - - public void write(List<DbTableMeta> tableMetaList) throws IOException { - Validate.notNull(tableMetaList); - generator = - new GeneratorImpl(entityMetaWriterContext.getTemplateFileEncoding(), entityMetaWriterContext - .getTemplateFilePrimaryDir()); - GeneratorContextImpl context = new GeneratorContextImpl(); - context.setEncoding(entityMetaWriterContext.getJavaSrcFileEncoding()); - context.setOverwrite(entityMetaWriterContext.isOverwrite()); - context.setTemplateName(entityMetaWriterContext.getTemplateName()); - - String packageName = - ClassUtil.concatName(entityMetaWriterContext.getRootPackageName(), entityMetaWriterContext - .getEntityPackageName()); - - for (DbTableMeta tableMeta : tableMetaList) { - File file = - FileUtil.createJavaFile(entityMetaWriterContext.getJavaSrcFileDestDir(), packageName, StringUtil - .camelize(tableMeta.getName())); - context.setFile(file); - Object model = convertModel(tableMeta); - context.setModel(model); - try { - generator.generate(context); - } catch (GenerateException e) { - e.printStackTrace(); - throw new IOException(); - } - } - } -} Added: leto/jiemamy-entity-io/trunk/src/test/java/org/jiemamy/entity/io/gen/desc/impl/EntitySetDescFactoryImplTest.java =================================================================== --- leto/jiemamy-entity-io/trunk/src/test/java/org/jiemamy/entity/io/gen/desc/impl/EntitySetDescFactoryImplTest.java (rev 0) +++ leto/jiemamy-entity-io/trunk/src/test/java/org/jiemamy/entity/io/gen/desc/impl/EntitySetDescFactoryImplTest.java 2009-04-15 05:16:24 UTC (rev 3283) @@ -0,0 +1,41 @@ +/* + * Copyright 2007-2009 Jiemamy Project and the Others. + * Created on Apr 15, 2009 + * + * This file is part of Jiemamy. + * + * 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.jiemamy.entity.io.gen.desc.impl; + +import static org.junit.Assert.*; + +import org.junit.Test; + + +/** + * TODO for kato + * + * @author kato + */ +public class EntitySetDescFactoryImplTest { + + /** + * Test method for {@link org.jiemamy.entity.io.gen.desc.impl.EntitySetDescFactoryImpl#getEntitySetDesc()}. + */ + @Test + public void testGetEntitySetDesc() { + fail("Not yet implemented"); + } + +} Property changes on: leto/jiemamy-entity-io/trunk/src/test/java/org/jiemamy/entity/io/gen/desc/impl/EntitySetDescFactoryImplTest.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: leto/jiemamy-entity-io/trunk/src/test/java/org/jiemamy/entity/io/meta/impl/EntityMetaWriterImplTest.java =================================================================== --- leto/jiemamy-entity-io/trunk/src/test/java/org/jiemamy/entity/io/meta/impl/EntityMetaWriterImplTest.java 2009-04-15 04:55:22 UTC (rev 3282) +++ leto/jiemamy-entity-io/trunk/src/test/java/org/jiemamy/entity/io/meta/impl/EntityMetaWriterImplTest.java 2009-04-15 05:16:24 UTC (rev 3283) @@ -36,9 +36,9 @@ import org.jiemamy.entity.io.gen.dialect.StandardGenDialect; import org.jiemamy.entity.io.gen.meta.DbColumnMeta; import org.jiemamy.entity.io.gen.meta.DbTableMeta; -import org.jiemamy.entity.io.meta.DefaultEntityMetaWriterContext; -import org.jiemamy.entity.io.meta.DefaultEntityMetaWriterFactory; -import org.jiemamy.entity.io.meta.EntityMetaWriter; +import org.jiemamy.entity.io.meta.DefaultEntityDescWriterContext; +import org.jiemamy.entity.io.meta.DefaultEntityDescWriterFactory; +import org.jiemamy.entity.io.meta.EntityDescWriter; import org.jiemamy.internal.test.ReflectionDialectProvider; import org.jiemamy.model.RootModel; import org.jiemamy.utils.ClassUtil; @@ -53,7 +53,7 @@ */ public class EntityMetaWriterImplTest { - private EntityMetaWriter entityMetaWriter; + private EntityDescWriter entityDescWriter; private static final Logger LOG = LoggerFactory.getLogger(EntityMetaWriterImplTest.class); @@ -75,7 +75,7 @@ } /** - * Test method for {@link org.jiemamy.entity.io.meta.impl.EntityMetaWriterImpl#write(java.util.List)}. + * Test method for {@link org.jiemamy.entity.io.meta.impl.EntityDescWriterImpl#write(java.util.List)}. * @throws IOException * @throws IdentityNotSupportedException * @throws ClassNotFoundException @@ -85,11 +85,12 @@ @Ignore public void testWrite() throws IOException, IdentityNotSupportedException, ClassNotFoundException, ResourceNotFoundException { - DefaultEntityMetaWriterContext context = new DefaultEntityMetaWriterContext(); + DefaultEntityDescWriterContext context = new DefaultEntityDescWriterContext(); //context.setDialect(new TestDialect(jiemamy.getFactory(), jiemamy.getDialect(rootModel))); context.setDialect(new StandardGenDialect()); + context.setUseAccessor(true); context.setOverwrite(true); context.setJavaSrcFileEncoding("UTF-8"); context.setRootPackageName("test"); @@ -101,7 +102,7 @@ File dir = ResourceUtil.getResourceAsFile(packageName.replace('.', '/')); context.setJavaSrcFileDestDir(dir); - entityMetaWriter = new DefaultEntityMetaWriterFactory().createEntityMetaWriter(context); + entityDescWriter = new DefaultEntityDescWriterFactory().createEntityMetaWriter(context); List<DbTableMeta> dbTableMetaList = CollectionsUtil.newArrayList(); DbTableMeta dbTableMeta = new DbTableMeta(); dbTableMeta.setName("EMPLOYEE"); @@ -129,6 +130,6 @@ dbTableMeta.addColumnMeta(columnMeta); dbTableMetaList.add(dbTableMeta); - entityMetaWriter.write(dbTableMetaList); + entityDescWriter.write(dbTableMetaList); } } Modified: leto/jiemamy-entity-io/trunk/src/test/java/org/jiemamy/entity/io/meta/impl/TestDialect.java =================================================================== --- leto/jiemamy-entity-io/trunk/src/test/java/org/jiemamy/entity/io/meta/impl/TestDialect.java 2009-04-15 04:55:22 UTC (rev 3282) +++ leto/jiemamy-entity-io/trunk/src/test/java/org/jiemamy/entity/io/meta/impl/TestDialect.java 2009-04-15 05:16:24 UTC (rev 3283) @@ -18,19 +18,19 @@ */ package org.jiemamy.entity.io.meta.impl; -import java.sql.Connection; -import java.sql.SQLException; +import java.math.BigDecimal; +import java.sql.Timestamp; +import java.sql.Types; +import java.util.HashMap; import java.util.Map; import javax.persistence.GenerationType; import org.jiemamy.JiemamyFactory; -import org.jiemamy.dialect.BuiltinDataTypeMold; import org.jiemamy.dialect.Dialect; import org.jiemamy.entity.io.gen.dialect.GenDialect; -import org.jiemamy.entity.io.gen.dialect.SqlType; -import org.jiemamy.model.datatype.BuiltinDataType; -import org.jiemamy.model.datatype.DataTypeCategory; +import org.jiemamy.entity.io.utils.CaseInsensitiveMap; +import org.jiemamy.entity.io.utils.ColumnUtil; /** * TODO for kato @@ -39,202 +39,203 @@ */ public class TestDialect implements GenDialect { + /** + * 標準の{@link ColumnType}の実装クラスです。 + * + * @author j5ik2o + */ + public static class StandardColumnType implements ColumnType { + + private static final StandardColumnType BIGINT = new StandardColumnType("bigint", Long.class); + + private static final StandardColumnType BINARY = new StandardColumnType("binary", byte[].class); + + private static final StandardColumnType BIT = new StandardColumnType("bit", Boolean.class); + + private static final StandardColumnType BLOB = new StandardColumnType("blob", byte[].class, true); + + private static final StandardColumnType BOOLEAN = new StandardColumnType("boolean", Boolean.class); + + private static final StandardColumnType CHAR = new StandardColumnType("char($l)", String.class); + + private static final StandardColumnType CLOB = new StandardColumnType("clob", String.class, true); + + private static final StandardColumnType DATE = new StandardColumnType("date", java.sql.Date.class); + + private static final StandardColumnType DECIMAL = new StandardColumnType("decimal", BigDecimal.class); + + private static final StandardColumnType DOUBLE = new StandardColumnType("double", Double.class); + + private static final StandardColumnType FLOAT = new StandardColumnType("float", Float.class); + + private static final StandardColumnType INTEGER = new StandardColumnType("integer", Integer.class); + + private static final StandardColumnType LONGVARBINARY = new StandardColumnType("longvarbinary", byte[].class); + + private static final StandardColumnType LONGVARCHAR = new StandardColumnType("longvarchar", String.class); + + private static final StandardColumnType NUMERIC = new StandardColumnType("numeric", BigDecimal.class); + + private static final StandardColumnType REAL = new StandardColumnType("real", Float.class); + + private static final StandardColumnType SMALLINT = new StandardColumnType("smallint", Short.class); + + private static final StandardColumnType TIME = new StandardColumnType("time", java.sql.Time.class); + + private static final StandardColumnType TIMESTAMP = new StandardColumnType("timestamp", Timestamp.class); + + private static final StandardColumnType TINYINT = new StandardColumnType("tinyint", Short.class); + + private static final StandardColumnType VARBINARY = new StandardColumnType("varbinary($l)", byte[].class); + + private static final StandardColumnType VARCHAR = new StandardColumnType("varchar($l)", String.class); + + /** カラム定義 */ + protected String dataType; + + /** 属性のクラス */ + protected Class<?> attributeClass; + + /** LOBの場合{@code true} */ + protected boolean lob; + + + /** + * インスタンスを構築する。 + * + * @param dataType データ型 + * @param attributeClass 属性のクラス + */ + protected StandardColumnType(String dataType, Class<?> attributeClass) { + this(dataType, attributeClass, false); + } + + /** + * インスタンスを構築する。 + * + * @param dataType カラム定義 + * @param attributeClass 属性のクラス + * @param lob LOBの場合{@code true} + */ + protected StandardColumnType(String dataType, Class<?> attributeClass, boolean lob) { + this.dataType = dataType; + this.attributeClass = attributeClass; + this.lob = lob; + } + + public Class<?> getAttributeClass(int length, int precision, int scale) { + return attributeClass; + } + + public String getColumnDefinition(int length, int precision, int scale, String defaultValue) { + String completeDataType = ColumnUtil.formatDataType(dataType, length, precision, scale); + return getColumnDefinitionInternal(completeDataType, defaultValue); + } + + /** + * カラム定義を取得する。 + * + * @param completeDataType 完全なデータ型 + * @param defaultValue デフォルト値、存在しない場合は{@code null} + * @return カラム定義 + */ + protected String getColumnDefinitionInternal(String completeDataType, String defaultValue) { + if (defaultValue == null) { + return completeDataType; + } + return completeDataType + " default " + defaultValue; + } + + public boolean isLob() { + return lob; + } + + } + + private Dialect dialect; private JiemamyFactory factory; + /** カラムの型名をキー、{@link GenDialect.ColumnType}を値とするマップ */ + @SuppressWarnings("unchecked") + protected Map<Object, ColumnType> columnTypeMap = new CaseInsensitiveMap(); + + /** カラムのSQL型をキー、{@link GenDialect.ColumnType}を値とするマップ。 */ + protected Map<Integer, ColumnType> fallbackColumnTypeMap = new HashMap<Integer, ColumnType>(); + - public TestDialect(JiemamyFactory factory, Dialect dialect) { + /** + * インスタンスを生成する。 + * + * @param factory + * @param dialect + */ + public TestDialect(final JiemamyFactory factory, final Dialect dialect) { this.factory = factory; this.dialect = dialect; + columnTypeMap.put("bigint", StandardColumnType.BIGINT); + columnTypeMap.put("binary", StandardColumnType.BINARY); + columnTypeMap.put("bit", StandardColumnType.BIT); + columnTypeMap.put("blob", StandardColumnType.BLOB); + columnTypeMap.put("boolean", StandardColumnType.BOOLEAN); + columnTypeMap.put("char", StandardColumnType.CHAR); + columnTypeMap.put("clob", StandardColumnType.CLOB); + columnTypeMap.put("date", StandardColumnType.DATE); + columnTypeMap.put("decimal", StandardColumnType.DECIMAL); + columnTypeMap.put("double", StandardColumnType.DOUBLE); + columnTypeMap.put("float", StandardColumnType.FLOAT); + columnTypeMap.put("integer", StandardColumnType.INTEGER); + columnTypeMap.put("longvarbinary", StandardColumnType.LONGVARBINARY); + columnTypeMap.put("longvarchar", StandardColumnType.LONGVARCHAR); + columnTypeMap.put("numeric", StandardColumnType.NUMERIC); + columnTypeMap.put("real", StandardColumnType.REAL); + columnTypeMap.put("smallint", StandardColumnType.SMALLINT); + columnTypeMap.put("time", StandardColumnType.TIME); + columnTypeMap.put("timestamp", StandardColumnType.TIMESTAMP); + columnTypeMap.put("tinyint", StandardColumnType.TINYINT); + columnTypeMap.put("varbinary", StandardColumnType.VARBINARY); + columnTypeMap.put("varchar", StandardColumnType.VARCHAR); + + fallbackColumnTypeMap.put(Types.BIGINT, StandardColumnType.BIGINT); + fallbackColumnTypeMap.put(Types.BINARY, StandardColumnType.BINARY); + fallbackColumnTypeMap.put(Types.BIT, StandardColumnType.BIT); + fallbackColumnTypeMap.put(Types.BLOB, StandardColumnType.BLOB); + fallbackColumnTypeMap.put(Types.BOOLEAN, StandardColumnType.BOOLEAN); + fallbackColumnTypeMap.put(Types.CHAR, StandardColumnType.CHAR); + fallbackColumnTypeMap.put(Types.CLOB, StandardColumnType.CLOB); + fallbackColumnTypeMap.put(Types.DATE, StandardColumnType.DATE); + fallbackColumnTypeMap.put(Types.DECIMAL, StandardColumnType.DECIMAL); + fallbackColumnTypeMap.put(Types.DOUBLE, StandardColumnType.DOUBLE); + fallbackColumnTypeMap.put(Types.FLOAT, StandardColumnType.FLOAT); + fallbackColumnTypeMap.put(Types.INTEGER, StandardColumnType.INTEGER); + fallbackColumnTypeMap.put(Types.LONGVARBINARY, StandardColumnType.LONGVARBINARY); + fallbackColumnTypeMap.put(Types.LONGVARCHAR, StandardColumnType.LONGVARCHAR); + fallbackColumnTypeMap.put(Types.NUMERIC, StandardColumnType.NUMERIC); + fallbackColumnTypeMap.put(Types.REAL, StandardColumnType.REAL); + fallbackColumnTypeMap.put(Types.SMALLINT, StandardColumnType.SMALLINT); + fallbackColumnTypeMap.put(Types.TIME, StandardColumnType.TIME); + fallbackColumnTypeMap.put(Types.TIMESTAMP, StandardColumnType.TIMESTAMP); + fallbackColumnTypeMap.put(Types.TINYINT, StandardColumnType.TINYINT); + fallbackColumnTypeMap.put(Types.VARBINARY, StandardColumnType.VARBINARY); + fallbackColumnTypeMap.put(Types.VARCHAR, StandardColumnType.VARCHAR); } - public SqlBlockContext createSqlBlockContext() { - // TODO Auto-generated method stub - return null; - } - - public String getCloseQuote() { - return "\""; - } - - public Map<String, String> getColumnCommentMap(Connection connection, String catalogName, String schemaName, - String tableName) throws SQLException { - // TODO Auto-generated method stub - return null; - } - public ColumnType getColumnType(String columnTypeName, int sqlType) { - // TODO Auto-generated method stub - return null; + ColumnType columnType = columnTypeMap.get(columnTypeName); + return columnType != null ? columnType : fallbackColumnTypeMap.get(sqlType); } public GenerationType getDefaultGenerationType() { - // TODO Auto-generated method stub - return null; + return GenerationType.IDENTITY; } - public String getDefaultSchemaName(String userName) { - // TODO Auto-generated method stub - return null; - } - - public String getDropForeignKeySyntax() { - // TODO Auto-generated method stub - return null; - } - - public String getDropUniqueKeySyntax() { - // TODO Auto-generated method stub - return null; - } - - public String getIdentityColumnDefinition() { - // TODO Auto-generated method stub - return null; - } - - public String getIdentityInsertDisableStatement(String tableName) { - // TODO Auto-generated method stub - return null; - } - - public String getIdentityInsertEnableStatement(String tableName) { - // TODO Auto-generated method stub - return null; - } - public String getName() { - // TODO Auto-generated method stub - return null; + return "testDialect"; } - public String getOpenQuote() { - // TODO Auto-generated method stub - return null; - } - - public String getSequenceDefinitionFragment(String dataType, long initialValue, int allocationSize) { - // TODO Auto-generated method stub - return null; - } - - public String getSequenceNextValString(String sequenceName, int allocationSize) { - return null; - } - - public String getSqlBlockDelimiter() { - return null; - } - - public SqlType getSqlType(int sqlType) { - return getSqlTypeInternal(sqlType); - } - - /** - * 内部的にSQL型を取得する。 - * - * @param sqlType JDBCのSQL型 - * @return SQL型 - */ - protected SqlType getSqlTypeInternal(int sqlType) { - DataTypeCategory dtc = DataTypeCategory.fromSqlType(sqlType); - BuiltinDataTypeMold dtm = dialect.findDataTypeMold(dtc); - BuiltinDataType dt = factory.newDataType(dtm); - String typeName = dt.getTypeName(); - SqlType result = new SqlType(typeName); - return result; - } - - public String getTableComment(Connection connection, String catalogName, String schemaName, String tableName) - throws SQLException { - // TODO Auto-generated method stub - return null; - } - - public boolean isAutoIncrement(Connection connection, String catalogName, String schemaName, String tableName, - String columnName) throws SQLException { - // TODO Auto-generated method stub - return false; - } - - public boolean isColumnNotFound(Throwable throwable) { - // TODO Auto-generated method stub - return false; - } - - public boolean isJdbcCommentAvailable() { - return false; - } - - public boolean isSequenceNotFound(Throwable throwable) { - return false; - } - - public boolean isTableNotFound(Throwable throwable) { - return false; - } - - public String quote(String value) { - if (value == null) { - return null; - } - return getOpenQuote() + value + getCloseQuote(); - } - - public boolean supportsCommentInCreateTable() { - // TODO Auto-generated method stub - return false; - } - - public boolean supportsCommentOn() { - // TODO Auto-generated method stub - return false; - } - - public boolean supportsGetIndexInfo(String catalogName, String schemaName, String tableName) { - // TODO Auto-generated method stub - return false; - } - public boolean supportsIdentity() { - // TODO Auto-generated method stub - return false; + return true; } - public boolean supportsIdentityInsert() { - // TODO Auto-generated method stub - return false; - } - - public boolean supportsIdentityInsertControlStatement() { - // TODO Auto-generated method stub - return false; - } - - public boolean supportsNullableUnique() { - // TODO Auto-generated method stub - return false; - } - - public boolean supportsReferentialDeleteRule() { - // TODO Auto-generated method stub - return false; - } - - public boolean supportsReferentialUpdateRule() { - // TODO Auto-generated method stub - return false; - } - - public boolean supportsSequence() { - // TODO Auto-generated method stub - return false; - } - - public String unquote(String value) { - // TODO Auto-generated method stub - return null; - } - }