svnno****@sourc*****
svnno****@sourc*****
2009年 3月 5日 (木) 21:46:17 JST
Revision: 2817 http://svn.sourceforge.jp/view?root=jiemamy&view=rev&rev=2817 Author: daisuke_m Date: 2009-03-05 21:46:17 +0900 (Thu, 05 Mar 2009) Log Message: ----------- テストコケ対応。論理演算間違ってた。 Modified Paths: -------------- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/ArtemisJiemamyFactory.java artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/utils/builder/AbstractJiemamyBuilder.java artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/utils/builder/ColumnBuilderImpl.java artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/utils/builder/TableBuilderImpl.java artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/utils/builder/TableBuilderTest.java -------------- next part -------------- Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/ArtemisJiemamyFactory.java =================================================================== --- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/ArtemisJiemamyFactory.java 2009-03-05 10:14:43 UTC (rev 2816) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/ArtemisJiemamyFactory.java 2009-03-05 12:46:17 UTC (rev 2817) @@ -39,7 +39,11 @@ import org.jiemamy.serializer.JiemamyDomSerializer; import org.jiemamy.serializer.JiemamySerializer; import org.jiemamy.utils.ValidateUtil; +import org.jiemamy.utils.builder.ColumnBuilder; +import org.jiemamy.utils.builder.ColumnBuilderImpl; import org.jiemamy.utils.builder.JiemamyBuilder; +import org.jiemamy.utils.builder.TableBuilder; +import org.jiemamy.utils.builder.TableBuilderImpl; /** * {@link JiemamyFactory}のArtemis用実装。 @@ -104,7 +108,12 @@ public <M extends JiemamyElement, T extends JiemamyBuilder<M>>T newBuilder(Class<T> clazz) { Validate.notNull(clazz); checkInitialized(); - T builder = new FactoryExtension<T>().newInstance(clazz, jiemamy); + T builder = null; + if (clazz == TableBuilder.class) { + builder = (T) new TableBuilderImpl(this); + } else if (clazz == ColumnBuilder.class) { + builder = (T) new ColumnBuilderImpl(this); + } if (builder == null) { throw new IllegalArgumentException(); } Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/utils/builder/AbstractJiemamyBuilder.java =================================================================== --- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/utils/builder/AbstractJiemamyBuilder.java 2009-03-05 10:14:43 UTC (rev 2816) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/utils/builder/AbstractJiemamyBuilder.java 2009-03-05 12:46:17 UTC (rev 2817) @@ -64,7 +64,7 @@ throw new IllegalStateException("This builder is already disposed."); } finished = true; - if (force == false || isComplete() == false) { + if (force == false && isComplete() == false) { throw new IllegalStateException("Required operation is not performed."); } return model; Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/utils/builder/ColumnBuilderImpl.java =================================================================== --- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/utils/builder/ColumnBuilderImpl.java 2009-03-05 10:14:43 UTC (rev 2816) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/utils/builder/ColumnBuilderImpl.java 2009-03-05 12:46:17 UTC (rev 2817) @@ -36,6 +36,15 @@ /** * インスタンスを生成する。 * + * @param factory + */ + public ColumnBuilderImpl(JiemamyFactory factory) { + super(factory, ColumnModel.class); + } + + /** + * インスタンスを生成する。 + * * @param factory * @param name カラム名 * @param type 型記述子 Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/utils/builder/TableBuilderImpl.java =================================================================== --- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/utils/builder/TableBuilderImpl.java 2009-03-05 10:14:43 UTC (rev 2816) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/utils/builder/TableBuilderImpl.java 2009-03-05 12:46:17 UTC (rev 2817) @@ -37,6 +37,16 @@ * インスタンスを生成する。 * * @param factory + * @throws IllegalArgumentException 引数に{@code null}を与えた場合 + */ + public TableBuilderImpl(JiemamyFactory factory) { + super(factory, TableModel.class); + } + + /** + * インスタンスを生成する。 + * + * @param factory * @param name * @throws IllegalArgumentException 引数に{@code null}を与えた場合 */ Modified: artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/utils/builder/TableBuilderTest.java =================================================================== --- artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/utils/builder/TableBuilderTest.java 2009-03-05 10:14:43 UTC (rev 2816) +++ artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/utils/builder/TableBuilderTest.java 2009-03-05 12:46:17 UTC (rev 2817) @@ -18,6 +18,8 @@ */ package org.jiemamy.utils.builder; +import static org.junit.Assert.fail; + import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -30,6 +32,7 @@ import org.jiemamy.model.attribute.ColumnModel; import org.jiemamy.model.datatype.DataType; import org.jiemamy.model.datatype.DataTypeCategory; +import org.jiemamy.model.entity.TableModel; /** * {@link TableBuilderImpl}のテストクラス。 @@ -86,16 +89,23 @@ } /** - * ビルダのオートマトンっぷりを見てみる。 + * ビルダを使ってみる。 * * @throws Exception */ @Test - public void test01_ビルダのオートマトンっぷりを見てみる() throws Exception { -// TableModel table1 = factory.newBuilder(PrematureTableBuilder.class).setName("T_USER").addColumn(col1).build(); -// TableModel table2 = factory.newBuilder(PrematureTableBuilder.class).addColumn(col2).setName("T_USER").build(); -//// TableModel table3 = factory.newBuilder(PrematureTableBuilder.class).addColumn(col3).build(); // コンパイルエラー -// logger.info(table1.toString()); -// logger.info(table2.toString()); + public void test01_ビルダを使ってみる() throws Exception { + TableModel table1 = factory.newBuilder(TableBuilder.class).setName("T_USER").addColumn(col1).build(); + TableModel table2 = factory.newBuilder(TableBuilder.class).addColumn(col2).setName("T_USER").build(); + try { + factory.newBuilder(TableBuilder.class).addColumn(col3).build(); + fail(); + } catch (IllegalStateException e) { + // success + } + TableModel table3 = factory.newBuilder(TableBuilder.class).addColumn(col3).build(true); + logger.info(table1.toString()); + logger.info(table2.toString()); + logger.info(table3.toString()); } }