[Jiemamy-notify:2379] commit [3382] [CORE-122] DataSetModelへTableModelを追加する際の、追加済みチェックを修正。

アーカイブの一覧に戻る

svnno****@sourc***** svnno****@sourc*****
2009年 5月 6日 (水) 20:23:43 JST


Revision: 3382
          http://svn.sourceforge.jp/view?root=jiemamy&view=rev&rev=3382
Author:   shin1
Date:     2009-05-06 20:23:43 +0900 (Wed, 06 May 2009)

Log Message:
-----------
[CORE-122]DataSetModelへTableModelを追加する際の、追加済みチェックを修正。

Modified Paths:
--------------
    artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/JiemamyFacadeImpl.java
    artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/internal/JiemamyFacadeImplTest.java


-------------- next part --------------
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-05-06 08:04:07 UTC (rev 3381)
+++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/JiemamyFacadeImpl.java	2009-05-06 11:23:43 UTC (rev 3382)
@@ -21,6 +21,7 @@
 import java.lang.reflect.InvocationTargetException;
 import java.util.Collection;
 import java.util.List;
+import java.util.Set;
 
 import org.apache.commons.beanutils.BeanUtils;
 import org.apache.commons.lang.ArrayUtils;
@@ -75,6 +76,7 @@
 import org.jiemamy.model.datatype.DomainRef;
 import org.jiemamy.model.entity.EntityModel;
 import org.jiemamy.model.entity.TableModel;
+import org.jiemamy.model.entity.TableRef;
 import org.jiemamy.model.index.IndexColumnModel;
 import org.jiemamy.model.index.IndexModel;
 import org.jiemamy.utils.ArrayEssentialStack;
@@ -276,8 +278,15 @@
 	public void addRecords(DataSetModel dataSetModel, TableModel tableModel) {
 		Validate.notNull(dataSetModel);
 		Validate.notNull(tableModel);
-		if (dataSetModel.getRecords().containsKey(tableModel)) {
-			return;
+		
+		Set<TableRef> keySet = dataSetModel.getRecords().keySet();
+		if (keySet != null) {
+			for (TableRef tableRef : keySet) {
+				if (jiemamy.getReferenceResolver().canResolve(tableRef)
+						&& jiemamy.getReferenceResolver().resolve(tableRef) == tableModel) {
+					return;
+				}
+			}
 		}
 		
 		Command command = new AddRecordsToDataSetCommand(eventBroker, dataSetModel, tableModel);

Modified: artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/internal/JiemamyFacadeImplTest.java
===================================================================
--- artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/internal/JiemamyFacadeImplTest.java	2009-05-06 08:04:07 UTC (rev 3381)
+++ artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/internal/JiemamyFacadeImplTest.java	2009-05-06 11:23:43 UTC (rev 3382)
@@ -42,6 +42,7 @@
 import org.jiemamy.model.attribute.ColumnModel;
 import org.jiemamy.model.attribute.ColumnRef;
 import org.jiemamy.model.attribute.constraint.PrimaryKey;
+import org.jiemamy.model.dataset.DataSetModel;
 import org.jiemamy.model.entity.TableModel;
 
 /**
@@ -215,6 +216,25 @@
 	}
 	
 	/**
+	 * {@link JiemamyFacadeImpl#addRecords(org.jiemamy.model.dataset.DataSetModel, TableModel)}のテスト。
+	 */
+	@Test
+	public void test_addRecords() {
+		DataSetModel dataSetModel1 = factory.newModel(DataSetModel.class);
+		TableModel tableModel1 = factory.newModel(TableModel.class);
+		TableModel tableModel2 = factory.newModel(TableModel.class);
+		coreFacade.addRecords(dataSetModel1, tableModel1);
+		assertThat(dataSetModel1.getRecords().size(), is(1));
+		
+		DataSetModel dataSetModel2 = factory.newModel(DataSetModel.class);
+		coreFacade.addRecords(dataSetModel2, tableModel1);
+		coreFacade.addRecords(dataSetModel2, tableModel2);
+		assertThat(dataSetModel2.getRecords().size(), is(2));
+		coreFacade.addRecords(dataSetModel2, tableModel2);
+		assertThat(dataSetModel2.getRecords().size(), is(2)); // 追加済みのTableは無視される。
+	}
+	
+	/**
 	 * save/rollbackのテスト。
 	 * 
 	 * @throws Exception 例外が発生した場合



Jiemamy-notify メーリングリストの案内
アーカイブの一覧に戻る