svnno****@sourc*****
svnno****@sourc*****
2009年 1月 2日 (金) 01:03:46 JST
Revision: 2344 http://svn.sourceforge.jp/view?root=jiemamy&view=rev&rev=2344 Author: daisuke_m Date: 2009-01-02 01:03:46 +0900 (Fri, 02 Jan 2009) Log Message: ----------- ファクトリから取れるビルダを書いてみた。 Modified Paths: -------------- artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/JiemamyFactoryImpl.java artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/model/datatype/adapter/SerialDataTypeAdapter.java artemis/trunk/org.jiemamy.core/src/main/resources/jiemamy-core.dicon zeus/trunk/org.jiemamy.spec.core/META-INF/MANIFEST.MF zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/JiemamyFactory.java Added Paths: ----------- artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/utils/builder/MaturedTableBuilderImpl.java artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/utils/builder/PrematureTableBuilderImpl.java artemis/trunk/org.jiemamy.core/src/test/java/org/jiemamy/builder/ artemis/trunk/org.jiemamy.core/src/test/java/org/jiemamy/builder/TableBuilderTest.java zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/builder/ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/builder/MaturedBuilder.java zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/builder/MaturedTableBuilder.java zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/builder/PrematureBuilder.java zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/builder/PrematureTableBuilder.java -------------- next part -------------- Modified: artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/JiemamyFactoryImpl.java =================================================================== --- artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/JiemamyFactoryImpl.java 2009-01-01 13:06:05 UTC (rev 2343) +++ artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/JiemamyFactoryImpl.java 2009-01-01 16:03:46 UTC (rev 2344) @@ -23,6 +23,7 @@ import org.jiemamy.model.RootModel; import org.jiemamy.model.connection.ForeignKeyModelImpl; import org.jiemamy.utils.Identifiable; +import org.jiemamy.utils.builder.PrematureBuilder; /** * {@link JiemamyFactory}のArtemis実装。 @@ -45,6 +46,13 @@ /** * {@inheritDoc} */ + public <M, T extends PrematureBuilder<M>>T newBuilder(Class<T> clazz) { + return Jiemamy.newModel(rootModel, clazz); + } + + /** + * {@inheritDoc} + */ public <T>T newModel(Class<T> clazz) { // T型を返すことが保証されているため、キャスト安全である。 @SuppressWarnings("unchecked") Modified: artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/model/datatype/adapter/SerialDataTypeAdapter.java =================================================================== --- artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/model/datatype/adapter/SerialDataTypeAdapter.java 2009-01-01 13:06:05 UTC (rev 2343) +++ artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/model/datatype/adapter/SerialDataTypeAdapter.java 2009-01-01 16:03:46 UTC (rev 2344) @@ -18,8 +18,6 @@ */ package org.jiemamy.model.datatype.adapter; -import org.apache.commons.lang.ClassUtils; - import org.jiemamy.model.datatype.DataTypeAdapter; /** @@ -60,7 +58,7 @@ */ @Override public String toString() { - return ClassUtils.getShortClassName(this, "null"); + return serial ? "SERIAL" : "NORMAL"; } } Added: artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/utils/builder/MaturedTableBuilderImpl.java =================================================================== --- artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/utils/builder/MaturedTableBuilderImpl.java (rev 0) +++ artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/utils/builder/MaturedTableBuilderImpl.java 2009-01-01 16:03:46 UTC (rev 2344) @@ -0,0 +1,65 @@ +/* + * Copyright 2007-2009 MIYAMOTO Daisuke, jiemamy.org and the Others. + * Created on 2009/01/01 + * + * This file is part of Jiemamy. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +package org.jiemamy.utils.builder; + +import org.jiemamy.model.attribute.ColumnModel; +import org.jiemamy.model.node.TableModel; + +/** + * TODO for daisuke + * @author daisuke + */ +public class MaturedTableBuilderImpl implements MaturedTableBuilder { + + TableModel table; + + + /** + * コンストラクタ。 + * @param table + * @category instance creation + */ + public MaturedTableBuilderImpl(TableModel table) { + this.table = table; + } + + /** + * {@inheritDoc} + */ + public MaturedTableBuilder addColumn(ColumnModel column) { + table.appendColumn(column); + return this; + } + + /** + * {@inheritDoc} + */ + public TableModel build() { + return table; + } + + /** + * {@inheritDoc} + */ + public MaturedTableBuilder setName(String name) { + table.setName(name); + return this; + } + +} Property changes on: artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/utils/builder/MaturedTableBuilderImpl.java ___________________________________________________________________ Name: svn:mime-type + text/plain Added: artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/utils/builder/PrematureTableBuilderImpl.java =================================================================== --- artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/utils/builder/PrematureTableBuilderImpl.java (rev 0) +++ artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/utils/builder/PrematureTableBuilderImpl.java 2009-01-01 16:03:46 UTC (rev 2344) @@ -0,0 +1,58 @@ +/* + * Copyright 2007-2009 MIYAMOTO Daisuke, jiemamy.org and the Others. + * Created on 2009/01/01 + * + * This file is part of Jiemamy. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +package org.jiemamy.utils.builder; + +import org.jiemamy.Jiemamy; +import org.jiemamy.model.attribute.ColumnModel; +import org.jiemamy.model.node.TableModel; + +/** + * TODO for daisuke + * @author daisuke + */ +public class PrematureTableBuilderImpl implements PrematureTableBuilder { + + TableModel table; + + + /** + * コンストラクタ。 + * @category instance creation + */ + public PrematureTableBuilderImpl() { + table = Jiemamy.newRootModel().getFactory().newModel(TableModel.class); + } + + /** + * {@inheritDoc} + */ + public PrematureTableBuilder addColumn(ColumnModel column) { + table.appendColumn(column); + return this; + } + + /** + * {@inheritDoc} + */ + public MaturedTableBuilder setName(String name) { + table.setName(name); + return new MaturedTableBuilderImpl(table); + } + +} Property changes on: artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/utils/builder/PrematureTableBuilderImpl.java ___________________________________________________________________ Name: svn:mime-type + text/plain Modified: artemis/trunk/org.jiemamy.core/src/main/resources/jiemamy-core.dicon =================================================================== --- artemis/trunk/org.jiemamy.core/src/main/resources/jiemamy-core.dicon 2009-01-01 13:06:05 UTC (rev 2343) +++ artemis/trunk/org.jiemamy.core/src/main/resources/jiemamy-core.dicon 2009-01-01 16:03:46 UTC (rev 2344) @@ -16,6 +16,10 @@ <component class="org.jiemamy.internal.ModelConsistenceMediatorImpl"/> <component class="org.jiemamy.internal.AdapterManagerImpl"/> + <!-- Jiemamy Model Builder --> + <component class="org.jiemamy.utils.builder.PrematureTableBuilderImpl" instance="prototype"/> + + <!-- Jiemamy Model --> <component class="org.jiemamy.model.RootModelImpl" instance="prototype" autoBinding="semiauto"> <arg>uuid</arg> Added: artemis/trunk/org.jiemamy.core/src/test/java/org/jiemamy/builder/TableBuilderTest.java =================================================================== --- artemis/trunk/org.jiemamy.core/src/test/java/org/jiemamy/builder/TableBuilderTest.java (rev 0) +++ artemis/trunk/org.jiemamy.core/src/test/java/org/jiemamy/builder/TableBuilderTest.java 2009-01-01 16:03:46 UTC (rev 2344) @@ -0,0 +1,84 @@ +/* + * Copyright 2007-2009 MIYAMOTO Daisuke, jiemamy.org and the Others. + * Created on 2009/01/01 + * + * This file is part of Jiemamy. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +package org.jiemamy.builder; + +import java.sql.Types; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import org.jiemamy.Jiemamy; +import org.jiemamy.JiemamyFactory; +import org.jiemamy.model.RootModel; +import org.jiemamy.model.attribute.ColumnModel; +import org.jiemamy.model.datatype.DataType; +import org.jiemamy.model.node.TableModel; +import org.jiemamy.utils.builder.ColumnBuilder; +import org.jiemamy.utils.builder.DataTypeBuilder; +import org.jiemamy.utils.builder.PrematureTableBuilder; + +/** + * TODO for daisuke + * @author daisuke + */ +public class TableBuilderTest { + + private RootModel rootModel; + + private JiemamyFactory factory; + + private ColumnModel col1, col2, col3; + + + /** + * TODO for daisuke + * @throws java.lang.Exception + */ + @Before + public void setUp() throws Exception { + Jiemamy.init(); + rootModel = Jiemamy.newRootModel(); + factory = rootModel.getFactory(); + DataType dataType1 = new DataTypeBuilder(factory, Types.INTEGER, "INTEGER").build(); + DataType dataType2 = new DataTypeBuilder(factory, Types.INTEGER, "INTEGER").build(); + DataType dataType3 = new DataTypeBuilder(factory, Types.INTEGER, "INTEGER").build(); + col1 = new ColumnBuilder(factory, "column1", dataType1).build(); + col2 = new ColumnBuilder(factory, "column2", dataType2).build(); + col3 = new ColumnBuilder(factory, "column3", dataType3).build(); + } + + /** + * TODO for daisuke + * @throws java.lang.Exception + */ + @After + public void tearDown() throws Exception { + Jiemamy.dispose(); + } + + @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(); // コンパイルエラー + System.out.println(table1); + System.out.println(table2); + } +} Property changes on: artemis/trunk/org.jiemamy.core/src/test/java/org/jiemamy/builder/TableBuilderTest.java ___________________________________________________________________ Name: svn:mime-type + text/plain Modified: zeus/trunk/org.jiemamy.spec.core/META-INF/MANIFEST.MF =================================================================== --- zeus/trunk/org.jiemamy.spec.core/META-INF/MANIFEST.MF 2009-01-01 13:06:05 UTC (rev 2343) +++ zeus/trunk/org.jiemamy.spec.core/META-INF/MANIFEST.MF 2009-01-01 16:03:46 UTC (rev 2344) @@ -23,4 +23,5 @@ org.jiemamy.model.sql, org.jiemamy.serializer, org.jiemamy.utils, + org.jiemamy.utils.builder, org.jiemamy.xml Modified: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/JiemamyFactory.java =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/JiemamyFactory.java 2009-01-01 13:06:05 UTC (rev 2343) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/JiemamyFactory.java 2009-01-01 16:03:46 UTC (rev 2344) @@ -22,6 +22,7 @@ import org.jiemamy.model.RootModel; import org.jiemamy.utils.Identifiable; +import org.jiemamy.utils.builder.PrematureBuilder; /** * Jiemamy関連のインスタンスを生成するファクトリインターフェイス。 @@ -29,6 +30,8 @@ */ public interface JiemamyFactory { + <M, T extends PrematureBuilder<M>>T newBuilder(Class<T> clazz); + /** * 新規に、この {@link RootModel}に従属しうるモデルインスタンスを生成する。 * @@ -39,6 +42,7 @@ * @throws IllegalArgumentException 引数clazzに責務外のクラスを指定して、インスタンスを取得しようとした場合 * @throws IllegalArgumentException 引数として{@code null}を与えた場合 */ + @Deprecated <T>T newModel(Class<T> clazz); /** @@ -52,6 +56,7 @@ * @throws IllegalArgumentException 引数clazzに責務外のクラスを指定して、インスタンスを取得しようとした場合 * @throws IllegalArgumentException 引数として{@code null}を与えた場合 */ + @Deprecated <T extends Identifiable>T newModel(Class<T> clazz, UUID id); } Added: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/builder/MaturedBuilder.java =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/builder/MaturedBuilder.java (rev 0) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/builder/MaturedBuilder.java 2009-01-01 16:03:46 UTC (rev 2344) @@ -0,0 +1,32 @@ +/* + * Copyright 2007-2009 MIYAMOTO Daisuke, jiemamy.org and the Others. + * Created on 2009/01/01 + * + * This file is part of Jiemamy. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +package org.jiemamy.utils.builder; + +/** + * TODO for daisuke + * @author daisuke + */ +public interface MaturedBuilder<T> extends PrematureBuilder<T> { + + /** + * モデルを構築する。 + * @return model 構築されたモデル + */ + T build(); +} Property changes on: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/builder/MaturedBuilder.java ___________________________________________________________________ Name: svn:mime-type + text/plain Added: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/builder/MaturedTableBuilder.java =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/builder/MaturedTableBuilder.java (rev 0) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/builder/MaturedTableBuilder.java 2009-01-01 16:03:46 UTC (rev 2344) @@ -0,0 +1,34 @@ +/* + * Copyright 2007-2009 MIYAMOTO Daisuke, jiemamy.org and the Others. + * Created on 2009/01/01 + * + * This file is part of Jiemamy. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +package org.jiemamy.utils.builder; + +import org.jiemamy.model.attribute.ColumnModel; +import org.jiemamy.model.node.TableModel; + +/** + * TODO for daisuke + * @author daisuke + */ +public interface MaturedTableBuilder extends MaturedBuilder<TableModel> { + + MaturedTableBuilder addColumn(ColumnModel column); + + MaturedTableBuilder setName(String name); + +} Property changes on: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/builder/MaturedTableBuilder.java ___________________________________________________________________ Name: svn:mime-type + text/plain Added: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/builder/PrematureBuilder.java =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/builder/PrematureBuilder.java (rev 0) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/builder/PrematureBuilder.java 2009-01-01 16:03:46 UTC (rev 2344) @@ -0,0 +1,27 @@ +/* + * Copyright 2007-2009 MIYAMOTO Daisuke, jiemamy.org and the Others. + * Created on 2009/01/01 + * + * This file is part of Jiemamy. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +package org.jiemamy.utils.builder; + +/** + * TODO for daisuke + * @author daisuke + */ +public interface PrematureBuilder<T> { + +} Property changes on: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/builder/PrematureBuilder.java ___________________________________________________________________ Name: svn:mime-type + text/plain Added: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/builder/PrematureTableBuilder.java =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/builder/PrematureTableBuilder.java (rev 0) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/builder/PrematureTableBuilder.java 2009-01-01 16:03:46 UTC (rev 2344) @@ -0,0 +1,34 @@ +/* + * Copyright 2007-2009 MIYAMOTO Daisuke, jiemamy.org and the Others. + * Created on 2009/01/01 + * + * This file is part of Jiemamy. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +package org.jiemamy.utils.builder; + +import org.jiemamy.model.attribute.ColumnModel; +import org.jiemamy.model.node.TableModel; + +/** + * TODO for daisuke + * @author daisuke + */ +public interface PrematureTableBuilder extends PrematureBuilder<TableModel> { + + PrematureTableBuilder addColumn(ColumnModel column); + + MaturedTableBuilder setName(String name); + +} Property changes on: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/builder/PrematureTableBuilder.java ___________________________________________________________________ Name: svn:mime-type + text/plain