svnno****@sourc*****
svnno****@sourc*****
2008年 10月 23日 (木) 02:20:54 JST
Revision: 2025 http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?root=jiemamy&view=rev&rev=2025 Author: j5ik2o Date: 2008-10-23 02:20:54 +0900 (Thu, 23 Oct 2008) Log Message: ----------- 移動させました. Added Paths: ----------- artemis/trunk/org.jiemamy.serializer/src/main/java/org/jiemamy/core/model/ApplicationModelCreator.java Removed Paths: ------------- artemis/trunk/org.jiemamy.serializer/src/main/java/ApplicationModelCreator.java -------------- next part -------------- Deleted: artemis/trunk/org.jiemamy.serializer/src/main/java/ApplicationModelCreator.java =================================================================== --- artemis/trunk/org.jiemamy.serializer/src/main/java/ApplicationModelCreator.java 2008-10-22 17:16:39 UTC (rev 2024) +++ artemis/trunk/org.jiemamy.serializer/src/main/java/ApplicationModelCreator.java 2008-10-22 17:20:54 UTC (rev 2025) @@ -1,523 +0,0 @@ -import java.util.ArrayList; -import java.util.List; - -import org.jiemamy.core.S2FactoryStrategy; -import org.jiemamy.core.model.dataset.RecordModelImpl; -import org.jiemamy.core.model.typedef.datatype.impl.IntegerDataTypeMock; -import org.jiemamy.core.model.typedef.datatype.impl.NumericDataTypeMock; -import org.jiemamy.core.model.typedef.datatype.impl.TimestampDataTypeMock; -import org.jiemamy.core.model.typedef.datatype.impl.VarcharDataTypeMock; -import org.jiemamy.core.utils.processor.entity.table.GetColumnProcessor; -import org.jiemamy.core.utils.processor.root.SetRecordProcessor; -import org.jiemamy.creator.JiemamyModelFactory; -import org.jiemamy.spec.exception.ElementNotFoundException; -import org.jiemamy.spec.exception.JiemamyRuntimeException; -import org.jiemamy.spec.exception.TooManyElementsException; -import org.jiemamy.spec.model.ColumnModel; -import org.jiemamy.spec.model.DomainModel; -import org.jiemamy.spec.model.RootModel; -import org.jiemamy.spec.model.connection.ForeignKeyModel; -import org.jiemamy.spec.model.connection.ForeignKeyModel.InitiallyCheckTime; -import org.jiemamy.spec.model.connection.ForeignKeyModel.ReferentialAction; -import org.jiemamy.spec.model.constraint.NotNullConstraintModel; -import org.jiemamy.spec.model.constraint.PrimaryKeyConstraintModel; -import org.jiemamy.spec.model.constraint.UniqueConstraintModel; -import org.jiemamy.spec.model.dataset.RecordModel; -import org.jiemamy.spec.model.node.StickyModel; -import org.jiemamy.spec.model.node.TableModel; -import org.jiemamy.spec.model.node.ViewModel; -import org.jiemamy.spec.view.model.DiagramPresentationModel; -import org.jiemamy.spec.view.model.DiagramPresentations; -import org.jiemamy.spec.view.model.geometory.JmPoint; -import org.jiemamy.spec.view.model.geometory.JmRectangle; - -/** - * アプリケーション用のモデルを生成するクラス。 - * - * @author j5ik2o - */ -public class ApplicationModelCreator { - - /** - * TODO for daisuke - * @param args - */ - public static void main(String[] args) { - RootModel rootModel = new ApplicationModelCreator().createModel(); - System.out.println(rootModel); - } - - /** - * テスト用モデルを生成する。 - * @return モデル - */ - public RootModel createModel() { - JiemamyModelFactory.init(new S2FactoryStrategy("jiemamy-view.dicon")); - int offset = 50; - - RootModel rootModel = JiemamyModelFactory.createRoot().init(); - rootModel.setDialectClassName("org.jiemamy.dialect.mysql.MySqlDialect"); // MySQLDialect.class.getName() - rootModel.setBeginScript("BEGIN;"); - rootModel.setEndScript("COMMIT;"); - rootModel.setDescription("シリアライゼーションイメージ"); - rootModel.setSchemaName("FOO"); - - DomainModel idDomain = rootModel.createJiemamyModel(DomainModel.class).init("ID", new IntegerDataTypeMock()); - rootModel.appendModel(idDomain); - idDomain.addConstraint(rootModel.createJiemamyModel(NotNullConstraintModel.class).init()); - idDomain.addConstraint(rootModel.createJiemamyModel(UniqueConstraintModel.class).init()); - // TODO AUTO_INCREMENTの追加 [CORE-21] - - DomainModel nameDomain = - rootModel.createJiemamyModel(DomainModel.class).init("NAME", new VarcharDataTypeMock(32)); - rootModel.appendModel(nameDomain); - nameDomain.setDescription("人名用の型です。"); - - // ノードの生成 - TableModel deptTable = createDeptTable(rootModel, idDomain, nameDomain); - TableModel empTable = createEmpTable(rootModel, idDomain, nameDomain); - - ViewModel highSalView = - rootModel.createJiemamyModel(ViewModel.class).init("V_HIGH_SAL_EMP", - "SELECT * FROM T_EMP WHERE SAL > 2000;"); - highSalView.setLogicalName("高給取り"); - rootModel.appendModel(highSalView); - - StickyModel sticky = rootModel.createJiemamyModel(StickyModel.class).init(); - rootModel.appendModel(sticky); - sticky.setContents("メモーー"); - - // コネクションの生成・追加 - ForeignKeyModel fkEmpEmp = createForeignKey(rootModel, empTable, empTable, "MGR_ID"); - rootModel.appendModel(fkEmpEmp); - fkEmpEmp.setOnDelete(ReferentialAction.SET_NULL); - fkEmpEmp.setDeferrable(true); - fkEmpEmp.setInitiallyCheckTime(InitiallyCheckTime.DEFERRED); - - ForeignKeyModel fkEmpDept = createForeignKey(rootModel, deptTable, empTable, "DEPT_ID"); - rootModel.appendModel(fkEmpDept); - - // ダイアグラム表現の生成・追加(1) - DiagramPresentationModel presentation = - rootModel.createJiemamyModel(DiagramPresentationModel.class).init("全部表示する"); - rootModel.getAdapter(DiagramPresentations.class).add(presentation); - presentation.setName("全部表示する"); - presentation.getNodeLayouts().put(empTable, new JmRectangle(360, 60)); - presentation.getNodeLayouts().put(deptTable, new JmRectangle(60, 60)); - presentation.getNodeLayouts().put(highSalView, new JmRectangle(60, 270)); - presentation.getNodeLayouts().put(sticky, new JmRectangle(360, 270)); - - List<JmPoint> bendpoints = new ArrayList<JmPoint>(); - JmRectangle rect = presentation.getNodeLayouts().get(empTable); - bendpoints.add(0, new JmPoint(Math.max(rect.x - offset, 0), rect.y)); - bendpoints.add(1, new JmPoint(rect.x, Math.max(rect.y - offset, 0))); - presentation.getConnectionLayouts().put(fkEmpEmp, bendpoints); - presentation.getConnectionLayouts().put(fkEmpDept, new ArrayList<JmPoint>()); // bendpount無し - - // ダイアグラム表現の生成・追加(2) - presentation = rootModel.createJiemamyModel(DiagramPresentationModel.class).init("一部表示する"); - rootModel.getAdapter(DiagramPresentations.class).add(presentation); - presentation.getNodeLayouts().put(empTable, new JmRectangle(60, 60)); - presentation.getNodeLayouts().put(highSalView, new JmRectangle(270, 270)); - presentation.getConnectionLayouts().put(fkEmpDept, new ArrayList<JmPoint>()); // bendpount無し - -// // データセットの生成・追加(1) -// InsertDataSetModel dataSet = rootModel.createJiemamyModel(InsertDataSetModel.class).init("データ群en"); -// rootModel.getAdapter(InsertDataSetModel.class).add(dataSet); -// dataSet.getRecords().put(deptTable, createDeptDataSetEn(deptTable)); -// dataSet.getRecords().put(empTable, createEmpDataSetEn(empTable)); -// -// // データセットの生成・追加(2) -// dataSet = rootModel.createJiemamyModel(InsertDataSetModel.class).init("データ群ja"); -// rootModel.getAdapter(InsertDataSetModel.class).add(dataSet); -// dataSet.getRecords().put(deptTable, createDeptDataSetJa(deptTable)); -// dataSet.getRecords().put(empTable, createEmpDataSetJa(empTable)); - - return rootModel; - } - - private List<RecordModel> createDeptDataSetEn(TableModel deptTable) { - List<RecordModel> result = new ArrayList<RecordModel>(); - - try { - RecordModel record = new RecordModelImpl(); - - record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("ID")), "1")); - record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NO")), "10")); - record - .process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NAME")), "ACCOUNTING")); - record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("LOC")), "NEW YORK")); - result.add(record); - - record = new RecordModelImpl(); - record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("ID")), "2")); - record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NO")), "20")); - record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NAME")), "RESEARCH")); - record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("LOC")), "DALLAS")); - result.add(record); - - record = new RecordModelImpl(); - record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("ID")), "3")); - record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NO")), "30")); - record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NAME")), "SALES")); - record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("LOC")), "CHICAGO")); - result.add(record); - - record = new RecordModelImpl(); - record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("ID")), "4")); - record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NO")), "40")); - record - .process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NAME")), "OPERATIONS")); - record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("LOC")), "BOSTON")); - result.add(record); - } catch (TooManyElementsException e) { - throw new JiemamyRuntimeException("test code error", e); - } - - return result; - } - - private List<RecordModel> createDeptDataSetJa(TableModel deptTable) { - List<RecordModel> result = new ArrayList<RecordModel>(); - - try { - RecordModel record = new RecordModelImpl(); - - record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("ID")), "1")); - record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NO")), "10")); - record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NAME")), "経理部")); - record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("LOC")), "広島")); - result.add(record); - - record = new RecordModelImpl(); - record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("ID")), "2")); - record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NO")), "20")); - record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NAME")), "研究開発部")); - record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("LOC")), "京都")); - result.add(record); - - record = new RecordModelImpl(); - record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("ID")), "3")); - record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NO")), "30")); - record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NAME")), "営業部")); - record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("LOC")), "東京")); - result.add(record); - - record = new RecordModelImpl(); - record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("ID")), "4")); - record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NO")), "40")); - record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NAME")), "経営本部")); - // locは指定せず、特定しない状態 - result.add(record); - } catch (TooManyElementsException e) { - throw new JiemamyRuntimeException("test code error", e); - } - - return result; - } - - /** - * DEPTテーブルの生成。 - * @param rootModel - * @param idDomain IDの型として使用するドメイン - * @param nameDomain 名称として使用するドメイン - * @return DEPTテーブル - */ - private TableModel createDeptTable(RootModel rootModel, DomainModel idDomain, DomainModel nameDomain) { - TableModel deptTable = rootModel.createJiemamyModel(TableModel.class).init("T_DEPT"); - rootModel.appendModel(deptTable); - deptTable.setBeginScript("/* test begin script */"); - deptTable.setDescription("部署マスタです。"); - - ColumnModel idColumn = rootModel.createJiemamyModel(ColumnModel.class).init("ID", idDomain); - deptTable.getColumns().add(idColumn); - idColumn.addConstraint(rootModel.createJiemamyModel(PrimaryKeyConstraintModel.class).init()); - idColumn.setLogicalName("部署ID"); - - ColumnModel noColumn = - rootModel.createJiemamyModel(ColumnModel.class).init("DEPT_NO", new IntegerDataTypeMock()); - deptTable.getColumns().add(noColumn); - noColumn.setLogicalName("部署番号"); - - ColumnModel deptNameColumn = - rootModel.createJiemamyModel(ColumnModel.class).init("DEPT_NAME", new VarcharDataTypeMock(20)); - deptTable.getColumns().add(deptNameColumn); - deptNameColumn.setLogicalName("部署名"); - deptNameColumn.setRepresentation(true); - - ColumnModel locColumn = - rootModel.createJiemamyModel(ColumnModel.class).init("LOC", new VarcharDataTypeMock(20)); - deptTable.getColumns().add(locColumn); - locColumn.setLogicalName("ロケーション"); - locColumn.setDefaultValue("secret"); - - return deptTable; - } - - private List<RecordModel> createEmpDataSetEn(TableModel empTable) { - List<RecordModel> result = new ArrayList<RecordModel>(); - - try { - RecordModel record = new RecordModelImpl(); - - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "1")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "10")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "SMITH")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), "3")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "2003-02-01")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "40")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "3")); - result.add(record); - - record = new RecordModelImpl(); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "2")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "20")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "ALLEN")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), "3")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "2000-03-04")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "50")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "4")); - result.add(record); - - record = new RecordModelImpl(); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "3")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "30")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "WARD")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), null)); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "1993-12-05")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "60")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "4")); - result.add(record); - - record = new RecordModelImpl(); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "4")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "40")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "JONES")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), "2")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "2007-04-01")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "36")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "2")); - result.add(record); - - record = new RecordModelImpl(); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "5")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "50")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "MARTIN")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), "1")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "2002-05-30")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "30")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "3")); - result.add(record); - - record = new RecordModelImpl(); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "6")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "60")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "BLAKE")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), "3")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "2007-04-01")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "25")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "2")); - result.add(record); - - record = new RecordModelImpl(); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "7")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "70")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "CLARK")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), "1")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "2004-09-01")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "30")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "1")); - result.add(record); - - record = new RecordModelImpl(); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "8")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "80")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "SCOTT")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), "4")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "2008-03-01")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "25")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "2")); - result.add(record); - } catch (TooManyElementsException e) { - throw new JiemamyRuntimeException("test code error", e); - } - - return result; - } - - private List<RecordModel> createEmpDataSetJa(TableModel empTable) { - List<RecordModel> result = new ArrayList<RecordModel>(); - - try { - RecordModel record = new RecordModelImpl(); - - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "1")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "10")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "山本")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), "3")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "2003-02-01")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "40")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "3")); - result.add(record); - - record = new RecordModelImpl(); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "2")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "20")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "内海")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), "3")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "2000-03-04")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "50")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "4")); - result.add(record); - - record = new RecordModelImpl(); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "3")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "30")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "村瀬")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), null)); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "1993-12-05")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "60")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "4")); - result.add(record); - - record = new RecordModelImpl(); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "4")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "40")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "近藤")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), "2")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "2007-04-01")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "36")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "2")); - result.add(record); - - record = new RecordModelImpl(); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "5")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "50")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "小峰")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), "1")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "2002-05-30")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "30")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "3")); - result.add(record); - - record = new RecordModelImpl(); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "6")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "60")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "三浦")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), "3")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "2007-04-01")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "25")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "2")); - result.add(record); - - record = new RecordModelImpl(); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "7")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "70")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "前島")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), "1")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "2004-09-01")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "30")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "1")); - result.add(record); - - record = new RecordModelImpl(); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "8")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "80")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "島崎")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), "4")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "2008-03-01")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "25")); - record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "2")); - result.add(record); - } catch (TooManyElementsException e) { - throw new JiemamyRuntimeException("test code error", e); - } - - return result; - } - - /** - * EMPテーブルの生成 - * @param rootModel - * @param idDomain IDの型として使用するドメイン - * @param nameDomain 名称として使用するドメイン - * @return EMPテーブル - */ - private TableModel createEmpTable(RootModel rootModel, DomainModel idDomain, DomainModel nameDomain) { - TableModel empTable = rootModel.createJiemamyModel(TableModel.class).init("T_EMP"); - rootModel.appendModel(empTable); - empTable.setLogicalName("従業員"); - empTable.setBeginScript("/* test end script */"); - empTable.setDescription("従業員マスタです。"); - - ColumnModel idColumn = rootModel.createJiemamyModel(ColumnModel.class).init("ID", idDomain); - empTable.getColumns().add(idColumn); - idColumn.addConstraint(rootModel.createJiemamyModel(PrimaryKeyConstraintModel.class).init()); - idColumn.setLogicalName("従業員ID"); - - ColumnModel noColumn = - rootModel.createJiemamyModel(ColumnModel.class).init("EMP_NO", new IntegerDataTypeMock()); - empTable.getColumns().add(noColumn); - noColumn.addConstraint(rootModel.createJiemamyModel(NotNullConstraintModel.class).init()); - noColumn.setLogicalName("従業員番号"); - - ColumnModel nameColumn = rootModel.createJiemamyModel(ColumnModel.class).init("EMP_NAME", nameDomain); - empTable.getColumns().add(nameColumn); - nameColumn.addConstraint(rootModel.createJiemamyModel(NotNullConstraintModel.class).init()); - nameColumn.setLogicalName("従業員名"); - nameColumn.setDefaultValue("no name"); - nameColumn.setSimpleIndex(true); - nameColumn.setRepresentation(true); - - rootModel.createJiemamyModel(ColumnModel.class).init("MGR_ID", new IntegerDataTypeMock()); - - ColumnModel hireColumn = - rootModel.createJiemamyModel(ColumnModel.class).init("HIREDATE", new TimestampDataTypeMock()); - empTable.getColumns().add(hireColumn); - hireColumn.addConstraint(rootModel.createJiemamyModel(NotNullConstraintModel.class).init()); - - ColumnModel salColumn = - rootModel.createJiemamyModel(ColumnModel.class).init("SAL", new NumericDataTypeMock(7, 2)); - empTable.getColumns().add(salColumn); - salColumn.addConstraint(rootModel.createJiemamyModel(NotNullConstraintModel.class).init()); - - ColumnModel deptColumn = - rootModel.createJiemamyModel(ColumnModel.class).init("DEPT_ID", new IntegerDataTypeMock()); - empTable.getColumns().add(deptColumn); - deptColumn.addConstraint(rootModel.createJiemamyModel(NotNullConstraintModel.class).init()); - - return empTable; - } - - /** - * 外部キーを生成する。 - * このメソッドは、複合キーテーブルを参照する外部キーは生成できない。 - * @param rootModel - * @param target 参照先テーブル - * @param source 制約を受けるテーブル - * @param sourceColumnName 制約を受けるカラムのカラム名 - * @return 外部キー - */ - private ForeignKeyModel createForeignKey(RootModel rootModel, TableModel target, TableModel source, - String sourceColumnName) { - String[] sourceColumnNames = new String[] { - sourceColumnName - }; - - ForeignKeyModel fk = rootModel.createJiemamyModel(ForeignKeyModel.class).init(rootModel, source, target); - fk.createMappings(rootModel, false); - for (int i = 0; i < sourceColumnNames.length; i++) { - try { - ColumnModel constraintColumn = source.getColumn(sourceColumnNames[i]); - fk.getMappings().get(i).setConstraintColumn(constraintColumn); - break; - } catch (TooManyElementsException e) { - throw new JiemamyRuntimeException("test code error", e); - } catch (ElementNotFoundException e) { - // ignore - } - } - - return fk; - } -} Copied: artemis/trunk/org.jiemamy.serializer/src/main/java/org/jiemamy/core/model/ApplicationModelCreator.java (from rev 2024, artemis/trunk/org.jiemamy.serializer/src/main/java/ApplicationModelCreator.java) =================================================================== --- artemis/trunk/org.jiemamy.serializer/src/main/java/org/jiemamy/core/model/ApplicationModelCreator.java (rev 0) +++ artemis/trunk/org.jiemamy.serializer/src/main/java/org/jiemamy/core/model/ApplicationModelCreator.java 2008-10-22 17:20:54 UTC (rev 2025) @@ -0,0 +1,524 @@ +package org.jiemamy.core.model; +import java.util.ArrayList; +import java.util.List; + +import org.jiemamy.core.S2FactoryStrategy; +import org.jiemamy.core.model.dataset.RecordModelImpl; +import org.jiemamy.core.model.typedef.datatype.impl.IntegerDataTypeMock; +import org.jiemamy.core.model.typedef.datatype.impl.NumericDataTypeMock; +import org.jiemamy.core.model.typedef.datatype.impl.TimestampDataTypeMock; +import org.jiemamy.core.model.typedef.datatype.impl.VarcharDataTypeMock; +import org.jiemamy.core.utils.processor.entity.table.GetColumnProcessor; +import org.jiemamy.core.utils.processor.root.SetRecordProcessor; +import org.jiemamy.creator.JiemamyModelFactory; +import org.jiemamy.spec.exception.ElementNotFoundException; +import org.jiemamy.spec.exception.JiemamyRuntimeException; +import org.jiemamy.spec.exception.TooManyElementsException; +import org.jiemamy.spec.model.ColumnModel; +import org.jiemamy.spec.model.DomainModel; +import org.jiemamy.spec.model.RootModel; +import org.jiemamy.spec.model.connection.ForeignKeyModel; +import org.jiemamy.spec.model.connection.ForeignKeyModel.InitiallyCheckTime; +import org.jiemamy.spec.model.connection.ForeignKeyModel.ReferentialAction; +import org.jiemamy.spec.model.constraint.NotNullConstraintModel; +import org.jiemamy.spec.model.constraint.PrimaryKeyConstraintModel; +import org.jiemamy.spec.model.constraint.UniqueConstraintModel; +import org.jiemamy.spec.model.dataset.RecordModel; +import org.jiemamy.spec.model.node.StickyModel; +import org.jiemamy.spec.model.node.TableModel; +import org.jiemamy.spec.model.node.ViewModel; +import org.jiemamy.spec.view.model.DiagramPresentationModel; +import org.jiemamy.spec.view.model.DiagramPresentations; +import org.jiemamy.spec.view.model.geometory.JmPoint; +import org.jiemamy.spec.view.model.geometory.JmRectangle; + +/** + * アプリケーション用のモデルを生成するクラス。 + * + * @author j5ik2o + */ +public class ApplicationModelCreator { + + /** + * TODO for daisuke + * @param args + */ + public static void main(String[] args) { + RootModel rootModel = new ApplicationModelCreator().createModel(); + System.out.println(rootModel); + } + + /** + * テスト用モデルを生成する。 + * @return モデル + */ + public RootModel createModel() { + JiemamyModelFactory.init(new S2FactoryStrategy("jiemamy-view.dicon")); + int offset = 50; + + RootModel rootModel = JiemamyModelFactory.createRoot().init(); + rootModel.setDialectClassName("org.jiemamy.dialect.mysql.MySqlDialect"); // MySQLDialect.class.getName() + rootModel.setBeginScript("BEGIN;"); + rootModel.setEndScript("COMMIT;"); + rootModel.setDescription("シリアライゼーションイメージ"); + rootModel.setSchemaName("FOO"); + + DomainModel idDomain = rootModel.createJiemamyModel(DomainModel.class).init("ID", new IntegerDataTypeMock()); + rootModel.appendModel(idDomain); + idDomain.addConstraint(rootModel.createJiemamyModel(NotNullConstraintModel.class).init()); + idDomain.addConstraint(rootModel.createJiemamyModel(UniqueConstraintModel.class).init()); + // TODO AUTO_INCREMENTの追加 [CORE-21] + + DomainModel nameDomain = + rootModel.createJiemamyModel(DomainModel.class).init("NAME", new VarcharDataTypeMock(32)); + rootModel.appendModel(nameDomain); + nameDomain.setDescription("人名用の型です。"); + + // ノードの生成 + TableModel deptTable = createDeptTable(rootModel, idDomain, nameDomain); + TableModel empTable = createEmpTable(rootModel, idDomain, nameDomain); + + ViewModel highSalView = + rootModel.createJiemamyModel(ViewModel.class).init("V_HIGH_SAL_EMP", + "SELECT * FROM T_EMP WHERE SAL > 2000;"); + highSalView.setLogicalName("高給取り"); + rootModel.appendModel(highSalView); + + StickyModel sticky = rootModel.createJiemamyModel(StickyModel.class).init(); + rootModel.appendModel(sticky); + sticky.setContents("メモーー"); + + // コネクションの生成・追加 + ForeignKeyModel fkEmpEmp = createForeignKey(rootModel, empTable, empTable, "MGR_ID"); + rootModel.appendModel(fkEmpEmp); + fkEmpEmp.setOnDelete(ReferentialAction.SET_NULL); + fkEmpEmp.setDeferrable(true); + fkEmpEmp.setInitiallyCheckTime(InitiallyCheckTime.DEFERRED); + + ForeignKeyModel fkEmpDept = createForeignKey(rootModel, deptTable, empTable, "DEPT_ID"); + rootModel.appendModel(fkEmpDept); + + // ダイアグラム表現の生成・追加(1) + DiagramPresentationModel presentation = + rootModel.createJiemamyModel(DiagramPresentationModel.class).init("全部表示する"); + rootModel.getAdapter(DiagramPresentations.class).add(presentation); + presentation.setName("全部表示する"); + presentation.getNodeLayouts().put(empTable, new JmRectangle(360, 60)); + presentation.getNodeLayouts().put(deptTable, new JmRectangle(60, 60)); + presentation.getNodeLayouts().put(highSalView, new JmRectangle(60, 270)); + presentation.getNodeLayouts().put(sticky, new JmRectangle(360, 270)); + + List<JmPoint> bendpoints = new ArrayList<JmPoint>(); + JmRectangle rect = presentation.getNodeLayouts().get(empTable); + bendpoints.add(0, new JmPoint(Math.max(rect.x - offset, 0), rect.y)); + bendpoints.add(1, new JmPoint(rect.x, Math.max(rect.y - offset, 0))); + presentation.getConnectionLayouts().put(fkEmpEmp, bendpoints); + presentation.getConnectionLayouts().put(fkEmpDept, new ArrayList<JmPoint>()); // bendpount無し + + // ダイアグラム表現の生成・追加(2) + presentation = rootModel.createJiemamyModel(DiagramPresentationModel.class).init("一部表示する"); + rootModel.getAdapter(DiagramPresentations.class).add(presentation); + presentation.getNodeLayouts().put(empTable, new JmRectangle(60, 60)); + presentation.getNodeLayouts().put(highSalView, new JmRectangle(270, 270)); + presentation.getConnectionLayouts().put(fkEmpDept, new ArrayList<JmPoint>()); // bendpount無し + +// // データセットの生成・追加(1) +// InsertDataSetModel dataSet = rootModel.createJiemamyModel(InsertDataSetModel.class).init("データ群en"); +// rootModel.getAdapter(InsertDataSetModel.class).add(dataSet); +// dataSet.getRecords().put(deptTable, createDeptDataSetEn(deptTable)); +// dataSet.getRecords().put(empTable, createEmpDataSetEn(empTable)); +// +// // データセットの生成・追加(2) +// dataSet = rootModel.createJiemamyModel(InsertDataSetModel.class).init("データ群ja"); +// rootModel.getAdapter(InsertDataSetModel.class).add(dataSet); +// dataSet.getRecords().put(deptTable, createDeptDataSetJa(deptTable)); +// dataSet.getRecords().put(empTable, createEmpDataSetJa(empTable)); + + return rootModel; + } + + private List<RecordModel> createDeptDataSetEn(TableModel deptTable) { + List<RecordModel> result = new ArrayList<RecordModel>(); + + try { + RecordModel record = new RecordModelImpl(); + + record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("ID")), "1")); + record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NO")), "10")); + record + .process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NAME")), "ACCOUNTING")); + record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("LOC")), "NEW YORK")); + result.add(record); + + record = new RecordModelImpl(); + record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("ID")), "2")); + record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NO")), "20")); + record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NAME")), "RESEARCH")); + record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("LOC")), "DALLAS")); + result.add(record); + + record = new RecordModelImpl(); + record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("ID")), "3")); + record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NO")), "30")); + record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NAME")), "SALES")); + record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("LOC")), "CHICAGO")); + result.add(record); + + record = new RecordModelImpl(); + record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("ID")), "4")); + record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NO")), "40")); + record + .process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NAME")), "OPERATIONS")); + record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("LOC")), "BOSTON")); + result.add(record); + } catch (TooManyElementsException e) { + throw new JiemamyRuntimeException("test code error", e); + } + + return result; + } + + private List<RecordModel> createDeptDataSetJa(TableModel deptTable) { + List<RecordModel> result = new ArrayList<RecordModel>(); + + try { + RecordModel record = new RecordModelImpl(); + + record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("ID")), "1")); + record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NO")), "10")); + record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NAME")), "経理部")); + record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("LOC")), "広島")); + result.add(record); + + record = new RecordModelImpl(); + record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("ID")), "2")); + record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NO")), "20")); + record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NAME")), "研究開発部")); + record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("LOC")), "京都")); + result.add(record); + + record = new RecordModelImpl(); + record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("ID")), "3")); + record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NO")), "30")); + record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NAME")), "営業部")); + record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("LOC")), "東京")); + result.add(record); + + record = new RecordModelImpl(); + record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("ID")), "4")); + record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NO")), "40")); + record.process(new SetRecordProcessor(deptTable.process(new GetColumnProcessor("DEPT_NAME")), "経営本部")); + // locは指定せず、特定しない状態 + result.add(record); + } catch (TooManyElementsException e) { + throw new JiemamyRuntimeException("test code error", e); + } + + return result; + } + + /** + * DEPTテーブルの生成。 + * @param rootModel + * @param idDomain IDの型として使用するドメイン + * @param nameDomain 名称として使用するドメイン + * @return DEPTテーブル + */ + private TableModel createDeptTable(RootModel rootModel, DomainModel idDomain, DomainModel nameDomain) { + TableModel deptTable = rootModel.createJiemamyModel(TableModel.class).init("T_DEPT"); + rootModel.appendModel(deptTable); + deptTable.setBeginScript("/* test begin script */"); + deptTable.setDescription("部署マスタです。"); + + ColumnModel idColumn = rootModel.createJiemamyModel(ColumnModel.class).init("ID", idDomain); + deptTable.getColumns().add(idColumn); + idColumn.addConstraint(rootModel.createJiemamyModel(PrimaryKeyConstraintModel.class).init()); + idColumn.setLogicalName("部署ID"); + + ColumnModel noColumn = + rootModel.createJiemamyModel(ColumnModel.class).init("DEPT_NO", new IntegerDataTypeMock()); + deptTable.getColumns().add(noColumn); + noColumn.setLogicalName("部署番号"); + + ColumnModel deptNameColumn = + rootModel.createJiemamyModel(ColumnModel.class).init("DEPT_NAME", new VarcharDataTypeMock(20)); + deptTable.getColumns().add(deptNameColumn); + deptNameColumn.setLogicalName("部署名"); + deptNameColumn.setRepresentation(true); + + ColumnModel locColumn = + rootModel.createJiemamyModel(ColumnModel.class).init("LOC", new VarcharDataTypeMock(20)); + deptTable.getColumns().add(locColumn); + locColumn.setLogicalName("ロケーション"); + locColumn.setDefaultValue("secret"); + + return deptTable; + } + + private List<RecordModel> createEmpDataSetEn(TableModel empTable) { + List<RecordModel> result = new ArrayList<RecordModel>(); + + try { + RecordModel record = new RecordModelImpl(); + + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "1")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "10")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "SMITH")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), "3")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "2003-02-01")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "40")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "3")); + result.add(record); + + record = new RecordModelImpl(); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "2")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "20")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "ALLEN")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), "3")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "2000-03-04")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "50")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "4")); + result.add(record); + + record = new RecordModelImpl(); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "3")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "30")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "WARD")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), null)); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "1993-12-05")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "60")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "4")); + result.add(record); + + record = new RecordModelImpl(); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "4")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "40")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "JONES")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), "2")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "2007-04-01")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "36")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "2")); + result.add(record); + + record = new RecordModelImpl(); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "5")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "50")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "MARTIN")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), "1")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "2002-05-30")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "30")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "3")); + result.add(record); + + record = new RecordModelImpl(); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "6")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "60")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "BLAKE")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), "3")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "2007-04-01")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "25")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "2")); + result.add(record); + + record = new RecordModelImpl(); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "7")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "70")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "CLARK")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), "1")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "2004-09-01")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "30")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "1")); + result.add(record); + + record = new RecordModelImpl(); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "8")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "80")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "SCOTT")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), "4")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "2008-03-01")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "25")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "2")); + result.add(record); + } catch (TooManyElementsException e) { + throw new JiemamyRuntimeException("test code error", e); + } + + return result; + } + + private List<RecordModel> createEmpDataSetJa(TableModel empTable) { + List<RecordModel> result = new ArrayList<RecordModel>(); + + try { + RecordModel record = new RecordModelImpl(); + + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "1")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "10")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "山本")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), "3")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "2003-02-01")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "40")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "3")); + result.add(record); + + record = new RecordModelImpl(); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "2")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "20")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "内海")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), "3")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "2000-03-04")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "50")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "4")); + result.add(record); + + record = new RecordModelImpl(); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "3")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "30")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "村瀬")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), null)); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "1993-12-05")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "60")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "4")); + result.add(record); + + record = new RecordModelImpl(); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "4")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "40")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "近藤")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), "2")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "2007-04-01")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "36")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "2")); + result.add(record); + + record = new RecordModelImpl(); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "5")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "50")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "小峰")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), "1")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "2002-05-30")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "30")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "3")); + result.add(record); + + record = new RecordModelImpl(); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "6")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "60")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "三浦")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), "3")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "2007-04-01")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "25")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "2")); + result.add(record); + + record = new RecordModelImpl(); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "7")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "70")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "前島")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), "1")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "2004-09-01")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "30")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "1")); + result.add(record); + + record = new RecordModelImpl(); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("ID")), "8")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NO")), "80")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("EMP_NAME")), "島崎")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("MGR_ID")), "4")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("HIREDATE")), "2008-03-01")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("SAL")), "25")); + record.process(new SetRecordProcessor(empTable.process(new GetColumnProcessor("DEPT_ID")), "2")); + result.add(record); + } catch (TooManyElementsException e) { + throw new JiemamyRuntimeException("test code error", e); + } + + return result; + } + + /** + * EMPテーブルの生成 + * @param rootModel + * @param idDomain IDの型として使用するドメイン + * @param nameDomain 名称として使用するドメイン + * @return EMPテーブル + */ + private TableModel createEmpTable(RootModel rootModel, DomainModel idDomain, DomainModel nameDomain) { + TableModel empTable = rootModel.createJiemamyModel(TableModel.class).init("T_EMP"); + rootModel.appendModel(empTable); + empTable.setLogicalName("従業員"); + empTable.setBeginScript("/* test end script */"); + empTable.setDescription("従業員マスタです。"); + + ColumnModel idColumn = rootModel.createJiemamyModel(ColumnModel.class).init("ID", idDomain); + empTable.getColumns().add(idColumn); + idColumn.addConstraint(rootModel.createJiemamyModel(PrimaryKeyConstraintModel.class).init()); + idColumn.setLogicalName("従業員ID"); + + ColumnModel noColumn = + rootModel.createJiemamyModel(ColumnModel.class).init("EMP_NO", new IntegerDataTypeMock()); + empTable.getColumns().add(noColumn); + noColumn.addConstraint(rootModel.createJiemamyModel(NotNullConstraintModel.class).init()); + noColumn.setLogicalName("従業員番号"); + + ColumnModel nameColumn = rootModel.createJiemamyModel(ColumnModel.class).init("EMP_NAME", nameDomain); + empTable.getColumns().add(nameColumn); + nameColumn.addConstraint(rootModel.createJiemamyModel(NotNullConstraintModel.class).init()); + nameColumn.setLogicalName("従業員名"); + nameColumn.setDefaultValue("no name"); + nameColumn.setSimpleIndex(true); + nameColumn.setRepresentation(true); + + rootModel.createJiemamyModel(ColumnModel.class).init("MGR_ID", new IntegerDataTypeMock()); + + ColumnModel hireColumn = + rootModel.createJiemamyModel(ColumnModel.class).init("HIREDATE", new TimestampDataTypeMock()); + empTable.getColumns().add(hireColumn); + hireColumn.addConstraint(rootModel.createJiemamyModel(NotNullConstraintModel.class).init()); + + ColumnModel salColumn = + rootModel.createJiemamyModel(ColumnModel.class).init("SAL", new NumericDataTypeMock(7, 2)); + empTable.getColumns().add(salColumn); + salColumn.addConstraint(rootModel.createJiemamyModel(NotNullConstraintModel.class).init()); + + ColumnModel deptColumn = + rootModel.createJiemamyModel(ColumnModel.class).init("DEPT_ID", new IntegerDataTypeMock()); + empTable.getColumns().add(deptColumn); + deptColumn.addConstraint(rootModel.createJiemamyModel(NotNullConstraintModel.class).init()); + + return empTable; + } + + /** + * 外部キーを生成する。 + * このメソッドは、複合キーテーブルを参照する外部キーは生成できない。 + * @param rootModel + * @param target 参照先テーブル + * @param source 制約を受けるテーブル + * @param sourceColumnName 制約を受けるカラムのカラム名 + * @return 外部キー + */ + private ForeignKeyModel createForeignKey(RootModel rootModel, TableModel target, TableModel source, + String sourceColumnName) { + String[] sourceColumnNames = new String[] { + sourceColumnName + }; + + ForeignKeyModel fk = rootModel.createJiemamyModel(ForeignKeyModel.class).init(rootModel, source, target); + fk.createMappings(rootModel, false); + for (int i = 0; i < sourceColumnNames.length; i++) { + try { + ColumnModel constraintColumn = source.getColumn(sourceColumnNames[i]); + fk.getMappings().get(i).setConstraintColumn(constraintColumn); + break; + } catch (TooManyElementsException e) { + throw new JiemamyRuntimeException("test code error", e); + } catch (ElementNotFoundException e) { + // ignore + } + } + + return fk; + } +}