svnno****@sourc*****
svnno****@sourc*****
2009年 6月 16日 (火) 05:21:05 JST
Revision: 3423 http://sourceforge.jp/projects/jiemamy/svn/view?view=rev&revision=3423 Author: shin1 Date: 2009-06-16 05:21:05 +0900 (Tue, 16 Jun 2009) Log Message: ----------- [ECL-63]デフォルトのDispatchStrategyだとEntityの移動すら再描画が走らない問題の調査するためのテストを追加した。 コメントを読んでください。 Modified Paths: -------------- artemis/trunk/jiemamy-artemis-test/src/test/java/org/jiemamy/internal/EventBrokerImplTest.java Added Paths: ----------- artemis/trunk/jiemamy-artemis-test/src/test/resources/datafiles/shin1ogawa.jer -------------- next part -------------- Modified: artemis/trunk/jiemamy-artemis-test/src/test/java/org/jiemamy/internal/EventBrokerImplTest.java =================================================================== --- artemis/trunk/jiemamy-artemis-test/src/test/java/org/jiemamy/internal/EventBrokerImplTest.java 2009-06-15 17:20:58 UTC (rev 3422) +++ artemis/trunk/jiemamy-artemis-test/src/test/java/org/jiemamy/internal/EventBrokerImplTest.java 2009-06-15 20:21:05 UTC (rev 3423) @@ -19,10 +19,14 @@ package org.jiemamy.internal; import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.notNullValue; import static org.junit.Assert.assertThat; +import java.io.InputStream; import java.util.List; +import java.util.UUID; +import org.apache.commons.io.IOUtils; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -38,6 +42,8 @@ import org.jiemamy.JiemamyViewProperty.DiagramPresentationProperty; import org.jiemamy.editcommand.Command; import org.jiemamy.editcommand.CommandListener; +import org.jiemamy.facade.JiemamyViewFacade; +import org.jiemamy.facade.SavePoint; import org.jiemamy.internal.editcommand.AddAttributeCommand; import org.jiemamy.internal.editcommand.AddColumnToColumnRefListCommand; import org.jiemamy.internal.editcommand.AddEntityToRootCommand; @@ -45,10 +51,16 @@ import org.jiemamy.model.DiagramPresentationModel; import org.jiemamy.model.DiagramPresentations; import org.jiemamy.model.JiemamyElement; +import org.jiemamy.model.NodeProfile; import org.jiemamy.model.RootModel; import org.jiemamy.model.attribute.ColumnModel; import org.jiemamy.model.attribute.constraint.PrimaryKey; +import org.jiemamy.model.entity.EntityModel; import org.jiemamy.model.entity.TableModel; +import org.jiemamy.model.geometory.JmRectangle; +import org.jiemamy.model.node.NodeAdapter; +import org.jiemamy.serializer.JiemamySerializer; +import org.jiemamy.serializer.SerializationException; import org.jiemamy.utils.CollectionsUtil; /** @@ -180,7 +192,113 @@ assertThat(tableModelListener2.commandList.size(), is(2)); // column, primaryKey } + /** + * Entityの位置の変更が正しく通知されるか。 + * <p>EclipsePlugin側で無差別ディスパッチをはずすと、Entityの移動すら再描画されない、 + * という問題の再現を試みたい。再現する=このTestが通らないはず。</p> + * <p>…と思うのだが、RootModelにはイベントが届いているよぅだ。</p> + * <p>ちなみに、NodeProfileを保持している状態は以下のかたち?</p> + * <pre>RootModel + * <-(Adapter)-DiagramPresentations(Collection) + * <--DiagramPresentationModel(その要素) + * <-(Field)-nodeProfiles(NodeAdapterをキーにしたMap) + * <--nodeProfile(その要素)</pre> + * <p>これであれば、NodeProfileを変更しても、該当するTableModelにはイベントは飛んでこないはず!</p> + * <p>例えばこの例のNodeProfileのような、Adapterを介した先の遠回りすぎるModelに対する編集コマンド + * を監視する事が多数あるならば、DefaultDispatchStrategyを作り替える対応が必要。</p> + * <p>まれなのであれば、NodeProfileの場合専用のDispatchStrategyを作ってしまうか。</p> + * <p>どっちにしろ、カスタマイズされた無駄の少ないDispatchStrategyを作る為の仕様が必要ですねー。</p> + * <p>仕様とは:何が変更された時にイベントを受け取りたいか?という仕様で、編集コマンドを軸に + * 洗い出していくのがラクなのかも。</p> + * + * @throws SerializationException デシリアライズに失敗した場合 + */ + @Test + public void test04_changeNodeBoundary() throws SerializationException { + Jiemamy jiemamy = Jiemamy.newInstance(new Artemis(new ArtemisView())); + JiemamySerializer serializer = jiemamy.getSerializer(); + InputStream in = null; + final RootModel rootModel; + try { + in = EventBrokerImplTest.class.getResourceAsStream("/datafiles/shin1ogawa.jer"); + rootModel = serializer.deserialize(in); + } finally { + IOUtils.closeQuietly(in); + } + assertThat(rootModel, is(notNullValue())); + + // 念のため、EventBrokerにDefaultDispatchStrategyを設定する。 + jiemamy.getEventBroker().setStrategy(new DispatchStrategy() { + + // EventBroker#DefaultDispatchStrategyと同じ実装。 + public boolean needToDispatch(CommandListener listener, Command command) { + UUID uuid = command.getTarget().getId(); + JiemamyElement targetModel = listener.getTargetModel(); + return ReferenceResolverImpl.isDescendFromElement(targetModel, uuid); + } + }); // EventBroker#DefaultDispatchStrategyのスコープをパッケージプライベートにしたい。 + + CommandListenerMock rootModelListener = new CommandListenerMock(rootModel); + jiemamy.getEventBroker().addListener(rootModelListener); + + final DiagramPresentationModel presentation = rootModel.getAdapter(DiagramPresentations.class).get(0); + assertThat(presentation, is(notNullValue())); + + final EntityModel firstEntity = rootModel.getEntities().first(); + LOGGER.debug("firstEntity=" + firstEntity.getName()); + CommandListenerMock firstEntityListener1 = new CommandListenerMock(firstEntity); + jiemamy.getEventBroker().addListener(firstEntityListener1); + CommandListenerMock firstEntityListener2 = new CommandListenerMock(firstEntity); + jiemamy.getEventBroker().addListener(firstEntityListener2, new DispatchStrategy() { + + // 自身に関係するNodeProfileの変更を受け取る事ができるリスナのサンプル。 + + NodeAdapter nodeAdapter; + + { + nodeAdapter = firstEntity.getAdapter(NodeAdapter.class); + } + + public boolean needToDispatch(CommandListener listener, Command command) { + JiemamyElement target = command.getTarget(); + if (target instanceof NodeProfile) { + if (presentation.getNodeProfiles().get(nodeAdapter) == target) { + return true; + } + } + return false; + } + }); + + EntityModel lastEntity = rootModel.getEntities().last(); + LOGGER.debug("lastEntity=" + lastEntity.getName()); + CommandListenerMock lastEntityListener = new CommandListenerMock(lastEntity); + jiemamy.getEventBroker().addListener(lastEntityListener); + + NodeAdapter nodeAdapter = firstEntity.getAdapter(NodeAdapter.class); + assertThat(nodeAdapter, is(notNullValue())); + NodeProfile nodeProfile = presentation.getNodeProfiles().get(nodeAdapter); + assertThat(nodeProfile, is(notNullValue())); + + // entityの位置の移動をエミュレート。移動するのはfirstEntity + JiemamyViewFacade facade = jiemamy.getFactory().newFacade(JiemamyViewFacade.class); + SavePoint savePoint = facade.save(); + facade.changeNodeBoundary(0, nodeAdapter, new JmRectangle(10, 10)); + assertThat(rootModelListener.commandList.size(), is(1)); +// assertThat(firstEntityListener1.commandList.size(), is(1)); JavaDocに記述した理由で、イベントが届かない! + assertThat(firstEntityListener2.commandList.size(), is(1)); + assertThat(lastEntityListener.commandList.size(), is(0)); // 影響を受けない + System.out.println(rootModelListener.commandList.get(0)); + facade.rollback(savePoint); + assertThat(rootModelListener.commandList.size(), is(2)); +// assertThat(firstEntityListener1.commandList.size(), is(2)); JavaDocに記述した理由で、イベントが届かない! + assertThat(firstEntityListener2.commandList.size(), is(2)); + assertThat(lastEntityListener.commandList.size(), is(0)); // 影響を受けない + System.out.println(rootModelListener.commandList.get(1)); + } + + /** * {@link CommandListener}のテスト用モッククラス。 * Added: artemis/trunk/jiemamy-artemis-test/src/test/resources/datafiles/shin1ogawa.jer =================================================================== --- artemis/trunk/jiemamy-artemis-test/src/test/resources/datafiles/shin1ogawa.jer (rev 0) +++ artemis/trunk/jiemamy-artemis-test/src/test/resources/datafiles/shin1ogawa.jer 2009-06-15 20:21:05 UTC (rev 3423) @@ -0,0 +1,616 @@ +<?xml version="1.0" encoding="UTF-8"?> +<jiemamy xmlns="http://jiemamy.org/xml/ns/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="a7243a6c-716a-4642-b6da-33a0a71b35cd" version="0.2" xsi:schemaLocation="http://jiemamy.org/xml/ns/core http://jiemamy.org/xml/0.2.0/jiemamy-core.xsd http://jiemamy.org/xml/ns/view null"> + <dialect>org.jiemamy.dialect.generic.GenericDialect</dialect> + <domains/> + <entities> + <table id="d2901430-27bc-428e-aefd-ffd4eb4b4fe7"> + <name>TimeLineTypes</name> + <attributes> + <column id="fd725b85-219d-4a5f-b79f-7e371e445e18"> + <name>id</name> + <dataType> + <typeCategory>INTEGER</typeCategory> + <typeName>INTEGER</typeName> + </dataType> + <notNull id="56e1e283-947d-4aa5-b465-c0f2a70ae965"/> + </column> + <primaryKey id="277d0580-2660-4c72-a3fc-e693cbee746d"> + <columnRefs> + <columnRef ref="fd725b85-219d-4a5f-b79f-7e371e445e18"/> + </columnRefs> + </primaryKey> + <column id="f83db387-877a-4968-ad99-f1550fabf078"> + <name>name</name> + <dataType> + <typeCategory>VARCHAR</typeCategory> + <typeName>VARCHAR</typeName> + </dataType> + <notNull id="fc81bedf-0dcb-473b-904d-9972efdf222d"/> + </column> + <column id="3f609bb2-28c8-4c38-8095-fd38236270f7"> + <name>adapterFQCN</name> + <dataType> + <typeCategory>VARCHAR</typeCategory> + <typeName>VARCHAR</typeName> + </dataType> + <notNull id="f25ba87d-8e7b-40ee-b4df-d6d2fc6b492d"/> + </column> + </attributes> + <indexes/> + </table> + <table id="db70da7f-5b9e-4152-96b3-e53bcd54af32"> + <name>Tasks</name> + <logicalName>Tasks</logicalName> + <attributes> + <column id="f714bdc0-0c9a-490c-91b8-183849fbcf25"> + <name>projectId</name> + <dataType> + <typeCategory>INTEGER</typeCategory> + <typeName>INTEGER</typeName> + </dataType> + <notNull id="7b5242cc-7494-4ff0-8681-b63a0df68e6c"/> + </column> + <primaryKey id="51c9267b-573f-4423-933c-8454f6adcda1"> + <columnRefs> + <columnRef ref="d4cd11d8-6082-4bef-b9a7-87427a37004a"/> + </columnRefs> + </primaryKey> + <column id="d4cd11d8-6082-4bef-b9a7-87427a37004a"> + <name>id</name> + <logicalName>id</logicalName> + <dataType> + <typeCategory>INTEGER</typeCategory> + <typeName>INTEGER</typeName> + </dataType> + <notNull id="458e15c1-3578-4187-be1b-7660affcc87f"/> + </column> + <column id="4a0d452c-860c-426e-8f04-8dd89647d70a"> + <name>name</name> + <logicalName>name</logicalName> + <dataType> + <typeCategory>VARCHAR</typeCategory> + <typeName>VARCHAR</typeName> + </dataType> + <notNull id="a8e0166c-c6e1-40a9-bdd0-93de1a8dbb81"/> + </column> + <foreignKey id="0a1d4672-a1c2-46f0-8ce9-7f73c4d079b7"> + <columnRefs> + <columnRef ref="f714bdc0-0c9a-490c-91b8-183849fbcf25"/> + </columnRefs> + <referenceColumns> + <columnRef ref="5fa5ce02-0765-4e71-8abc-bb74d7243b49"/> + </referenceColumns> + </foreignKey> + </attributes> + <indexes/> + </table> + <table id="f2798e8a-2dd0-4895-a940-fad6b2408a76"> + <name>ProjectTimeline</name> + <attributes> + <column id="be1b41fc-9768-4113-b4ec-ce8d313e0e72"> + <name>userId</name> + <dataType> + <typeCategory>INTEGER</typeCategory> + <typeName>INTEGER</typeName> + </dataType> + <notNull id="45ba64a9-2099-41cf-bdb4-3b0e5392ff9e"/> + </column> + <column id="5b1e9a87-d7af-4f7e-9d37-06498d33037d"> + <name>projectId</name> + <dataType> + <typeCategory>INTEGER</typeCategory> + <typeName>INTEGER</typeName> + </dataType> + <notNull id="cccef729-788b-43bd-90ba-10214e164913"/> + </column> + <column id="dfb6e532-6754-4155-8cf8-7266739014cb"> + <name>timelineId</name> + <dataType> + <typeCategory>INTEGER</typeCategory> + <typeName>INTEGER</typeName> + </dataType> + <notNull id="e64769ae-a578-4bc0-851e-9ae53055cbe0"/> + </column> + <column id="78b92a9c-5440-41ca-9c05-f4742297a630"> + <name>id</name> + <dataType> + <typeCategory>INTEGER</typeCategory> + <typeName>INTEGER</typeName> + </dataType> + <notNull id="02b01a3d-46ca-4f4d-b8a5-3298e736e273"/> + </column> + <primaryKey id="5cfae11d-93e0-4537-ae87-75b027ed8d37"> + <columnRefs> + <columnRef ref="78b92a9c-5440-41ca-9c05-f4742297a630"/> + </columnRefs> + </primaryKey> + <foreignKey id="54e7ac9e-8343-4ec3-9052-fc4def6d5517"> + <columnRefs> + <columnRef ref="be1b41fc-9768-4113-b4ec-ce8d313e0e72"/> + </columnRefs> + <referenceColumns> + <columnRef ref="53480099-1d9f-48f8-a261-c69b4bcbd34e"/> + </referenceColumns> + </foreignKey> + <foreignKey id="c805d2f7-bc51-4b6e-a831-a946715b7593"> + <columnRefs> + <columnRef ref="dfb6e532-6754-4155-8cf8-7266739014cb"/> + </columnRefs> + <referenceColumns> + <columnRef ref="66d84139-e9d4-4443-8f97-6571fd443b98"/> + </referenceColumns> + </foreignKey> + <foreignKey id="72746510-94de-44c3-a053-d9db1b04a2e5"> + <columnRefs> + <columnRef ref="5b1e9a87-d7af-4f7e-9d37-06498d33037d"/> + </columnRefs> + <referenceColumns> + <columnRef ref="5fa5ce02-0765-4e71-8abc-bb74d7243b49"/> + </referenceColumns> + </foreignKey> + </attributes> + <indexes/> + </table> + <table id="06db6e2f-4ffb-4984-8566-d8aeaa145f5c"> + <name>ProjectTypes</name> + <attributes> + <column id="3da99cd2-af80-4c0e-a384-e94ceea1536e"> + <name>id</name> + <logicalName>id</logicalName> + <dataType> + <typeCategory>INTEGER</typeCategory> + <typeName>INTEGER</typeName> + </dataType> + <notNull id="dd38cb33-b736-4e59-bf3d-3d0d2a60041b"/> + </column> + <primaryKey id="ca149e6c-dd21-408a-9c9d-24a07ab0bd3c"> + <columnRefs> + <columnRef ref="3da99cd2-af80-4c0e-a384-e94ceea1536e"/> + </columnRefs> + </primaryKey> + <column id="1415b83a-5c79-4f50-bb9f-5a3791839d50"> + <name>name</name> + <logicalName>name</logicalName> + <dataType> + <typeCategory>VARCHAR</typeCategory> + <typeName>VARCHAR</typeName> + </dataType> + <notNull id="063bbb23-0deb-4697-b44d-03c8b6749461"/> + </column> + <column id="da40c5ea-7ed5-427c-bb55-21c8009f9bf5"> + <name>adapterFQCN</name> + <logicalName>adapterFQCN</logicalName> + <description>拡張クラスのFQCN</description> + <dataType> + <typeCategory>VARCHAR</typeCategory> + <typeName>VARCHAR</typeName> + </dataType> + <notNull id="2f167570-8157-4d9e-af46-5b106e36ff9e"/> + </column> + </attributes> + <indexes/> + </table> + <table id="09471b7e-e3df-433b-a851-0b5db3f71d1b"> + <name>TimeLines</name> + <attributes> + <column id="207ca3d3-434a-4af8-b2a4-949d3623b928"> + <name>userId</name> + <dataType> + <typeCategory>INTEGER</typeCategory> + <typeName>INTEGER</typeName> + </dataType> + <notNull id="94537864-d50d-4735-9a42-eb77dfc4dfda"/> + </column> + <primaryKey id="eeb036ff-9b04-40df-a992-cf694e1fbc3a"> + <columnRefs> + <columnRef ref="66d84139-e9d4-4443-8f97-6571fd443b98"/> + </columnRefs> + </primaryKey> + <column id="66d84139-e9d4-4443-8f97-6571fd443b98"> + <name>id</name> + <dataType> + <typeCategory>INTEGER</typeCategory> + <typeName>INTEGER</typeName> + </dataType> + <notNull id="a0c9630b-5eab-4ba7-b972-f32041c7af90"/> + </column> + <column id="c8e6d98a-f07d-4f33-a0b9-523b968a560d"> + <name>name</name> + <dataType> + <typeCategory>VARCHAR</typeCategory> + <typeName>VARCHAR</typeName> + </dataType> + <notNull id="b8e1b4cc-0246-4000-bdff-c88b54b6bb55"/> + </column> + <column id="056dc558-79f7-41c3-a0db-2e89518cba38"> + <name>timelineType</name> + <dataType> + <typeCategory>INTEGER</typeCategory> + <typeName>INTEGER</typeName> + </dataType> + <notNull id="81f9a1ab-998b-4f0f-8d12-a990ad0ab202"/> + </column> + <foreignKey id="a438ad99-a0c3-4f67-8df1-39500669dfb2"> + <columnRefs> + <columnRef ref="056dc558-79f7-41c3-a0db-2e89518cba38"/> + </columnRefs> + <referenceColumns> + <columnRef ref="fd725b85-219d-4a5f-b79f-7e371e445e18"/> + </referenceColumns> + </foreignKey> + <foreignKey id="767d2609-f6e5-4b5d-a169-f6b1af8e4caa"> + <columnRefs> + <columnRef ref="207ca3d3-434a-4af8-b2a4-949d3623b928"/> + </columnRefs> + <referenceColumns> + <columnRef ref="53480099-1d9f-48f8-a261-c69b4bcbd34e"/> + </referenceColumns> + </foreignKey> + </attributes> + <indexes/> + </table> + <table id="22186f2c-0f25-4e9a-aa11-8cf41138002f"> + <name>Projects</name> + <logicalName>projects</logicalName> + <attributes> + <column id="18e88623-5dcc-4645-a67e-0c46e84765fd"> + <name>userId</name> + <dataType> + <typeCategory>INTEGER</typeCategory> + <typeName>INTEGER</typeName> + </dataType> + <notNull id="51898e08-671c-4c26-8e04-2cb2093be568"/> + </column> + <primaryKey id="9537746f-cb4b-49d0-ae9e-6e2ece0a47f6"> + <columnRefs> + <columnRef ref="5fa5ce02-0765-4e71-8abc-bb74d7243b49"/> + </columnRefs> + </primaryKey> + <column id="5fa5ce02-0765-4e71-8abc-bb74d7243b49"> + <name>id</name> + <logicalName>id</logicalName> + <dataType> + <typeCategory>INTEGER</typeCategory> + <typeName>INTEGER</typeName> + </dataType> + <notNull id="9bf5e9d6-4314-4649-a3ec-d0910c7c27c6"/> + </column> + <column id="0b277c35-8a74-4bb1-a390-2d1dd1cada7d"> + <name>name</name> + <logicalName>name</logicalName> + <dataType> + <typeCategory>VARCHAR</typeCategory> + <typeName>VARCHAR</typeName> + </dataType> + <notNull id="89a6fe60-e9b3-48ea-a0ec-6d082f83792b"/> + </column> + <column id="d7dd9959-3929-4eeb-b971-b34bb86c7d2b"> + <name>typeId</name> + <logicalName>typeId</logicalName> + <dataType> + <typeCategory>INTEGER</typeCategory> + <typeName>INTEGER</typeName> + </dataType> + <notNull id="176c3adf-a326-4c0e-9745-1635d0b33fee"/> + </column> + <foreignKey id="241fa723-1588-4b40-9d4b-50a827287c08"> + <columnRefs> + <columnRef ref="18e88623-5dcc-4645-a67e-0c46e84765fd"/> + </columnRefs> + <referenceColumns> + <columnRef ref="53480099-1d9f-48f8-a261-c69b4bcbd34e"/> + </referenceColumns> + </foreignKey> + <foreignKey id="d7414456-dfaf-4ebd-8981-8527ef7faf68"> + <columnRefs> + <columnRef ref="d7dd9959-3929-4eeb-b971-b34bb86c7d2b"/> + </columnRefs> + <referenceColumns> + <columnRef ref="3da99cd2-af80-4c0e-a384-e94ceea1536e"/> + </referenceColumns> + </foreignKey> + </attributes> + <indexes/> + </table> + <table id="2ca37ceb-1528-445e-a4e5-835bb3692f58"> + <name>Users</name> + <attributes> + <column id="53480099-1d9f-48f8-a261-c69b4bcbd34e"> + <name>id</name> + <logicalName>id</logicalName> + <dataType> + <typeCategory>INTEGER</typeCategory> + <typeName>INTEGER</typeName> + </dataType> + <notNull id="56707480-1daf-426a-b2a3-1f3c7b7ad630"/> + </column> + <primaryKey id="f6f34ea2-ce7b-4219-8fb0-b822652e6db7"> + <columnRefs> + <columnRef ref="53480099-1d9f-48f8-a261-c69b4bcbd34e"/> + </columnRefs> + </primaryKey> + <column id="414a5d6e-4463-4636-9a2e-9e2162fc8fb9"> + <name>password</name> + <dataType> + <typeCategory>VARCHAR</typeCategory> + <typeName>VARCHAR</typeName> + </dataType> + <notNull id="a5f67853-6955-4959-861c-d7c756f1dbc0"/> + </column> + <column id="725e4dfe-8a24-4c1f-b916-df726f5e3689"> + <name>name</name> + <dataType> + <typeCategory>VARCHAR</typeCategory> + <typeName>VARCHAR</typeName> + </dataType> + <notNull id="e1c3d445-0680-421a-8286-afde83595d3f"/> + </column> + <column id="ad25b917-e2d3-4b32-b9bb-2dd5c2f8a8d2"> + <name>email</name> + <dataType> + <typeCategory>VARCHAR</typeCategory> + <typeName>VARCHAR</typeName> + </dataType> + <notNull id="fef299ec-bad0-4782-87d6-8a78fe01a2f2"/> + </column> + </attributes> + <indexes/> + </table> + <table id="3fa93bac-5b34-4805-a192-7ff2b0df7f72"> + <name>TimeEntries</name> + <logicalName>TimeEntries</logicalName> + <attributes> + <column id="e52a7bee-9d01-4abb-8429-d1826b9671a3"> + <name>userId</name> + <dataType> + <typeCategory>INTEGER</typeCategory> + <typeName>INTEGER</typeName> + </dataType> + <notNull id="90126e69-25b2-4d3b-9578-02da44d91e3c"/> + </column> + <column id="e40b1fb3-2b78-4af8-aa3b-dd2215f95958"> + <name>taskId</name> + <logicalName>taskId</logicalName> + <dataType> + <typeCategory>INTEGER</typeCategory> + <typeName>INTEGER</typeName> + </dataType> + <notNull id="c41993ac-6fff-42b4-b1df-55b8278c5f8a"/> + </column> + <primaryKey id="260cd5d5-8dd3-4760-9ead-388a24f73155"> + <columnRefs> + <columnRef ref="4d7351e8-360e-4dc2-8d18-f0b1fcf796f0"/> + </columnRefs> + </primaryKey> + <column id="4d7351e8-360e-4dc2-8d18-f0b1fcf796f0"> + <name>id</name> + <dataType> + <typeCategory>INTEGER</typeCategory> + <typeName>INTEGER</typeName> + </dataType> + <notNull id="c63bd81a-3374-41ae-a6ba-abab0725f2ea"/> + </column> + <column id="f8896f13-3d90-416e-aabd-b73ed6be54c0"> + <name>startTime</name> + <dataType> + <typeCategory>OTHER</typeCategory> + <typeName>DATETIME</typeName> + </dataType> + <notNull id="c2bf2d77-6318-4e90-bb1d-1c009ced6912"/> + </column> + <foreignKey id="36a2b457-f230-48b4-8b66-012b2b127bf5"> + <columnRefs> + <columnRef ref="e52a7bee-9d01-4abb-8429-d1826b9671a3"/> + </columnRefs> + <referenceColumns> + <columnRef ref="53480099-1d9f-48f8-a261-c69b4bcbd34e"/> + </referenceColumns> + </foreignKey> + <column id="fc9fc313-e0da-489a-ad4a-2d0f58c3b907"> + <name>endTime</name> + <dataType> + <typeCategory>OTHER</typeCategory> + <typeName>DATETIME</typeName> + </dataType> + </column> + <foreignKey id="1509aae6-908f-43a5-8dbc-50deda1998ce"> + <columnRefs> + <columnRef ref="e40b1fb3-2b78-4af8-aa3b-dd2215f95958"/> + </columnRefs> + <referenceColumns> + <columnRef ref="d4cd11d8-6082-4bef-b9a7-87427a37004a"/> + </referenceColumns> + </foreignKey> + </attributes> + <indexes/> + </table> + <table id="5ee3bd92-aa96-41bb-a11c-45723f62292d"> + <name>TimelinePropertis</name> + <attributes> + <column id="566cc6ca-b453-4ab7-a0c3-89209301842a"> + <name>timeLineId</name> + <dataType> + <typeCategory>INTEGER</typeCategory> + <typeName>INTEGER</typeName> + </dataType> + <notNull id="988e021f-eba6-4122-8d04-ee329b1fd05b"/> + </column> + <column id="d2b955f5-b167-4ea2-a1e8-8e86cf3e5b6a"> + <name>id</name> + <dataType> + <typeCategory>INTEGER</typeCategory> + <typeName>INTEGER</typeName> + </dataType> + <notNull id="302b12a7-47fa-47f1-a3fe-e53d65379f75"/> + </column> + <primaryKey id="31a8d131-d551-4d08-bc72-2a34d5c40704"> + <columnRefs> + <columnRef ref="d2b955f5-b167-4ea2-a1e8-8e86cf3e5b6a"/> + </columnRefs> + </primaryKey> + <column id="2bd2e070-ce16-404d-9e4a-4fe1c392fa08"> + <name>key</name> + <dataType> + <typeCategory>VARCHAR</typeCategory> + <typeName>VARCHAR</typeName> + </dataType> + <notNull id="fc56674e-514c-42e2-873c-4f0a5af51110"/> + </column> + <column id="e50aacf4-ba6f-4cce-b377-0e2dd36bef86"> + <name>value</name> + <dataType> + <typeCategory>VARCHAR</typeCategory> + <typeName>VARCHAR</typeName> + </dataType> + </column> + <foreignKey id="2060dc98-e78f-44e7-80c3-a532bd3e38c4"> + <columnRefs> + <columnRef ref="566cc6ca-b453-4ab7-a0c3-89209301842a"/> + </columnRefs> + <referenceColumns> + <columnRef ref="66d84139-e9d4-4443-8f97-6571fd443b98"/> + </referenceColumns> + </foreignKey> + </attributes> + <indexes/> + </table> + <table id="713b95f2-8805-4ffb-9db4-eb1716ac3a78"> + <name>ProjectProperties</name> + <attributes> + <column id="93193e6d-11f1-489c-91ed-28282a661783"> + <name>projetId</name> + <dataType> + <typeCategory>INTEGER</typeCategory> + <typeName>INTEGER</typeName> + </dataType> + <notNull id="aa6ecced-edbf-40e1-874d-e518e941a5e3"/> + </column> + <column id="69f0cd77-a62b-415f-ab7d-4a984875bd95"> + <name>id</name> + <dataType> + <typeCategory>INTEGER</typeCategory> + <typeName>INTEGER</typeName> + </dataType> + <notNull id="22d08f6f-f044-4463-b23a-7c6f4f8c2eb0"/> + </column> + <primaryKey id="c8da8f88-feaf-430c-a829-8ff6b935ff6f"> + <columnRefs> + <columnRef ref="69f0cd77-a62b-415f-ab7d-4a984875bd95"/> + </columnRefs> + </primaryKey> + <column id="557a8b6c-c73b-4aec-aa4e-c3b00597222b"> + <name>key</name> + <dataType> + <typeCategory>VARCHAR</typeCategory> + <typeName>VARCHAR</typeName> + </dataType> + <notNull id="666e5b82-2266-4619-bd68-1bb20b563f4a"/> + </column> + <column id="dc41c859-c5b8-4c01-89fc-d9a851572165"> + <name>value</name> + <dataType> + <typeCategory>VARCHAR</typeCategory> + <typeName>VARCHAR</typeName> + </dataType> + </column> + <foreignKey id="17991065-590f-4855-b40a-141792c577b9"> + <columnRefs> + <columnRef ref="93193e6d-11f1-489c-91ed-28282a661783"/> + </columnRefs> + <referenceColumns> + <columnRef ref="5fa5ce02-0765-4e71-8abc-bb74d7243b49"/> + </referenceColumns> + </foreignKey> + </attributes> + <indexes/> + </table> + </entities> + <dataSets/> + <view:diagramPresentations xmlns:view="http://jiemamy.org/xml/ns/view"> + <view:diagramPresentation id="1e2a67a7-22ce-42da-8a2e-a1994e566691"> + <name>default</name> + <view:mode>PHYSICAL</view:mode> + <view:level>ATTRTYPE</view:level> + <view:nodeProfiles> + <view:nodeProfile id="1f54ee48-4e63-4d21-a871-31a65c79e0d0"> + <view:nodeObjectRef ref="d2901430-27bc-428e-aefd-ffd4eb4b4fe7"/> + <view:boundary height="-1" width="-1" x="744" y="677"/> + </view:nodeProfile> + <view:nodeProfile id="0135dfaf-c345-4bc0-b025-f2ed31fd80d7"> + <view:nodeObjectRef ref="db70da7f-5b9e-4152-96b3-e53bcd54af32"/> + <view:boundary height="-1" width="-1" x="263" y="269"/> + </view:nodeProfile> + <view:nodeProfile id="796d1627-d4bb-4bef-af03-f966ca0b0439"> + <view:nodeObjectRef ref="f2798e8a-2dd0-4895-a940-fad6b2408a76"/> + <view:boundary height="-1" width="-1" x="494" y="269"/> + </view:nodeProfile> + <view:nodeProfile id="5f8d26cf-3559-4f66-8519-a74b1965db38"> + <view:nodeObjectRef ref="06db6e2f-4ffb-4984-8566-d8aeaa145f5c"/> + <view:boundary height="-1" width="-1" x="248" y="677"/> + </view:nodeProfile> + <view:nodeProfile id="78cae801-a8aa-485d-8456-de866f84785b"> + <view:nodeObjectRef ref="09471b7e-e3df-433b-a851-0b5db3f71d1b"/> + <view:boundary height="-1" width="-1" x="740" y="473"/> + </view:nodeProfile> + <view:nodeProfile id="6a8df5f7-114e-422a-abd9-4909eaf5a5c7"> + <view:nodeObjectRef ref="22186f2c-0f25-4e9a-aa11-8cf41138002f"/> + <view:boundary height="-1" width="-1" x="271" y="473"/> + </view:nodeProfile> + <view:nodeProfile id="832dbbdd-5854-419f-9c02-d7307b832d79"> + <view:nodeObjectRef ref="2ca37ceb-1528-445e-a4e5-835bb3692f58"/> + <view:boundary height="-1" width="-1" x="509" y="677"/> + </view:nodeProfile> + <view:nodeProfile id="5d5c04b5-809d-495b-9979-a849b32a4773"> + <view:nodeObjectRef ref="3fa93bac-5b34-4805-a192-7ff2b0df7f72"/> + <view:boundary height="-1" width="-1" x="609" y="40"/> + </view:nodeProfile> + <view:nodeProfile id="01d98efd-5d31-4c0f-8a04-e0b3b7fe9624"> + <view:nodeObjectRef ref="5ee3bd92-aa96-41bb-a11c-45723f62292d"/> + <view:boundary height="-1" width="-1" x="746" y="269"/> + </view:nodeProfile> + <view:nodeProfile id="7c4478a9-70ec-43ca-ad27-5db954ca9a0c"> + <view:nodeObjectRef ref="713b95f2-8805-4ffb-9db4-eb1716ac3a78"/> + <view:boundary height="-1" width="-1" x="66" y="144"/> + </view:nodeProfile> + </view:nodeProfiles> + <view:connectionProfiles> + <view:connectionProfile id="80427445-22e9-40d8-ac0f-b229312e3e51"> + <view:connectionObjectRef ref="a438ad99-a0c3-4f67-8df1-39500669dfb2"/> + </view:connectionProfile> + <view:connectionProfile id="3fde629b-650c-4c4d-b68b-fc4b6f2060c5"> + <view:connectionObjectRef ref="c805d2f7-bc51-4b6e-a831-a946715b7593"/> + </view:connectionProfile> + <view:connectionProfile id="d1e75282-92f4-4c47-9c5e-d1c5553528a5"> + <view:connectionObjectRef ref="d7414456-dfaf-4ebd-8981-8527ef7faf68"/> + </view:connectionProfile> + <view:connectionProfile id="8334e893-195b-4af0-a082-314f0daf2cd3"> + <view:connectionObjectRef ref="0a1d4672-a1c2-46f0-8ce9-7f73c4d079b7"/> + </view:connectionProfile> + <view:connectionProfile id="e5f494ae-fdc5-4726-9812-9697a1fc3fb3"> + <view:connectionObjectRef ref="1509aae6-908f-43a5-8dbc-50deda1998ce"/> + </view:connectionProfile> + <view:connectionProfile id="3cf50ef2-eb12-42dd-ac65-635a6b7c5722"> + <view:connectionObjectRef ref="17991065-590f-4855-b40a-141792c577b9"/> + </view:connectionProfile> + <view:connectionProfile id="76031a5b-c38d-404d-bc18-c6e7a012e671"> + <view:connectionObjectRef ref="2060dc98-e78f-44e7-80c3-a532bd3e38c4"/> + </view:connectionProfile> + <view:connectionProfile id="9f710d76-0bee-47d7-b41c-2994278b995d"> + <view:connectionObjectRef ref="241fa723-1588-4b40-9d4b-50a827287c08"/> + </view:connectionProfile> + <view:connectionProfile id="85821185-18da-4acc-a343-3e8a4914664c"> + <view:connectionObjectRef ref="36a2b457-f230-48b4-8b66-012b2b127bf5"/> + </view:connectionProfile> + <view:connectionProfile id="15954528-1d60-43d8-9912-263f6acc4a7b"> + <view:connectionObjectRef ref="54e7ac9e-8343-4ec3-9052-fc4def6d5517"/> + </view:connectionProfile> + <view:connectionProfile id="3cac7818-a857-44c1-a49f-95d92303b682"> + <view:connectionObjectRef ref="72746510-94de-44c3-a053-d9db1b04a2e5"/> + </view:connectionProfile> + <view:connectionProfile id="d2519807-65ca-4724-b26e-4f3e1760bea5"> + <view:connectionObjectRef ref="767d2609-f6e5-4b5d-a169-f6b1af8e4caa"/> + </view:connectionProfile> + </view:connectionProfiles> + </view:diagramPresentation> + </view:diagramPresentations> +</jiemamy>