[Jiemamy-notify:2604] commit [3574] [SPEC-23] MoldManagerをDataTypeResolverに吸収し、MoldManagerをdeprecatedに変更。

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2009年 9月 15日 (火) 03:45:41 JST


Revision: 3574
          http://sourceforge.jp/projects/jiemamy/svn/view?view=rev&revision=3574
Author:   daisuke_m
Date:     2009-09-15 03:45:41 +0900 (Tue, 15 Sep 2009)

Log Message:
-----------
[SPEC-23] MoldManagerをDataTypeResolverに吸収し、MoldManagerをdeprecatedに変更。

Modified Paths:
--------------
    artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/generic/GenericDialect.java
    artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/AbstractDialect.java
    artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/DialectInitializer.java
    artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/impl/DefaultDataTypeResolver.java
    artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/impl/DefaultDialectInitializer.java
    artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/impl/DefaultMoldManager.java
    artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/JiemamyFacadeImpl.java
    artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/builder/DataTypeBuilderImpl.java
    artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/serializer/JiemamyDomParser.java
    artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/utils/DatabaseCleaner.java
    artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/dialect/DefaultSqlEmitterTest.java
    hermes/jiemamy-dialect-mysql/trunk/src/main/java/org/jiemamy/dialect/mysql/MySqlDialect.java
    hermes/jiemamy-dialect-mysql/trunk/src/test/java/org/jiemamy/dialect/mysql/MySqlDialectTest.java
    hermes/jiemamy-dialect-mysql/trunk/src/test/java/org/jiemamy/dialect/mysql/MySqlEmitterTest.java
    hermes/jiemamy-dialect-oracle/trunk/src/main/java/org/jiemamy/dialect/oracle/OracleDialect.java
    hermes/jiemamy-dialect-postgresql/trunk/src/main/java/org/jiemamy/dialect/postgresql/PostgresqlDialect.java
    hermes/jiemamy-dialect-postgresql/trunk/src/test/java/org/jiemamy/dialect/postgresql/PostgresqlDialectTest.java
    hermes/jiemamy-dialect-sql99/trunk/src/main/java/org/jiemamy/dialect/sql99/Sql99Dialect.java
    hermes/jiemamy-dialect-sql99/trunk/src/test/java/org/jiemamy/dialect/sql99/Sql99DialectTest.java
    zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/dialect/DataTypeResolver.java
    zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/dialect/Dialect.java
    zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/dialect/MoldManager.java
    zeus/trunk/jiemamy-test-helper/src/main/java/org/jiemamy/internal/test/ModelUtil.java
    zeus/trunk/jiemamy-test-helper/src/main/java/org/jiemamy/internal/test/mock/MockBuiltinDataTypeMold.java
    zeus/trunk/jiemamy-test-helper/src/main/java/org/jiemamy/internal/test/mock/MockDataTypeResolver.java
    zeus/trunk/jiemamy-test-helper/src/main/java/org/jiemamy/internal/test/mock/MockDialect.java

Added Paths:
-----------
    artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/dialect/internal/
    artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/dialect/internal/impl/
    artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/dialect/internal/impl/DefaultDataTypeResolverTest.java

Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/generic/GenericDialect.java
===================================================================
--- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/generic/GenericDialect.java	2009-09-14 18:43:23 UTC (rev 3573)
+++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/generic/GenericDialect.java	2009-09-14 18:45:41 UTC (rev 3574)
@@ -23,13 +23,10 @@
 import org.apache.commons.collections15.list.UnmodifiableList;
 
 import org.jiemamy.dialect.BuiltinDataTypeMold;
-import org.jiemamy.dialect.DataTypeResolver;
 import org.jiemamy.dialect.EmitConfig;
 import org.jiemamy.dialect.internal.AbstractDialect;
 import org.jiemamy.dialect.internal.BuiltinDataTypeMoldImpl;
-import org.jiemamy.dialect.internal.impl.DefaultDataTypeResolver;
 import org.jiemamy.dialect.internal.impl.DefaultDialectInitializer;
-import org.jiemamy.dialect.internal.impl.DefaultMoldManager;
 import org.jiemamy.model.RootModel;
 import org.jiemamy.model.datatype.DataTypeCategory;
 import org.jiemamy.model.datatype.adapter.PrecisionedDataTypeAdapter;
@@ -77,19 +74,7 @@
 	 * インスタンスを生成する。
 	 */
 	public GenericDialect() {
-		super(new DefaultDialectInitializer(new DefaultMoldManager(typeList)) {
-			
-			private DefaultDataTypeResolver defaultDataTypeResolver;
-			
-
-			@Override
-			public DataTypeResolver getDataTypeResolver() {
-				if (defaultDataTypeResolver == null) {
-					defaultDataTypeResolver = new DefaultDataTypeResolver(getMoldManager());
-				}
-				return defaultDataTypeResolver;
-			}
-		});
+		super(new DefaultDialectInitializer(typeList));
 	}
 	
 	@Override

Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/AbstractDialect.java
===================================================================
--- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/AbstractDialect.java	2009-09-14 18:43:23 UTC (rev 3573)
+++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/AbstractDialect.java	2009-09-14 18:45:41 UTC (rev 3574)
@@ -32,7 +32,6 @@
 import org.jiemamy.dialect.Dialect;
 import org.jiemamy.dialect.EmitConfig;
 import org.jiemamy.dialect.ImportMetadataConfig;
-import org.jiemamy.dialect.MoldManager;
 import org.jiemamy.model.RootModel;
 import org.jiemamy.model.attribute.constraint.ForeignKey;
 import org.jiemamy.model.datatype.BuiltinDataType;
@@ -57,9 +56,6 @@
 	/** DBメタデータの読み出し前後に実行するロジック */
 	private final ConnectionAdvisor advisor;
 	
-	/** データ型鋳型マネージャ */
-	private final MoldManager moldManager;
-	
 	// 以下、仕様外
 	
 	/** SQLエミッタ */
