[Jiemamy-notify:2225] commit [3272] refactor

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2009年 4月 14日 (火) 20:27:05 JST


Revision: 3272
          http://svn.sourceforge.jp/view?root=jiemamy&view=rev&rev=3272
Author:   daisuke_m
Date:     2009-04-14 20:27:05 +0900 (Tue, 14 Apr 2009)

Log Message:
-----------
refactor

Modified Paths:
--------------
    artemis/trunk/jiemamy-core/pom.xml
    artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/impl/DefaultEntityImportVisitor.java
    artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/editcommand/AddRecordsToDataSetCommand.java
    artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/editcommand/RemoveRecordsFromDataSetCommand.java
    artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/utils/DatabaseCleanerTest.java
    artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/utils/model/ColumnUtilTest.java
    artemis/trunk/jiemamy-dialect-postgresql/pom.xml
    artemis/trunk/jiemamy-dialect-postgresql/src/test/java/org/jiemamy/dialect/postgresql/PostgresqlDialectTest.java
    charon/jiemamy-jpa-importer/trunk/src/test/java/org/jiemamy/composer/importer/JpaImporterTest.java
    eros/maven-jiemamy-plugin/trunk/src/main/java/org/jiemamy/maven/CleanDatabaseMojo.java

Removed Paths:
-------------
    artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/composer/importer/


-------------- next part --------------
Modified: artemis/trunk/jiemamy-core/pom.xml
===================================================================
--- artemis/trunk/jiemamy-core/pom.xml	2009-04-14 10:22:29 UTC (rev 3271)
+++ artemis/trunk/jiemamy-core/pom.xml	2009-04-14 11:27:05 UTC (rev 3272)
@@ -82,12 +82,6 @@
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>com.h2database</groupId>
-      <artifactId>h2</artifactId>
-      <version>1.1.102</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>jiemamy-test-helper</artifactId>
       <version>0.0.1-SNAPSHOT</version>

Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/impl/DefaultEntityImportVisitor.java
===================================================================
--- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/impl/DefaultEntityImportVisitor.java	2009-04-14 10:22:29 UTC (rev 3271)
+++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/impl/DefaultEntityImportVisitor.java	2009-04-14 11:27:05 UTC (rev 3272)
@@ -68,6 +68,11 @@
 	
 	private static Logger logger = LoggerFactory.getLogger(DefaultEntityImportVisitor.class);
 	
+	private static final String[] DEFAULT_TYPES = new String[] {
+		"TABLE",
+		"VIEW"
+	};
+	
 	/** DBメタデータ */
 	private TypeSafeDatabaseMetaData meta;
 	
@@ -88,11 +93,6 @@
 	 */
 	private Collection<String> selectedEntities;
 	
-	private static final String[] DEFAULT_TYPES = new String[] {
-		"TABLE",
-		"VIEW"
-	};
-	
 	private Map<String, EntityModel> importedEntities;
 	
 	/** データ型リゾルバ */
