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")); } }