@@ -81,13 +77,11 @@
 	 */
 	public AbstractDialect(DialectInitializer initializer) {
 		Validate.notNull(initializer);
-		Validate.notNull(initializer.getMoldManager());
 		Validate.notNull(initializer.getDataTypeResolver());
 		Validate.notNull(initializer.getConnectionAdvisor());
 		Validate.notNull(initializer.getSqlEmitter());
 		Validate.notNull(initializer.getEntityImportVisitor());
 		Validate.notNull(initializer.getForeignKeyImportVisitor());
-		moldManager = initializer.getMoldManager();
 		dataTypeResolver = initializer.getDataTypeResolver();
 		advisor = initializer.getConnectionAdvisor();
 		emitter = initializer.getSqlEmitter();
@@ -101,30 +95,30 @@
 	
 	@Deprecated
 	public BuiltinDataTypeMold findDataTypeMold(BuiltinDataType dataType) {
-		assert moldManager != null;
+		assert dataTypeResolver != null;
 		Validate.notNull(dataType);
-		return moldManager.findDataTypeMold(dataType);
+		return dataTypeResolver.findDataTypeMold(dataType);
 	}
 	
 	@Deprecated
 	public BuiltinDataTypeMold findDataTypeMold(DataTypeCategory category) {
-		assert moldManager != null;
+		assert dataTypeResolver != null;
 		Validate.notNull(category);
-		return moldManager.findDataTypeMold(category);
+		return dataTypeResolver.findDataTypeMold(category);
 	}
 	
 	@Deprecated
 	public BuiltinDataTypeMold findDataTypeMold(DataTypeCategory category, String typeName) {
-		assert moldManager != null;
+		assert dataTypeResolver != null;
 		Validate.notNull(category);
 		Validate.notNull(typeName);
-		return moldManager.findDataTypeMold(category, typeName);
+		return dataTypeResolver.findDataTypeMold(category, typeName);
 	}
 	
 	@Deprecated
 	public List<BuiltinDataTypeMold> getAllDataTypes() {
-		assert moldManager != null;
-		return moldManager.getTypeList();
+		assert dataTypeResolver != null;
+		return dataTypeResolver.getTypeList();
 	}
 	
 	public String getConnectionUriTemplate() {
@@ -136,8 +130,9 @@
 		return dataTypeResolver;
 	}
 	
-	public MoldManager getMoldManager() {
-		return moldManager;
+	@Deprecated
+	public org.jiemamy.dialect.MoldManager getMoldManager() {
+		return dataTypeResolver;
 	}
 	
 	public Validator getValidator() {

Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/DialectInitializer.java
===================================================================
--- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/DialectInitializer.java	2009-09-14 18:43:23 UTC (rev 3573)
+++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/DialectInitializer.java	2009-09-14 18:45:41 UTC (rev 3574)
@@ -20,7 +20,6 @@
 
 import org.jiemamy.dialect.ConnectionAdvisor;
 import org.jiemamy.dialect.DataTypeResolver;
-import org.jiemamy.dialect.MoldManager;
 import org.jiemamy.model.RootModel;
 import org.jiemamy.model.datatype.DataType;
 
@@ -65,8 +64,10 @@
 	 * データ型鋳型の管理クラスを取得する。
 	 * 
 	 * @return データ型鋳型の管理クラス
+	 * @deprecated use {@link #getDataTypeResolver()}
 	 */
-	MoldManager getMoldManager();
+	@Deprecated
+	org.jiemamy.dialect.MoldManager getMoldManager();
 	
 	/**
 	 * {@link RootModel}からSQLのリストを生成するエミッタを取得する。

Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/impl/DefaultDataTypeResolver.java
===================================================================
--- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/impl/DefaultDataTypeResolver.java	2009-09-14 18:43:23 UTC (rev 3573)
+++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/impl/DefaultDataTypeResolver.java	2009-09-14 18:45:41 UTC (rev 3574)
@@ -23,12 +23,13 @@
 import org.apache.commons.lang.Validate;
 import org.apache.commons.lang.builder.ToStringBuilder;
 import org.apache.commons.lang.builder.ToStringStyle;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import org.jiemamy.JiemamyFactory;
 import org.jiemamy.ReferenceResolver;
 import org.jiemamy.dialect.BuiltinDataTypeMold;
 import org.jiemamy.dialect.DataTypeResolver;
-import org.jiemamy.dialect.MoldManager;
 import org.jiemamy.internal.model.sql.Keyword;
 import org.jiemamy.internal.model.sql.Literal;
 import org.jiemamy.internal.model.sql.Separator;
@@ -48,25 +49,63 @@
  */
 public class DefaultDataTypeResolver implements DataTypeResolver {
 	
-	private final MoldManager moldManager;
+	private static Logger logger = LoggerFactory.getLogger(DefaultDataTypeResolver.class);
 	
+	private final List<BuiltinDataTypeMold> typeList;
+	
 
 	/**
 	 * インスタンスを生成する。
 	 * 
-	 * @param moldManager 鋳型マネージャ
+	 * @param typeList データ型鋳型のリスト
 	 * @throws IllegalArgumentException 引数に{@code null}を与えた場合
 	 */
-	public DefaultDataTypeResolver(MoldManager moldManager) {
-		Validate.notNull(moldManager);
-		this.moldManager = moldManager;
+	public DefaultDataTypeResolver(List<BuiltinDataTypeMold> typeList) {
+		Validate.notNull(typeList);
+		this.typeList = typeList;
 	}
 	
+	public BuiltinDataTypeMold findDataTypeMold(BuiltinDataType builtinDataType) {
+		return findDataTypeMold(builtinDataType.getCategory(), builtinDataType.getTypeName());
+	}
+	
+	public BuiltinDataTypeMold findDataTypeMold(DataTypeCategory category) {
+		Validate.notNull(category);
+		return findDataTypeMold(category, category.name());
+	}
+	
+	public BuiltinDataTypeMold findDataTypeMold(DataTypeCategory category, String typeName) {
+		Validate.notNull(typeName);
+		for (BuiltinDataTypeMold mold : typeList) {
+			if (mold.getCategory() == category && mold.getName().equals(typeName)) {
+				return mold;
+			}
+		}
+		for (BuiltinDataTypeMold mold : typeList) {
+			if (mold.getName().equalsIgnoreCase(typeName) || mold.getAliases().contains(typeName)) {
+				return mold;
+			}
+		}
+		if (category != DataTypeCategory.OTHER) {
+			for (BuiltinDataTypeMold mold : typeList) {
+				if (mold.getCategory() == category) {
+					return mold;
+				}
+			}
+		}
+		logger.warn("UNKNOWN Mold: " + category + " " + typeName);
+		return BuiltinDataTypeMold.UNKNOWN;
+	}
+	
+	public List<BuiltinDataTypeMold> getTypeList() {
+		return typeList;
+	}
+	
 	public List<Token> resolveDataType(DataType dataType, ReferenceResolver resolver) {
 		List<Token> tokens = CollectionsUtil.newArrayList();
 		BuiltinDataType builtinDataType = dataType.toBuiltinDataType(resolver);
 		
-		tokens.add(Keyword.of(moldManager.findDataTypeMold(builtinDataType).getName()));
+		tokens.add(Keyword.of(findDataTypeMold(builtinDataType).getName()));
 		if (isSupport(SizedDataTypeAdapter.class, builtinDataType.getCategory())
 				&& builtinDataType.hasAdapter(SizedDataTypeAdapter.class)) {
 			Integer size = builtinDataType.getAdapter(SizedDataTypeAdapter.class).getSize();
@@ -113,7 +152,7 @@
 		} catch (IllegalArgumentException e) {
 			category = DataTypeCategory.fromSqlType(sqlType);
 		}
-		BuiltinDataTypeMold mold = moldManager.findDataTypeMold(category, typeName);
+		BuiltinDataTypeMold mold = findDataTypeMold(category, typeName);
 		
 		return factory.newDataType(mold);
 	}
@@ -124,12 +163,12 @@
 	}
 	
 	private boolean isSupport(Class<?> adapterClass, DataTypeCategory dataTypeCategory) {
-		List<BuiltinDataTypeMold> allDataTypes = moldManager.getTypeList();
-		for (BuiltinDataTypeMold mold : allDataTypes) {
+		for (BuiltinDataTypeMold mold : typeList) {
 			if (mold.getCategory() == dataTypeCategory && mold.getSupportedAdapterClasses().contains(adapterClass)) {
 				return true;
 			}
 		}
 		return false;
 	}
+	
 }

Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/impl/DefaultDialectInitializer.java
===================================================================
--- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/impl/DefaultDialectInitializer.java	2009-09-14 18:43:23 UTC (rev 3573)
+++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/impl/DefaultDialectInitializer.java	2009-09-14 18:45:41 UTC (rev 3574)
@@ -18,11 +18,13 @@
  */
 package org.jiemamy.dialect.internal.impl;
 
+import java.util.List;
+
 import org.apache.commons.lang.Validate;
 
+import org.jiemamy.dialect.BuiltinDataTypeMold;
 import org.jiemamy.dialect.ConnectionAdvisor;
 import org.jiemamy.dialect.DataTypeResolver;
-import org.jiemamy.dialect.MoldManager;
 import org.jiemamy.dialect.internal.DialectInitializer;
 import org.jiemamy.dialect.internal.EntityImportVisitor;
 import org.jiemamy.dialect.internal.ForeignKeyImportVisitor;
@@ -37,9 +39,6 @@
  */
 public class DefaultDialectInitializer implements DialectInitializer {
 	
-	/** データ型鋳型の管理クラス */
-	private MoldManager moldManager;
-	
 	/** データ型({@link DataType})を中心とした各種解決を行うロジッククラス */
 	private DataTypeResolver dataTypeResolver;
 	
@@ -59,13 +58,12 @@
 	/**
 	 * インスタンスを生成する。
 	 * 
-	 * @param moldManager データ型鋳型の管理クラス
+	 * @param typeList データ型鋳型のリスト
 	 * @throws IllegalArgumentException 引数に{@code null}を与えた場合
 	 */
-	public DefaultDialectInitializer(MoldManager moldManager) {
-		Validate.notNull(moldManager);
-		this.moldManager = moldManager;
-		dataTypeResolver = new DefaultDataTypeResolver(moldManager);
+	public DefaultDialectInitializer(List<BuiltinDataTypeMold> typeList) {
+		Validate.notEmpty(typeList);
+		dataTypeResolver = new DefaultDataTypeResolver(typeList);
 		connectionAdvisor = new DefaultConnectionAdvisor();
 		sqlEmitter = new DefaultSqlEmitter(dataTypeResolver);
 		entityImportVisitor = new DefaultEntityImportVisitor();
@@ -88,8 +86,9 @@
 		return foreignKeyImportVisitor;
 	}
 	
-	public MoldManager getMoldManager() {
-		return moldManager;
+	@Deprecated
+	public org.jiemamy.dialect.MoldManager getMoldManager() {
+		return dataTypeResolver;
 	}
 	
 	public SqlEmitter getSqlEmitter() {
@@ -137,8 +136,13 @@
 	 * 
 	 * @param moldManager データ型鋳型の管理クラス
 	 */
-	public void setMoldManager(MoldManager moldManager) {
-		this.moldManager = moldManager;
+	@Deprecated
+	public void setMoldManager(org.jiemamy.dialect.MoldManager moldManager) {
+		if (moldManager instanceof DataTypeResolver) {
+			dataTypeResolver = (DataTypeResolver) moldManager;
+		} else {
+			throw new UnsupportedOperationException();
+		}
 	}
 	
 	/**

Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/impl/DefaultMoldManager.java
===================================================================
--- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/impl/DefaultMoldManager.java	2009-09-14 18:43:23 UTC (rev 3573)
+++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/impl/DefaultMoldManager.java	2009-09-14 18:45:41 UTC (rev 3574)
@@ -33,7 +33,9 @@
  * {@link MoldManager}のデフォルト実装クラス。
  * 
  * @author daisuke
+ * @deprecated use {@link DefaultDataTypeResolver}
  */
+ @ Deprecated
 public class DefaultMoldManager implements MoldManager {
 	
 	private static Logger logger = LoggerFactory.getLogger(DefaultMoldManager.class);

Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/JiemamyFacadeImpl.java
===================================================================
--- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/JiemamyFacadeImpl.java	2009-09-14 18:43:23 UTC (rev 3573)
+++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/JiemamyFacadeImpl.java	2009-09-14 18:45:41 UTC (rev 3574)
@@ -370,7 +370,7 @@
 			for (ColumnModel columnModel : columns) {
 				if (columnModel.getDataType().equals(domainRef)) {
 					BuiltinDataType domainDataType = domainModel.getDataType();
-					BuiltinDataTypeMold mold = dialect.getMoldManager().findDataTypeMold(domainDataType);
+					BuiltinDataTypeMold mold = dialect.getDataTypeResolver().findDataTypeMold(domainDataType);
 					BuiltinDataType newDataType = factory.newDataType(mold);
 					
 					List<Object> domainDataTypeAdapters = domainDataType.getAdapters();

Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/builder/DataTypeBuilderImpl.java
===================================================================
--- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/builder/DataTypeBuilderImpl.java	2009-09-14 18:43:23 UTC (rev 3573)
+++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/builder/DataTypeBuilderImpl.java	2009-09-14 18:45:41 UTC (rev 3574)
@@ -63,7 +63,7 @@
 			logger.warn("Dialectのロスト", e);
 			dialect = new GenericDialect();
 		}
-		BuiltinDataTypeMold mold = dialect.getMoldManager().findDataTypeMold(category);
+		BuiltinDataTypeMold mold = dialect.getDataTypeResolver().findDataTypeMold(category);
 		model = factory.newDataType(mold);
 	}
 	

Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/serializer/JiemamyDomParser.java
===================================================================
--- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/serializer/JiemamyDomParser.java	2009-09-14 18:43:23 UTC (rev 3573)
+++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/serializer/JiemamyDomParser.java	2009-09-14 18:45:41 UTC (rev 3574)
@@ -162,8 +162,8 @@
 						mold = new BuiltinDataTypeMoldImpl(DataTypeCategory.valueOf(typeCategoryString), typeName);
 					} else {
 						mold =
-								dialect.getMoldManager().findDataTypeMold(DataTypeCategory.valueOf(typeCategoryString),
-										typeName);
+								dialect.getDataTypeResolver().findDataTypeMold(
+										DataTypeCategory.valueOf(typeCategoryString), typeName);
 					}
 				} else {
 					DataTypeCategory category;
@@ -175,7 +175,7 @@
 					if (dialect == null) {
 						mold = new BuiltinDataTypeMoldImpl(category, typeName);
 					} else {
-						mold = dialect.getMoldManager().findDataTypeMold(category, typeName);
+						mold = dialect.getDataTypeResolver().findDataTypeMold(category, typeName);
 					}
 				}
 				BuiltinDataType dataType = factory.newDataType(mold);

Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/utils/DatabaseCleaner.java
===================================================================
--- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/utils/DatabaseCleaner.java	2009-09-14 18:43:23 UTC (rev 3573)
+++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/utils/DatabaseCleaner.java	2009-09-14 18:45:41 UTC (rev 3574)
@@ -81,7 +81,7 @@
 			
 			connection = driver.connect(config.getUri(), props);
 			
-			SqlExecuter sqlExecuter = new SqlExecuter(connection);
+			SqlExecutor sqlExecuter = new SqlExecutor(connection);
 			
 			if (StringUtils.isEmpty(rootModel.getSchemaName()) == false) {
 				sqlExecuter.execute(String.format("DROP SCHEMA \"%s\";", rootModel.getSchemaName()));

Modified: artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/dialect/DefaultSqlEmitterTest.java
===================================================================
--- artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/dialect/DefaultSqlEmitterTest.java	2009-09-14 18:43:23 UTC (rev 3573)
+++ artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/dialect/DefaultSqlEmitterTest.java	2009-09-14 18:45:41 UTC (rev 3574)
@@ -25,7 +25,6 @@
 
 import org.jiemamy.Jiemamy;
 import org.jiemamy.dialect.internal.SqlEmitter;
-import org.jiemamy.dialect.internal.impl.DefaultDataTypeResolver;
 import org.jiemamy.dialect.internal.impl.DefaultSqlEmitter;
 import org.jiemamy.internal.test.TestModelBuilders;
 import org.jiemamy.internal.test.TestModelsTestBase;
@@ -50,7 +49,7 @@
 	public void doTest(TestModelBuilders entry) throws Exception {
 		Jiemamy jiemamy = entry.getBuiltModel();
 		Dialect dialect = jiemamy.getFactory().getRootModel().findDialect();
-		SqlEmitter sqlEmitter = new DefaultSqlEmitter(new DefaultDataTypeResolver(dialect.getMoldManager()));
+		SqlEmitter sqlEmitter = new DefaultSqlEmitter(dialect.getDataTypeResolver());
 		
 		List<SqlStatement> statements = sqlEmitter.emit(jiemamy.getFactory().getRootModel(), new MockEmitConfig());
 		for (SqlStatement sqlStatement : statements) {

Added: artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/dialect/internal/impl/DefaultDataTypeResolverTest.java
===================================================================
--- artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/dialect/internal/impl/DefaultDataTypeResolverTest.java	                        (rev 0)
+++ artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/dialect/internal/impl/DefaultDataTypeResolverTest.java	2009-09-14 18:45:41 UTC (rev 3574)
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2007-2009 Jiemamy Project and the Others.
+ * Created on 2009/09/15
+ *
+ * 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.dialect.internal.impl;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.Assert.assertThat;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import org.jiemamy.dialect.BuiltinDataTypeMold;
+import org.jiemamy.internal.test.mock.MockBuiltinDataTypeMold;
+
+/**
+ * TODO for daisuke
+ * 
+ * @since 0.2
+ * @author daisuke
+ */
+public class DefaultDataTypeResolverTest {
+	
+	private DefaultDataTypeResolver defaultDataTypeResolver;
+	
+
+	/**
+	 * テストを初期化する。
+	 * 
+	 * @throws Exception 例外が発生した場合
+	 */
+	@Before
+	public void setUp() throws Exception {
+		List<BuiltinDataTypeMold> typeList = new ArrayList<BuiltinDataTypeMold>();
+		typeList.add(new MockBuiltinDataTypeMold());
+		defaultDataTypeResolver = new DefaultDataTypeResolver(typeList);
+	}
+	
+	/**
+	 * テストの情報を破棄する。
+	 * 
+	 * @throws Exception 例外が発生した場合
+	 */
+	@After
+	public void tearDown() throws Exception {
+		defaultDataTypeResolver = null;
+	}
+	
+	/**
+	 * {@code null}を返してはいけないメソッドは{@code null}を返さない。
+	 * 
+	 * @throws Exception 例外が発生した場合
+	 */
+	@Test
+	public void test01_nullを返してはいけないメソッドはnullを返さない() throws Exception {
+		assertThat(defaultDataTypeResolver.getTypeList(), is(notNullValue()));
+	}
+	
+}


Property changes on: artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/dialect/internal/impl/DefaultDataTypeResolverTest.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Modified: hermes/jiemamy-dialect-mysql/trunk/src/main/java/org/jiemamy/dialect/mysql/MySqlDialect.java
===================================================================
--- hermes/jiemamy-dialect-mysql/trunk/src/main/java/org/jiemamy/dialect/mysql/MySqlDialect.java	2009-09-14 18:43:23 UTC (rev 3573)
+++ hermes/jiemamy-dialect-mysql/trunk/src/main/java/org/jiemamy/dialect/mysql/MySqlDialect.java	2009-09-14 18:45:41 UTC (rev 3574)
@@ -44,7 +44,6 @@
 import org.jiemamy.dialect.internal.BuiltinDataTypeMoldImpl;
 import org.jiemamy.dialect.internal.SqlEmitter;
 import org.jiemamy.dialect.internal.impl.DefaultDialectInitializer;
-import org.jiemamy.dialect.internal.impl.DefaultMoldManager;
 import org.jiemamy.dialect.mysql.adapter.Unsigned;
 import org.jiemamy.model.datatype.adapter.PrecisionedDataTypeAdapter;
 import org.jiemamy.model.datatype.adapter.SerialDataTypeAdapter;
@@ -122,7 +121,7 @@
 	 * インスタンスを生成する。
 	 */
 	public MySqlDialect() {
-		super(new DefaultDialectInitializer(new DefaultMoldManager(typeList)) {
+		super(new DefaultDialectInitializer(typeList) {
 			
 			private SqlEmitter sqlEmitter;
 			

Modified: hermes/jiemamy-dialect-mysql/trunk/src/test/java/org/jiemamy/dialect/mysql/MySqlDialectTest.java
===================================================================
--- hermes/jiemamy-dialect-mysql/trunk/src/test/java/org/jiemamy/dialect/mysql/MySqlDialectTest.java	2009-09-14 18:43:23 UTC (rev 3573)
+++ hermes/jiemamy-dialect-mysql/trunk/src/test/java/org/jiemamy/dialect/mysql/MySqlDialectTest.java	2009-09-14 18:45:41 UTC (rev 3574)
@@ -28,6 +28,7 @@
 import org.junit.Test;
 
 import org.jiemamy.dialect.BuiltinDataTypeMold;
+import org.jiemamy.dialect.DataTypeResolver;
 import org.jiemamy.dialect.Dialect;
 import org.jiemamy.model.datatype.DataTypeCategory;
 
@@ -78,44 +79,45 @@
 	 */
 	@Test
 	public void test02_nullを返してはいけないメソッドはnullを返さない() throws Exception {
-		assertThat(dialect.getAllDataTypes(), is(notNullValue()));
 		assertThat(dialect.getDataTypeResolver(), is(notNullValue()));
 		assertThat(dialect.getValidator(), is(notNullValue()));
 	}
 	
 	/**
-	 * {@link Dialect#findDataTypeMold(DataTypeCategory, String)}のテスト。
+	 * {@link Dialect#getDataTypeResolver()}のテスト。
 	 * 
 	 * @throws Exception 例外が発生した場合
 	 */
 	@Test
-	public void test03_findDataTypeMoldのテスト() throws Exception {
+	public void test03_DataTypeResolverのテスト() throws Exception {
+		DataTypeResolver dataTypeResolver = dialect.getDataTypeResolver();
+		
 		// 完全一致な情報を与えると、そのままのモールドが得られる。
-		BuiltinDataTypeMold mold = dialect.findDataTypeMold(DataTypeCategory.INTEGER, "INTEGER");
+		BuiltinDataTypeMold mold = dataTypeResolver.findDataTypeMold(DataTypeCategory.INTEGER, "INTEGER");
 		assertThat(mold.getCategory(), is(DataTypeCategory.INTEGER));
 		assertThat(mold.getName(), is("INTEGER"));
 		
 		// 適当な情報を与えた場合、型名が一致したモールドが得られる。
-		mold = dialect.findDataTypeMold(DataTypeCategory.VARBIT, "INTEGER");
+		mold = dataTypeResolver.findDataTypeMold(DataTypeCategory.VARBIT, "INTEGER");
 		assertThat(mold.getCategory(), is(DataTypeCategory.INTEGER));
 		assertThat(mold.getName(), is("INTEGER"));
 		
 		// Oracleっぽい情報を与えても、Postgres用のモールドが得られる。
-		mold = dialect.findDataTypeMold(DataTypeCategory.VARCHAR, "VARCHAR2");
+		mold = dataTypeResolver.findDataTypeMold(DataTypeCategory.VARCHAR, "VARCHAR2");
 		assertThat(mold.getCategory(), is(DataTypeCategory.VARCHAR));
 		assertThat(mold.getName(), is("VARCHAR"));
 		
 		// 意味不明な情報を与えた場合、UNKNOWNが得られる。
-		mold = dialect.findDataTypeMold(DataTypeCategory.OTHER, "WONDERFUL");
+		mold = dataTypeResolver.findDataTypeMold(DataTypeCategory.OTHER, "WONDERFUL");
 		assertThat(mold.getCategory(), is(DataTypeCategory.OTHER));
 		assertThat(mold.getName(), is("UNKNOWN"));
 		
-		mold = dialect.findDataTypeMold(DataTypeCategory.INTEGER, "WONDERFUL");
+		mold = dataTypeResolver.findDataTypeMold(DataTypeCategory.INTEGER, "WONDERFUL");
 		assertThat(mold.getCategory(), is(DataTypeCategory.INTEGER));
 		assertThat(mold.getName(), is("INTEGER"));
 		
 		try {
-			dialect.findDataTypeMold(null, null);
+			dataTypeResolver.findDataTypeMold(null, null);
 			fail();
 		} catch (IllegalArgumentException e) {
 			// success

Modified: hermes/jiemamy-dialect-mysql/trunk/src/test/java/org/jiemamy/dialect/mysql/MySqlEmitterTest.java
===================================================================
--- hermes/jiemamy-dialect-mysql/trunk/src/test/java/org/jiemamy/dialect/mysql/MySqlEmitterTest.java	2009-09-14 18:43:23 UTC (rev 3573)
+++ hermes/jiemamy-dialect-mysql/trunk/src/test/java/org/jiemamy/dialect/mysql/MySqlEmitterTest.java	2009-09-14 18:45:41 UTC (rev 3574)
@@ -32,11 +32,9 @@
 import org.jiemamy.Jiemamy;
 import org.jiemamy.JiemamyFactory;
 import org.jiemamy.dialect.BuiltinDataTypeMold;
-import org.jiemamy.dialect.DataTypeResolver;
 import org.jiemamy.dialect.Dialect;
 import org.jiemamy.dialect.EmitConfig;
 import org.jiemamy.dialect.internal.SqlEmitter;
-import org.jiemamy.dialect.internal.impl.DefaultDataTypeResolver;
 import org.jiemamy.dialect.mysql.adapter.StandardEngine;
 import org.jiemamy.dialect.mysql.adapter.StorageEngine;
 import org.jiemamy.dialect.mysql.adapter.StorageEngineImpl;
@@ -80,8 +78,7 @@
 		Dialect dialect = mb.rootModel.findDialect();
 		
 		jiemamy = mb.getJiemamy();
-		DataTypeResolver dataTypeResolver = new DefaultDataTypeResolver(dialect.getMoldManager());
-		sqlEmitter = new MySqlEmitter(dataTypeResolver);
+		sqlEmitter = new MySqlEmitter(dialect.getDataTypeResolver());
 	}
 	
 	/**
@@ -131,7 +128,7 @@
 		columnModel.setName("COLUMN1");
 		columnModel.setPrimaryKey(factory.newModel(PrimaryKey.class));
 		
-		BuiltinDataTypeMold mold = dialect.findDataTypeMold(DataTypeCategory.INTEGER);
+		BuiltinDataTypeMold mold = dialect.getDataTypeResolver().findDataTypeMold(DataTypeCategory.INTEGER);
 		BuiltinDataType dataType = factory.newDataType(mold);
 		dataType.getAdapter(SerialDataTypeAdapter.class).setSerial(true);
 		

Modified: hermes/jiemamy-dialect-oracle/trunk/src/main/java/org/jiemamy/dialect/oracle/OracleDialect.java
===================================================================
--- hermes/jiemamy-dialect-oracle/trunk/src/main/java/org/jiemamy/dialect/oracle/OracleDialect.java	2009-09-14 18:43:23 UTC (rev 3573)
+++ hermes/jiemamy-dialect-oracle/trunk/src/main/java/org/jiemamy/dialect/oracle/OracleDialect.java	2009-09-14 18:45:41 UTC (rev 3574)
@@ -46,7 +46,6 @@
 import org.jiemamy.dialect.internal.AbstractDialect;
 import org.jiemamy.dialect.internal.BuiltinDataTypeMoldImpl;
 import org.jiemamy.dialect.internal.impl.DefaultDialectInitializer;
-import org.jiemamy.dialect.internal.impl.DefaultMoldManager;
 import org.jiemamy.model.datatype.adapter.PrecisionedDataTypeAdapter;
 import org.jiemamy.model.datatype.adapter.SizedDataTypeAdapter;
 import org.jiemamy.model.datatype.adapter.TimezonedDataTypeAdapter;
@@ -91,7 +90,7 @@
 	 * インスタンスを生成する。
 	 */
 	public OracleDialect() {
-		super(new DefaultDialectInitializer(new DefaultMoldManager(typeList)));
+		super(new DefaultDialectInitializer(typeList));
 	}
 	
 	@Override

Modified: hermes/jiemamy-dialect-postgresql/trunk/src/main/java/org/jiemamy/dialect/postgresql/PostgresqlDialect.java
===================================================================
--- hermes/jiemamy-dialect-postgresql/trunk/src/main/java/org/jiemamy/dialect/postgresql/PostgresqlDialect.java	2009-09-14 18:43:23 UTC (rev 3573)
+++ hermes/jiemamy-dialect-postgresql/trunk/src/main/java/org/jiemamy/dialect/postgresql/PostgresqlDialect.java	2009-09-14 18:45:41 UTC (rev 3574)
@@ -44,7 +44,6 @@
 import org.jiemamy.dialect.internal.EntityImportVisitor;
 import org.jiemamy.dialect.internal.SqlEmitter;
 import org.jiemamy.dialect.internal.impl.DefaultDialectInitializer;
-import org.jiemamy.dialect.internal.impl.DefaultMoldManager;
 import org.jiemamy.model.datatype.adapter.PrecisionedDataTypeAdapter;
 import org.jiemamy.model.datatype.adapter.SizedDataTypeAdapter;
 import org.jiemamy.model.datatype.adapter.TimezonedDataTypeAdapter;
@@ -109,7 +108,7 @@
 	 * インスタンスを生成する。
 	 */
 	public PostgresqlDialect() {
-		super(new DefaultDialectInitializer(new DefaultMoldManager(typeList)) {
+		super(new DefaultDialectInitializer(typeList) {
 			
 			private SqlEmitter sqlEmitter;
 			

Modified: hermes/jiemamy-dialect-postgresql/trunk/src/test/java/org/jiemamy/dialect/postgresql/PostgresqlDialectTest.java
===================================================================
--- hermes/jiemamy-dialect-postgresql/trunk/src/test/java/org/jiemamy/dialect/postgresql/PostgresqlDialectTest.java	2009-09-14 18:43:23 UTC (rev 3573)
+++ hermes/jiemamy-dialect-postgresql/trunk/src/test/java/org/jiemamy/dialect/postgresql/PostgresqlDialectTest.java	2009-09-14 18:45:41 UTC (rev 3574)
@@ -34,6 +34,7 @@
 import org.jiemamy.Jiemamy;
 import org.jiemamy.JiemamyFactory;
 import org.jiemamy.dialect.BuiltinDataTypeMold;
+import org.jiemamy.dialect.DataTypeResolver;
 import org.jiemamy.dialect.Dialect;
 import org.jiemamy.model.RootModel;
 import org.jiemamy.model.datatype.DataTypeCategory;
@@ -72,7 +73,7 @@
 		rootModel = factory.getRootModel();
 		rootModel.setDialectClassName(PostgresqlDialect.class.getName());
 		
-		dialect = jiemamy.getDialect(rootModel);
+		dialect = jiemamy.getInstanceProvider(Dialect.class).getInstance(rootModel.getDialectClassName());
 	}
 	
 	/**
@@ -105,44 +106,44 @@
 	 */
 	@Test
 	public void test02_nullを返してはいけないメソッドはnullを返さない() throws Exception {
-		assertThat(dialect.getAllDataTypes(), is(notNullValue()));
 		assertThat(dialect.getDataTypeResolver(), is(notNullValue()));
 		assertThat(dialect.getValidator(), is(notNullValue()));
 	}
 	
 	/**
-	 * {@link Dialect#findDataTypeMold(DataTypeCategory, String)}のテスト。
+	 * {@link Dialect#getDataTypeResolver()}のテスト。
 	 * 
 	 * @throws Exception 例外が発生した場合
 	 */
 	@Test
 	public void test03_findDataTypeMoldのテスト() throws Exception {
+		DataTypeResolver dataTypeResolver = dialect.getDataTypeResolver();
 		// 完全一致な情報を与えると、そのままのモールドが得られる。
-		BuiltinDataTypeMold mold = dialect.findDataTypeMold(DataTypeCategory.INTEGER, "INTEGER");
+		BuiltinDataTypeMold mold = dataTypeResolver.findDataTypeMold(DataTypeCategory.INTEGER, "INTEGER");
 		assertThat(mold.getCategory(), is(DataTypeCategory.INTEGER));
 		assertThat(mold.getName(), is("INTEGER"));
 		
 		// 適当な情報を与えた場合、型名が一致したモールドが得られる。
-		mold = dialect.findDataTypeMold(DataTypeCategory.VARBIT, "INTEGER");
+		mold = dataTypeResolver.findDataTypeMold(DataTypeCategory.VARBIT, "INTEGER");
 		assertThat(mold.getCategory(), is(DataTypeCategory.INTEGER));
 		assertThat(mold.getName(), is("INTEGER"));
 		
 		// Oracleっぽい情報を与えても、Postgres用のモールドが得られる。
-		mold = dialect.findDataTypeMold(DataTypeCategory.VARCHAR, "VARCHAR2");
+		mold = dataTypeResolver.findDataTypeMold(DataTypeCategory.VARCHAR, "VARCHAR2");
 		assertThat(mold.getCategory(), is(DataTypeCategory.VARCHAR));
 		assertThat(mold.getName(), is("VARCHAR"));
 		
 		// 意味不明な情報を与えた場合、UNKNOWNが得られる。
-		mold = dialect.findDataTypeMold(DataTypeCategory.OTHER, "WONDERFUL");
+		mold = dataTypeResolver.findDataTypeMold(DataTypeCategory.OTHER, "WONDERFUL");
 		assertThat(mold.getCategory(), is(DataTypeCategory.OTHER));
 		assertThat(mold.getName(), is("UNKNOWN"));
 		
-		mold = dialect.findDataTypeMold(DataTypeCategory.INTEGER, "WONDERFUL");
+		mold = dataTypeResolver.findDataTypeMold(DataTypeCategory.INTEGER, "WONDERFUL");
 		assertThat(mold.getCategory(), is(DataTypeCategory.INTEGER));
 		assertThat(mold.getName(), is("INTEGER"));
 		
 		try {
-			dialect.findDataTypeMold(null, null);
+			dataTypeResolver.findDataTypeMold(null, null);
 			fail();
 		} catch (IllegalArgumentException e) {
 			// success

Modified: hermes/jiemamy-dialect-sql99/trunk/src/main/java/org/jiemamy/dialect/sql99/Sql99Dialect.java
===================================================================
--- hermes/jiemamy-dialect-sql99/trunk/src/main/java/org/jiemamy/dialect/sql99/Sql99Dialect.java	2009-09-14 18:43:23 UTC (rev 3573)
+++ hermes/jiemamy-dialect-sql99/trunk/src/main/java/org/jiemamy/dialect/sql99/Sql99Dialect.java	2009-09-14 18:45:41 UTC (rev 3574)
@@ -45,7 +45,6 @@
 import org.jiemamy.dialect.internal.AbstractDialect;
 import org.jiemamy.dialect.internal.BuiltinDataTypeMoldImpl;
 import org.jiemamy.dialect.internal.impl.DefaultDialectInitializer;
-import org.jiemamy.dialect.internal.impl.DefaultMoldManager;
 import org.jiemamy.model.datatype.adapter.PrecisionedDataTypeAdapter;
 import org.jiemamy.model.datatype.adapter.SizedDataTypeAdapter;
 import org.jiemamy.model.datatype.adapter.TimezonedDataTypeAdapter;
@@ -90,7 +89,7 @@
 	 * インスタンスを生成する。
 	 */
 	public Sql99Dialect() {
-		super(new DefaultDialectInitializer(new DefaultMoldManager(typeList)));
+		super(new DefaultDialectInitializer(typeList));
 	}
 	
 	@Override

Modified: hermes/jiemamy-dialect-sql99/trunk/src/test/java/org/jiemamy/dialect/sql99/Sql99DialectTest.java
===================================================================
--- hermes/jiemamy-dialect-sql99/trunk/src/test/java/org/jiemamy/dialect/sql99/Sql99DialectTest.java	2009-09-14 18:43:23 UTC (rev 3573)
+++ hermes/jiemamy-dialect-sql99/trunk/src/test/java/org/jiemamy/dialect/sql99/Sql99DialectTest.java	2009-09-14 18:45:41 UTC (rev 3574)
@@ -28,6 +28,7 @@
 import org.junit.Test;
 
 import org.jiemamy.dialect.BuiltinDataTypeMold;
+import org.jiemamy.dialect.DataTypeResolver;
 import org.jiemamy.dialect.Dialect;
 import org.jiemamy.model.datatype.DataTypeCategory;
 
@@ -78,44 +79,44 @@
 	 */
 	@Test
 	public void test02_nullを返してはいけないメソッドはnullを返さない() throws Exception {
-		assertThat(dialect.getAllDataTypes(), is(notNullValue()));
 		assertThat(dialect.getDataTypeResolver(), is(notNullValue()));
 		assertThat(dialect.getValidator(), is(notNullValue()));
 	}
 	
 	/**
-	 * {@link Dialect#findDataTypeMold(DataTypeCategory, String)}のテスト。
+	 * {@link Dialect#getDataTypeResolver()}のテスト。
 	 * 
 	 * @throws Exception 例外が発生した場合
 	 */
 	@Test
 	public void test03_findDataTypeMoldのテスト() throws Exception {
+		DataTypeResolver dataTypeResolver = dialect.getDataTypeResolver();
 		// 完全一致な情報を与えると、そのままのモールドが得られる。
-		BuiltinDataTypeMold mold = dialect.findDataTypeMold(DataTypeCategory.INTEGER, "INTEGER");
+		BuiltinDataTypeMold mold = dataTypeResolver.findDataTypeMold(DataTypeCategory.INTEGER, "INTEGER");
 		assertThat(mold.getCategory(), is(DataTypeCategory.INTEGER));
 		assertThat(mold.getName(), is("INTEGER"));
 		
 		// 適当な情報を与えた場合、型名が一致したモールドが得られる。
-		mold = dialect.findDataTypeMold(DataTypeCategory.VARBIT, "INTEGER");
+		mold = dataTypeResolver.findDataTypeMold(DataTypeCategory.VARBIT, "INTEGER");
 		assertThat(mold.getCategory(), is(DataTypeCategory.INTEGER));
 		assertThat(mold.getName(), is("INTEGER"));
 		
 		// Oracleっぽい情報を与えても、Postgres用のモールドが得られる。
-		mold = dialect.findDataTypeMold(DataTypeCategory.VARCHAR, "VARCHAR2");
+		mold = dataTypeResolver.findDataTypeMold(DataTypeCategory.VARCHAR, "VARCHAR2");
 		assertThat(mold.getCategory(), is(DataTypeCategory.VARCHAR));
 		assertThat(mold.getName(), is("VARCHAR"));
 		
 		// 意味不明な情報を与えた場合、カテゴリ内で最初に定義したモールドが得られる。
-		mold = dialect.findDataTypeMold(DataTypeCategory.INTEGER, "WONDERFUL");
+		mold = dataTypeResolver.findDataTypeMold(DataTypeCategory.INTEGER, "WONDERFUL");
 		assertThat(mold.getCategory(), is(DataTypeCategory.INTEGER));
 		assertThat(mold.getName(), is("INTEGER"));
 		
 		// 一致するものがまったく見つからない場合、UNKNOWNが得られる。
-		mold = dialect.findDataTypeMold(DataTypeCategory.OTHER, "WONDERFUL");
+		mold = dataTypeResolver.findDataTypeMold(DataTypeCategory.OTHER, "WONDERFUL");
 		assertThat(mold, is(BuiltinDataTypeMold.UNKNOWN));
 		
 		try {
-			dialect.findDataTypeMold(null, null);
+			dataTypeResolver.findDataTypeMold(null, null);
 			fail();
 		} catch (IllegalArgumentException e) {
 			// success

Modified: zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/dialect/DataTypeResolver.java
===================================================================
--- zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/dialect/DataTypeResolver.java	2009-09-14 18:43:23 UTC (rev 3573)
+++ zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/dialect/DataTypeResolver.java	2009-09-14 18:45:41 UTC (rev 3574)
@@ -25,6 +25,7 @@
 import org.jiemamy.ReferenceResolver;
 import org.jiemamy.model.datatype.BuiltinDataType;
 import org.jiemamy.model.datatype.DataType;
+import org.jiemamy.model.datatype.DataTypeCategory;
 import org.jiemamy.model.sql.Token;
 
 /**
@@ -33,9 +34,65 @@
  * @since 0.2
  * @author daisuke
  */
-public interface DataTypeResolver {
+ @ SuppressWarnings("deprecation")
+// 互換性維持のため、MoldManagerとしても振る舞えるようにしてある。
+public interface DataTypeResolver extends MoldManager {
 	
 	/**
+	 * 指定したデータ型に適合する、最も適したモールドを取得する。
+	 * 
+	 * @param builtinDataType データ型
+	 * @return モールド
+	 * @throws IllegalArgumentException 引数に{@code null}を与えた場合
+	 * @since 0.3
+	 */
+	BuiltinDataTypeMold findDataTypeMold(BuiltinDataType builtinDataType);
+	
+	/**
+	 * 指定したカテゴリに最も適したモールドを取得する。
+	 * 
+	 * <p>typeNameには、{@code category.name()}を用いる。</p>
+	 * 
+	 * <p>{@code null}を返してはならない。</p>
+	 * 
+	 * @param category 型カテゴリ
+	 * @return モールド
+	 * @throws IllegalArgumentException 引数に{@code null}を与えた場合
+	 * @see #findDataTypeMold(DataTypeCategory, String)
+	 * @since 0.3
+	 */
+	BuiltinDataTypeMold findDataTypeMold(DataTypeCategory category);
+	
+	/**
+	 * 指定したカテゴリ、型名に最も適したモールドを取得する。
+	 * 
+	 * <p><ol>
+	 *   <li>カテゴリと型名が完全一致するモールドがあれば、それを返す。</li>
+	 *   <li>見つからなければ、次に、型名が完全一致するモールドがあれば、それを返す。</li>
+	 *   <li>さらに見つからなければ、カテゴリが一致する中で、先に定義されているモールドを返す。ただし、カテゴリが{@link DataTypeCategory#OTHER}
+	 *   ではない場合に限る。</li>
+	 *   <li>与えられたカテゴリに該当する型がひとつもマッピングされていない場合は、 {@link BuiltinDataTypeMold#UNKNOWN}を返す。</li>
+	 * </ol></p>
+	 * 
+	 * <p>{@code null}を返してはならない。</p>
+	 * 
+	 * @param category 型カテゴリ
+	 * @param typeName 型名
+	 * @return モールド
+	 * @throws IllegalArgumentException 引数typeNameに{@code null}を与えた場合
+	 * @since 0.3
+	 */
+	BuiltinDataTypeMold findDataTypeMold(DataTypeCategory category, String typeName);
+	
+	/**
+	 * 全ての鋳型のリストを取得する。
+	 * 
+	 * @return 全ての鋳型のリスト
+	 * @since 0.3
+	 */
+	List<BuiltinDataTypeMold> getTypeList();
+	
+	/**
 	 * 型記述子からデータ型をあらわすトークンシーケンスを解決する。
 	 * 
 	 * <p>返される{@link List}は他に影響を及ぼさない独立したインスタンスである。</p>
@@ -61,4 +118,5 @@
 	 * @since 0.2
 	 */
 	BuiltinDataType resolveDataType(JiemamyFactory factory, int sqlType, String typeName);
+	
 }

Modified: zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/dialect/Dialect.java
===================================================================
--- zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/dialect/Dialect.java	2009-09-14 18:43:23 UTC (rev 3573)
+++ zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/dialect/Dialect.java	2009-09-14 18:45:41 UTC (rev 3574)
@@ -142,7 +142,9 @@
 	 * 
 	 * @return データ型鋳型の管理マネージャ
 	 * @since 0.2
+	 * @deprecated use {@link #getDataTypeResolver()}
 	 */
+	@Deprecated
 	MoldManager getMoldManager();
 	
 	/**

Modified: zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/dialect/MoldManager.java
===================================================================
--- zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/dialect/MoldManager.java	2009-09-14 18:43:23 UTC (rev 3573)
+++ zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/dialect/MoldManager.java	2009-09-14 18:45:41 UTC (rev 3574)
@@ -27,7 +27,9 @@
  * データ型鋳型の管理インターフェイス。
  * 
  * @author daisuke
+ * @deprecated use {@link DataTypeResolver}
  */
+ @ Deprecated
 public interface MoldManager {
 	
 	/**

Modified: zeus/trunk/jiemamy-test-helper/src/main/java/org/jiemamy/internal/test/ModelUtil.java
===================================================================
--- zeus/trunk/jiemamy-test-helper/src/main/java/org/jiemamy/internal/test/ModelUtil.java	2009-09-14 18:43:23 UTC (rev 3573)
+++ zeus/trunk/jiemamy-test-helper/src/main/java/org/jiemamy/internal/test/ModelUtil.java	2009-09-14 18:45:41 UTC (rev 3574)
@@ -53,7 +53,7 @@
 		RootModel rootModel = factory.getRootModel();
 		try {
 			Dialect dialect = jiemamy.getInstanceProvider(Dialect.class).getInstance(rootModel.getDialectClassName());
-			BuiltinDataTypeMold mold = dialect.getMoldManager().findDataTypeMold(category);
+			BuiltinDataTypeMold mold = dialect.getDataTypeResolver().findDataTypeMold(category);
 			return factory.newDataType(mold);
 		} catch (ClassNotFoundException e) {
 			throw new UnexpectedConditionError("", e); // TODO doc

Modified: zeus/trunk/jiemamy-test-helper/src/main/java/org/jiemamy/internal/test/mock/MockBuiltinDataTypeMold.java
===================================================================
--- zeus/trunk/jiemamy-test-helper/src/main/java/org/jiemamy/internal/test/mock/MockBuiltinDataTypeMold.java	2009-09-14 18:43:23 UTC (rev 3573)
+++ zeus/trunk/jiemamy-test-helper/src/main/java/org/jiemamy/internal/test/mock/MockBuiltinDataTypeMold.java	2009-09-14 18:45:41 UTC (rev 3574)
@@ -35,7 +35,7 @@
  * 
  * @author daisuke
  */
-class MockBuiltinDataTypeMold implements BuiltinDataTypeMold {
+public class MockBuiltinDataTypeMold implements BuiltinDataTypeMold {
 	
 	@SuppressWarnings("unchecked")
 	public Collection<String> getAliases() {

Modified: zeus/trunk/jiemamy-test-helper/src/main/java/org/jiemamy/internal/test/mock/MockDataTypeResolver.java
===================================================================
--- zeus/trunk/jiemamy-test-helper/src/main/java/org/jiemamy/internal/test/mock/MockDataTypeResolver.java	2009-09-14 18:43:23 UTC (rev 3573)
+++ zeus/trunk/jiemamy-test-helper/src/main/java/org/jiemamy/internal/test/mock/MockDataTypeResolver.java	2009-09-14 18:45:41 UTC (rev 3574)
@@ -21,13 +21,10 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.commons.collections15.ListUtils;
-
 import org.jiemamy.JiemamyFactory;
 import org.jiemamy.ReferenceResolver;
 import org.jiemamy.dialect.BuiltinDataTypeMold;
 import org.jiemamy.dialect.DataTypeResolver;
-import org.jiemamy.dialect.MoldManager;
 import org.jiemamy.model.datatype.BuiltinDataType;
 import org.jiemamy.model.datatype.DataType;
 import org.jiemamy.model.datatype.DataTypeCategory;
@@ -38,7 +35,7 @@
  * 
  * @author daisuke
  */
-public class MockDataTypeResolver implements DataTypeResolver, MoldManager {
+public class MockDataTypeResolver implements DataTypeResolver {
 	
 	static List<BuiltinDataTypeMold> molds;
 	
@@ -64,9 +61,16 @@
 		return molds;
 	}
 	
-	@SuppressWarnings("unchecked")
 	public List<Token> resolveDataType(DataType dataType, ReferenceResolver resolver) {
-		return ListUtils.EMPTY_LIST;
+		List<Token> tokens = new ArrayList<Token>();
+		tokens.add(new Token() {
+			
+			@Override
+			public String toString() {
+				return "OTHER";
+			}
+		});
+		return tokens;
 	}
 	
 	public BuiltinDataType resolveDataType(JiemamyFactory factory, int sqlType, String typeName) {

Modified: zeus/trunk/jiemamy-test-helper/src/main/java/org/jiemamy/internal/test/mock/MockDialect.java
===================================================================
--- zeus/trunk/jiemamy-test-helper/src/main/java/org/jiemamy/internal/test/mock/MockDialect.java	2009-09-14 18:43:23 UTC (rev 3573)
+++ zeus/trunk/jiemamy-test-helper/src/main/java/org/jiemamy/internal/test/mock/MockDialect.java	2009-09-14 18:45:41 UTC (rev 3574)
@@ -31,7 +31,6 @@
 import org.jiemamy.dialect.Dialect;
 import org.jiemamy.dialect.EmitConfig;
 import org.jiemamy.dialect.ImportMetadataConfig;
-import org.jiemamy.dialect.MoldManager;
 import org.jiemamy.model.RootModel;
 import org.jiemamy.model.attribute.constraint.ForeignKey;
 import org.jiemamy.model.datatype.BuiltinDataType;
@@ -79,7 +78,8 @@
 		return new MockDataTypeResolver();
 	}
 	
-	public MoldManager getMoldManager() {
+	@Deprecated
+	public org.jiemamy.dialect.MoldManager getMoldManager() {
 		return mgr;
 	}
 	




Jiemamy-notify メーリングリストの案内
Back to archive index