@@ -174,69 +174,11 @@
 		TypeSafeResultSet<ColumnMeta> columnsResult = null;
 		TypeSafeResultSet<PrimaryKeyMeta> keysResult = null;
 		try {
-			columnsResult = meta.getColumns("", /* TODO config.getSchema()*/null, tableName, "%");
-			ForEachUtil.accept(columnsResult,
-					new AbstractTypeSafeResultSetVisitor<ColumnMeta, List<ColumnModel>, SQLException>() {
-						
-						public List<ColumnModel> visit(ColumnMeta element) {
-							BuiltinDataType dataType =
-									dataTypeResolver.resolveDataType(factory, element.dataType, element.typeName);
-							
-							ColumnModel columnModel = factory.newModel(ColumnModel.class);
-							columnModel.setName(element.columnName);
-							columnModel.setDataType(dataType);
-							columns.add(columnModel);
-							
-							if (dataType.hasAdapter(SizedDataTypeAdapter.class)) {
-								dataType.getAdapter(SizedDataTypeAdapter.class).setSize(element.columnSize);
-								logger.debug("  " + element.columnName + " = " + element.typeName + "("
-										+ element.columnSize + ")");
-							} else if (dataType.hasAdapter(PrecisionedDataTypeAdapter.class)) {
-								dataType.getAdapter(PrecisionedDataTypeAdapter.class).setPrecision(element.columnSize);
-								dataType.getAdapter(PrecisionedDataTypeAdapter.class).setScale(element.decimalDigits);
-								logger.debug("  " + element.columnName + " = " + element.typeName + "("
-										+ element.columnSize + ", " + element.decimalDigits + ")");
-							} else {
-								logger.debug("  " + element.columnName + " = " + element.typeName);
-							}
-							
-							columnModel.setDefaultValue(element.columnDef);
-							
-							if (element.nullable == Nullable.NO_NULLS) {
-								NotNullConstraint notNullConstraint = factory.newModel(NotNullConstraint.class);
-								columnModel.setNotNullConstraint(notNullConstraint);
-							}
-							
-							// TODO check制約のインポート
-							
-							finalResult.add(columnModel);
-							return null;
-						}
-						
-						@Override
-						protected void init() {
-							finalResult = CollectionsUtil.newArrayList();
-						}
-						
-					});
+			columnsResult = meta.getColumns("", config.getSchema(), tableName, "%");
+			ForEachUtil.accept(columnsResult, new ColumnMetaVisitor(factory, dataTypeResolver, columns));
 			
-			keysResult = meta.getPrimaryKeys("", /* TODO config.getSchema()*/null, tableName);
-			ForEachUtil.accept(keysResult,
-					new AbstractTypeSafeResultSetVisitor<PrimaryKeyMeta, Boolean, SQLException>() {
-						
-						public Boolean visit(PrimaryKeyMeta element) {
-							PrimaryKey primaryKey = factory.newModel(PrimaryKey.class);
-							for (ColumnModel columnModel : columns) {
-								if (columnModel.getName().equals(element.columnName)) {
-									ColumnRef columnRef = factory.newReference(columnModel);
-									primaryKey.getKeyColumns().add(columnRef);
-								}
-							}
-							tableModel.getAttributes().add(primaryKey);
-							return null;
-						}
-						
-					});
+			keysResult = meta.getPrimaryKeys("", config.getSchema(), tableName);
+			ForEachUtil.accept(keysResult, new PrimaryKeyMetaVisitor(factory, tableModel.getAttributes(), columns));
 		} finally {
 			JmIOUtil.closeQuietly(columnsResult);
 			JmIOUtil.closeQuietly(keysResult);
@@ -276,4 +218,104 @@
 		return dataTypeResolver;
 	}
 	
