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 例外が発生した場合