[Jiemamy-notify] commit [2134] 自動名称生成時のバリデーションロジック変更。

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2008年 11月 11日 (火) 01:03:49 JST


Revision: 2134
          http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?root=jiemamy&view=rev&rev=2134
Author:   daisuke_m
Date:     2008-11-11 01:03:49 +0900 (Tue, 11 Nov 2008)

Log Message:
-----------
自動名称生成時のバリデーションロジック変更。

Modified Paths:
--------------
    artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/core/utils/processor/connection/foreignkey/ProvideForeignKeyNameProcessor.java
    artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/core/utils/processor/root/ProvideEntityNameProcessor.java
    artemis/trunk/org.jiemamy.core/src/test/java/org/jiemamy/core/utils/processor/root/GenerateEntityNameProcessorTest.java


-------------- next part --------------
Modified: artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/core/utils/processor/connection/foreignkey/ProvideForeignKeyNameProcessor.java
===================================================================
--- artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/core/utils/processor/connection/foreignkey/ProvideForeignKeyNameProcessor.java	2008-11-10 16:03:20 UTC (rev 2133)
+++ artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/core/utils/processor/connection/foreignkey/ProvideForeignKeyNameProcessor.java	2008-11-10 16:03:49 UTC (rev 2134)
@@ -67,7 +67,7 @@
 			if (counter++ > 100) {
 				throw new JiemamyRuntimeException("validatorの実装が間違っている可能性があります。");
 			}
-		} while (validator.validate(sb.toString()));
+		} while (validator != null && validator.validate(sb.toString()));
 		
 		foreignKeyModel.setName(sb.toString());
 		return sb.toString();

Modified: artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/core/utils/processor/root/ProvideEntityNameProcessor.java
===================================================================
--- artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/core/utils/processor/root/ProvideEntityNameProcessor.java	2008-11-10 16:03:20 UTC (rev 2133)
+++ artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/core/utils/processor/root/ProvideEntityNameProcessor.java	2008-11-10 16:03:49 UTC (rev 2134)
@@ -19,7 +19,9 @@
 package org.jiemamy.core.utils.processor.root;
 
 import org.jiemamy.spec.Processor;
+import org.jiemamy.spec.exception.ElementNotFoundException;
 import org.jiemamy.spec.exception.JiemamyRuntimeException;
+import org.jiemamy.spec.exception.TooManyElementsException;
 import org.jiemamy.spec.extension.dialect.IdentifierValidator;
 import org.jiemamy.spec.model.RootModel;
 import org.jiemamy.spec.model.node.AbstractEntityModel;
@@ -56,20 +58,32 @@
 	public String process(RootModel rootModel) {
 		StringBuilder sb;
 		int counter = 0;
+		boolean duplicated;
 		do {
 			sb = new StringBuilder();
+			Class<? extends AbstractEntityModel> target;
 			if (entityModel instanceof TableModel) {
 				sb.append("TABLE_");
+				target = TableModel.class;
 			} else if (entityModel instanceof ViewModel) {
 				sb.append("VIEW_");
+				target = ViewModel.class;
 			} else {
-				sb.append("UNKNOWN_");
+				throw new JiemamyRuntimeException("想定しないエンティティ型: " + entityModel.getClass().toString());
 			}
-			sb.append(counter);
+			sb.append(counter + 1);
 			if (counter++ > 100) {
 				throw new JiemamyRuntimeException("validatorの実装が間違っている可能性があります。");
 			}
-		} while (validator.validate(sb.toString()));
+			duplicated = true;
+			try {
+				rootModel.getEntity(target, sb.toString());
+			} catch (TooManyElementsException e) {
+				duplicated = true;
+			} catch (ElementNotFoundException e) {
+				duplicated = false;
+			}
+		} while (duplicated || (validator != null && validator.validate(sb.toString()) == false));
 		
 		entityModel.setName(sb.toString());
 		return sb.toString();

Modified: artemis/trunk/org.jiemamy.core/src/test/java/org/jiemamy/core/utils/processor/root/GenerateEntityNameProcessorTest.java
===================================================================
--- artemis/trunk/org.jiemamy.core/src/test/java/org/jiemamy/core/utils/processor/root/GenerateEntityNameProcessorTest.java	2008-11-10 16:03:20 UTC (rev 2133)
+++ artemis/trunk/org.jiemamy.core/src/test/java/org/jiemamy/core/utils/processor/root/GenerateEntityNameProcessorTest.java	2008-11-10 16:03:49 UTC (rev 2134)
@@ -75,10 +75,10 @@
 		
 		ViewModel viewModel1 = rootModel.createJiemamyModel(ViewModel.class).init(rootModel);
 		rootModel.appendModel(viewModel1);
-		assertThat(viewModel1.getName(), is("VIEW_3"));
+		assertThat(viewModel1.getName(), is("VIEW_1"));
 		
 		ViewModel viewModel2 = rootModel.createJiemamyModel(ViewModel.class).init(rootModel);
 		rootModel.appendModel(viewModel2);
-		assertThat(viewModel2.getName(), is("VIEW_4"));
+		assertThat(viewModel2.getName(), is("VIEW_2"));
 	}
 }


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