+
+	private static class ColumnMetaVisitor extends
+			AbstractTypeSafeResultSetVisitor<ColumnMeta, List<ColumnModel>, SQLException> {
+		
+		private final JiemamyFactory factory;
+		
+		private final List<ColumnModel> columns;
+		
+		private final DataTypeResolver dataTypeResolver;
+		
+
+		/**
+		 * インスタンスを生成する。
+		 * 
+		 * @param factory 新規モデル作成を行うためのファクトリ
+		 * @param dataTypeResolver データ型リゾルバ
+		 * @param columns 読み込んだカラムを格納するリスト
+		 */
+		private ColumnMetaVisitor(JiemamyFactory factory, DataTypeResolver dataTypeResolver, List<ColumnModel> columns) {
+			this.factory = factory;
+			this.dataTypeResolver = dataTypeResolver;
+			this.columns = columns;
+		}
+		
+		public List<ColumnModel> visit(ColumnMeta element) {
+			BuiltinDataType dataType = dataTypeResolver.resolveDataType(factory, element.dataType, element.typeName);
+			
+			ColumnModel columnModel = factory.newModel(ColumnModel.class);
+			columnModel.setName(element.columnName);
+			columnModel.setDataType(dataType);
+			columns.add(columnModel);
+			
+			if (dataType.hasAdapter(SizedDataTypeAdapter.class)) {
+				dataType.getAdapter(SizedDataTypeAdapter.class).setSize(element.columnSize);
+				logger.debug("  " + element.columnName + " = " + element.typeName + "(" + element.columnSize + ")");
+			} else if (dataType.hasAdapter(PrecisionedDataTypeAdapter.class)) {
+				dataType.getAdapter(PrecisionedDataTypeAdapter.class).setPrecision(element.columnSize);
+				dataType.getAdapter(PrecisionedDataTypeAdapter.class).setScale(element.decimalDigits);
+				logger.debug("  " + element.columnName + " = " + element.typeName + "(" + element.columnSize + ", "
+						+ element.decimalDigits + ")");
+			} else {
+				logger.debug("  " + element.columnName + " = " + element.typeName);
+			}
+			
+			columnModel.setDefaultValue(element.columnDef);
+			
+			if (element.nullable == Nullable.NO_NULLS) {
+				NotNullConstraint notNullConstraint = factory.newModel(NotNullConstraint.class);
+				columnModel.setNotNullConstraint(notNullConstraint);
+			}
+			
+			// TODO check制約のインポート
+			
+			finalResult.add(columnModel);
+			return null;
+		}
+		
+		@Override
+		protected void init() {
+			finalResult = CollectionsUtil.newArrayList();
+		}
+	}
+	
+	private static class PrimaryKeyMetaVisitor extends
+			AbstractTypeSafeResultSetVisitor<PrimaryKeyMeta, Boolean, SQLException> {
+		
+		private final List<? super PrimaryKey> primaryKeys;
+		
+		private final JiemamyFactory factory;
+		
+		private final List<ColumnModel> columns;
+		
+
+		/**
+		 * インスタンスを生成する。
+		 * 
+		 * @param factory 新規モデル作成を行うためのファクトリ
+		 * @param primaryKeys 読み込んだPKを格納するテーブル
+		 * @param columns カラムのリスト
+		 */
+		private PrimaryKeyMetaVisitor(JiemamyFactory factory, List<? super PrimaryKey> primaryKeys,
+				List<ColumnModel> columns) {
+			this.primaryKeys = primaryKeys;
+			this.factory = factory;
+			this.columns = columns;
+		}
+		
+		public Boolean visit(PrimaryKeyMeta element) {
+			PrimaryKey primaryKey = factory.newModel(PrimaryKey.class);
+			for (ColumnModel columnModel : columns) {
+				if (columnModel.getName().equals(element.columnName)) {
+					ColumnRef columnRef = factory.newReference(columnModel);
+					primaryKey.getKeyColumns().add(columnRef);
+				}
+			}
+			primaryKeys.add(primaryKey);
+			return null;
+		}
+	}
+	
 }

Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/editcommand/AddRecordsToDataSetCommand.java
===================================================================
--- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/editcommand/AddRecordsToDataSetCommand.java	2009-04-14 10:22:29 UTC (rev 3271)
+++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/editcommand/AddRecordsToDataSetCommand.java	2009-04-14 11:27:05 UTC (rev 3272)
@@ -30,16 +30,19 @@
 import org.jiemamy.model.entity.TableModel;
 
 /**
- * TODO for daisuke
+ * {@link DataSetModel}に、指定したテーブル用のレコード保存領域を確保するEDITコマンド。
  * 
  * @author daisuke
  */
 public class AddRecordsToDataSetCommand extends AbstractCommand {
 	
+	/** レコード削除元の{@link DataSetModel} */
 	private final DataSetModel dataSetModel;
 	
+	/** レコード削除対象の{@link TableModel} */
 	private final TableModel tableModel;
 	
+	/** データセット保存用リストとして使用するインスタンス */
 	private final List<RecordModel> records;
 	
 
@@ -60,7 +63,7 @@
 	 * @param eventBroker イベント通知用{@link EventBroker}
 	 * @param dataSetModel レコード削除元の{@link DataSetModel}
 	 * @param tableModel レコード削除対象の{@link TableModel}
-	 * @param records
+	 * @param records データセット保存用リストとして使用するインスタンス
 	 */
 	public AddRecordsToDataSetCommand(EventBroker eventBroker, DataSetModel dataSetModel, TableModel tableModel,
 			List<RecordModel> records) {

Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/editcommand/RemoveRecordsFromDataSetCommand.java
===================================================================
--- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/editcommand/RemoveRecordsFromDataSetCommand.java	2009-04-14 10:22:29 UTC (rev 3271)
+++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/editcommand/RemoveRecordsFromDataSetCommand.java	2009-04-14 11:27:05 UTC (rev 3272)
@@ -29,14 +29,16 @@
 import org.jiemamy.model.entity.TableModel;
 
 /**
- * TODO for daisuke
+ * {@link DataSetModel}に確保された、指定したテーブル用のレコード保存領域を削除するEDITコマンド。
  * 
  * @author daisuke
  */
 public class RemoveRecordsFromDataSetCommand extends AbstractCommand {
 	
+	/** レコード追加対象の{@link DataSetModel} */
 	private final DataSetModel dataSetModel;
 	
+	/** レコード追加対象の{@link TableModel} */
 	private final TableModel tableModel;
 	
 	private final List<RecordModel> records;

Modified: artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/utils/DatabaseCleanerTest.java
===================================================================
--- artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/utils/DatabaseCleanerTest.java	2009-04-14 10:22:29 UTC (rev 3271)
+++ artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/utils/DatabaseCleanerTest.java	2009-04-14 11:27:05 UTC (rev 3272)
@@ -26,8 +26,7 @@
 import org.junit.Test;
 
 import org.jiemamy.composer.importer.DefaultDatabaseImportConfig;
-import org.jiemamy.dialect.Dialect;
-import org.jiemamy.internal.test.ReflectionDialectProvider;
+import org.jiemamy.dialect.generic.GenericDialect;
 
 /**
  * {@link DatabaseCleaner}のテストクラス。
@@ -67,18 +66,15 @@
 	@Test
 	public void test01_データベースをcleanしてみる() throws Exception {
 		DefaultDatabaseImportConfig config = new DefaultDatabaseImportConfig();
-		ReflectionDialectProvider reflectionDialectProvider = new ReflectionDialectProvider();
-		Dialect dialect = reflectionDialectProvider.getInstance("org.jiemamy.dialect.postgresql.PostgresqlDialect");
-		config.setDialect(dialect);
+		config.setDialect(new GenericDialect());
 		config.setDriverClassName("org.postgresql.Driver");
 		config.setDriverJarPaths(new URL[] {
 			new File("./src/test/resources/postgresql-8.3-603.jdbc3.jar").toURL()
 		});
 		config.setUsername("postgres");
 		config.setPassword("postgres");
-		config.setSchema("public");
 		config.setUri("jdbc:postgresql://localhost:5432/jiemamy");
 		
-//		databaseCleaner.clean(config);
+		databaseCleaner.clean(config);
 	}
 }

Modified: artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/utils/model/ColumnUtilTest.java
===================================================================
--- artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/utils/model/ColumnUtilTest.java	2009-04-14 10:22:29 UTC (rev 3271)
+++ artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/utils/model/ColumnUtilTest.java	2009-04-14 11:27:05 UTC (rev 3272)
@@ -28,8 +28,8 @@
 
 import org.jiemamy.Artemis;
 import org.jiemamy.Jiemamy;
+import org.jiemamy.internal.test.CoreTestModelBuilder;
 import org.jiemamy.internal.test.ReflectionDialectProvider;
-import org.jiemamy.internal.test.CoreTestModelBuilder;
 
 /**
  * {@link ColumnUtil}のテストクラス。

Modified: artemis/trunk/jiemamy-dialect-postgresql/pom.xml
===================================================================
--- artemis/trunk/jiemamy-dialect-postgresql/pom.xml	2009-04-14 10:22:29 UTC (rev 3271)
+++ artemis/trunk/jiemamy-dialect-postgresql/pom.xml	2009-04-14 11:27:05 UTC (rev 3272)
@@ -48,6 +48,12 @@
       <scope>test</scope>
     </dependency>
     <dependency>
+      <groupId>postgresql</groupId>
+      <artifactId>postgresql</artifactId>
+      <version>8.3-603.jdbc3</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
       <groupId>org.jiemamy</groupId>
       <artifactId>jiemamy-test-helper</artifactId>
       <version>0.0.1-SNAPSHOT</version>

Modified: artemis/trunk/jiemamy-dialect-postgresql/src/test/java/org/jiemamy/dialect/postgresql/PostgresqlDialectTest.java
===================================================================
--- artemis/trunk/jiemamy-dialect-postgresql/src/test/java/org/jiemamy/dialect/postgresql/PostgresqlDialectTest.java	2009-04-14 10:22:29 UTC (rev 3271)
+++ artemis/trunk/jiemamy-dialect-postgresql/src/test/java/org/jiemamy/dialect/postgresql/PostgresqlDialectTest.java	2009-04-14 11:27:05 UTC (rev 3272)
@@ -23,16 +23,6 @@
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.fail;
 
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.sql.Connection;
-import java.sql.Driver;
-import java.sql.DriverPropertyInfo;
-import java.sql.SQLException;
-import java.util.Properties;
-
 import javax.sql.DataSource;
 import javax.sql.XADataSource;
 
@@ -45,7 +35,6 @@
 import org.jiemamy.JiemamyFactory;
 import org.jiemamy.dialect.BuiltinDataTypeMold;
 import org.jiemamy.dialect.Dialect;
-import org.jiemamy.internal.test.ReflectionDialectProvider;
 import org.jiemamy.model.RootModel;
 import org.jiemamy.model.datatype.DataTypeCategory;
 
@@ -62,10 +51,6 @@
 	/** {@link DataSource} */
 	public DataSource dataSource;
 	
-	/** JDBCドライバ */
-	@SuppressWarnings("unused")
-	private Driver driver;
-	
 	private Dialect dialect;
 	
 	private RootModel rootModel;
@@ -82,26 +67,12 @@
 	 */
 	@Before
 	public void setUp() throws Exception {
-		jiemamy = Jiemamy.newInstance(new Artemis(), new ReflectionDialectProvider());
+		jiemamy = Jiemamy.newInstance(new Artemis());
 		factory = jiemamy.getFactory();
 		rootModel = factory.getRootModel();
-		rootModel.setDialectClassName("org.jiemamy.dialect.postgresql.PostgresqlDialect");
+		rootModel.setDialectClassName(PostgresqlDialect.class.getName());
 		
 		dialect = jiemamy.getDialect(rootModel);
-		
-		ClassLoader classLoader = AccessController.doPrivileged(new PrivilegedAction<ClassLoader>() {
-			
-			public ClassLoader run() {
-				return URLClassLoader.newInstance(new URL[] {
-					PostgresqlDialectTest.class.getResource("/postgresql-8.3-603.jdbc3.jar")
-				});
-			}
-		});
-		
-		// org.postgresql.Driver は java.sql.Driver を実装しているのでキャスト安全である。
-		@SuppressWarnings("unchecked")
-		Class<Driver> driverClass = (Class<Driver>) classLoader.loadClass("org.postgresql.Driver");
-		driver = new DriverWrapper(driverClass.newInstance());
 	}
 	
 	/**
@@ -111,7 +82,6 @@
 	 */
 	@After
 	public void tearDown() throws Exception {
-		driver = null;
 		dialect = null;
 		rootModel = null;
 		factory = null;
@@ -178,52 +148,4 @@
 			// success
 		}
 	}
-	
-
-	/**
-	 * JDBC Driverのラッパークラス。
-	 * 
-	 * <p>ref. <a href="http://forum.java.sun.com/thread.jspa?threadID=703241&messageID=4077758">
-	 * http://forum.java.sun.com/thread.jspa?threadID=703241&messageID=4077758</a></p>
-	 * @author daisuke
-	 */
-	private static class DriverWrapper implements Driver {
-		
-		private Driver driver;
-		
-
-		/**
-		 * インスタンスを生成する。
-		 * @param driver ドライバ
-		 * @see java.sql.Driver
-		 */
-		public DriverWrapper(Driver driver) {
-			this.driver = driver;
-		}
-		
-		public boolean acceptsURL(String u) throws SQLException {
-			return driver.acceptsURL(u);
-		}
-		
-		public Connection connect(String u, Properties p) throws SQLException {
-			return driver.connect(u, p);
-		}
-		
-		public int getMajorVersion() {
-			return driver.getMajorVersion();
-		}
-		
-		public int getMinorVersion() {
-			return driver.getMinorVersion();
-		}
-		
-		public DriverPropertyInfo[] getPropertyInfo(String u, Properties p) throws SQLException {
-			return driver.getPropertyInfo(u, p);
-		}
-		
-		public boolean jdbcCompliant() {
-			return driver.jdbcCompliant();
-		}
-	}
-	
 }

Modified: charon/jiemamy-jpa-importer/trunk/src/test/java/org/jiemamy/composer/importer/JpaImporterTest.java
===================================================================
--- charon/jiemamy-jpa-importer/trunk/src/test/java/org/jiemamy/composer/importer/JpaImporterTest.java	2009-04-14 10:22:29 UTC (rev 3271)
+++ charon/jiemamy-jpa-importer/trunk/src/test/java/org/jiemamy/composer/importer/JpaImporterTest.java	2009-04-14 11:27:05 UTC (rev 3272)
@@ -28,7 +28,6 @@
 
 import org.jiemamy.Jiemamy;
 import org.jiemamy.dialect.generic.GenericDialect;
-import org.jiemamy.internal.test.ReflectionDialectProvider;
 import org.jiemamy.model.RootModel;
 import org.jiemamy.utils.ResourceUtil;
 
@@ -55,7 +54,7 @@
 	 */
 	@Before
 	public void setUp() throws Exception {
-		jiemamy = Jiemamy.newInstance(new ReflectionDialectProvider());
+		jiemamy = Jiemamy.newInstance();
 		rootModel = jiemamy.getFactory().getRootModel();
 		rootModel.setDialectClassName(GenericDialect.class.getName());
 		jpaImporter = new JpaImporter();

Modified: eros/maven-jiemamy-plugin/trunk/src/main/java/org/jiemamy/maven/CleanDatabaseMojo.java
===================================================================
--- eros/maven-jiemamy-plugin/trunk/src/main/java/org/jiemamy/maven/CleanDatabaseMojo.java	2009-04-14 10:22:29 UTC (rev 3271)
+++ eros/maven-jiemamy-plugin/trunk/src/main/java/org/jiemamy/maven/CleanDatabaseMojo.java	2009-04-14 11:27:05 UTC (rev 3272)
@@ -105,7 +105,7 @@
 			
 			DatabaseCleaner databaseCleaner = new DatabaseCleaner();
 			config.setDialect(jiemamy.getDialect(jiemamy.getFactory().getRootModel()));
-			config.setSchema(jiemamy.getFactory().getRootModel().getSchemaName());
+//			config.setSchema(jiemamy.getFactory().getRootModel().getSchemaName());
 			
 			databaseCleaner.clean(config);
 		} catch (DriverNotFoundException e) {



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