From e81a2977d2723bd47fed0a5569f0f5534aad5035 Mon Sep 17 00:00:00 2001 From: Frank Rohde <frank.rohde@tu-dresden.de> Date: Fri, 8 Oct 2021 17:17:47 +0200 Subject: [PATCH] =?UTF-8?q?-=20NFC-Funktionalit=C3=A4t=20=20=20=20-=20Einl?= =?UTF-8?q?esen=20=C3=BCber=20GenericSensorValueProcessor=20=20=20=20-=20P?= =?UTF-8?q?ositionsberechnung=20=C3=BCber=20PositionCalculation=20=20=20?= =?UTF-8?q?=20-=20Test=20mit=20testdata=5Fraw.txt=20(siehe=20auch:=20MainA?= =?UTF-8?q?pp.java)=20-=20=C3=84nderungen=20Datenmodell?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- emf_datamodel/model/iPos_Datamodel.aird | 280 +++++++++--------- emf_datamodel/model/iPos_Datamodel.ecore | 37 +-- emf_datamodel/model/iPos_Datamodel.genmodel | 18 +- init_Industrierobotik.txt | 6 +- .../SimpleSceneIntegration.java | 10 +- .../service/SimpleSceneTransformer.java | 2 +- .../project/Functionality/DataServices.java | 15 +- .../Functionality/PositionCalculation.java | 44 +++ src/main/java/ipos/project/MainApp.java | 3 + .../GenericSensorValueProcessor.java | 40 +++ .../Service/GenericSensorTransformer.java | 22 ++ .../api/MqttPositionHandler.java | 45 ++- .../UseCaseController/PositionMonitoring.java | 20 +- testdata_raw.txt | 1 + 14 files changed, 356 insertions(+), 187 deletions(-) create mode 100644 src/main/java/ipos/project/Functionality/PositionCalculation.java create mode 100644 testdata_raw.txt diff --git a/emf_datamodel/model/iPos_Datamodel.aird b/emf_datamodel/model/iPos_Datamodel.aird index daf35f0..8c12d9b 100644 --- a/emf_datamodel/model/iPos_Datamodel.aird +++ b/emf_datamodel/model/iPos_Datamodel.aird @@ -5,7 +5,7 @@ <semanticResources>iPos_Datamodel.genmodel</semanticResources> <ownedViews xmi:type="viewpoint:DView" uid="_EpwecAQNEey-kNQ7esRa_g"> <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/> - <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_Et4wgAQNEey-kNQ7esRa_g" name="iPos_Datamodel" repPath="#_Es-xkAQNEey-kNQ7esRa_g" changeId="5e294dee-965d-4b3c-986d-efa88a70016f"> + <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_Et4wgAQNEey-kNQ7esRa_g" name="iPos_Datamodel" repPath="#_Es-xkAQNEey-kNQ7esRa_g" changeId="5b2f622f-9f0c-4135-98e3-711f7012d86c"> <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/> <target xmi:type="ecore:EPackage" href="iPos_Datamodel.ecore#/"/> </ownedRepresentationDescriptors> @@ -275,9 +275,9 @@ <children xmi:type="notation:Node" xmi:id="__k3HcAWcEey-kNQ7esRa_g" type="2003" element="__kvLoAWcEey-kNQ7esRa_g"> <children xmi:type="notation:Node" xmi:id="__k3HcwWcEey-kNQ7esRa_g" type="5007"/> <children xmi:type="notation:Node" xmi:id="__k3ugAWcEey-kNQ7esRa_g" type="7004"> - <children xmi:type="notation:Node" xmi:id="_9wiGQAWgEey-kNQ7esRa_g" type="3010" element="_9wYVQAWgEey-kNQ7esRa_g"> - <styles xmi:type="notation:FontStyle" xmi:id="_9wiGQQWgEey-kNQ7esRa_g" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/> - <layoutConstraint xmi:type="notation:Location" xmi:id="_9wiGQgWgEey-kNQ7esRa_g"/> + <children xmi:type="notation:Node" xmi:id="_4ZsUUCeVEeydzb6PKf1sDQ" type="3010" element="_4ZOaQCeVEeydzb6PKf1sDQ"> + <styles xmi:type="notation:FontStyle" xmi:id="_4ZsUUSeVEeydzb6PKf1sDQ" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_4ZsUUieVEeydzb6PKf1sDQ"/> </children> <styles xmi:type="notation:SortingStyle" xmi:id="__k3ugQWcEey-kNQ7esRa_g"/> <styles xmi:type="notation:FilteringStyle" xmi:id="__k3uggWcEey-kNQ7esRa_g"/> @@ -335,24 +335,31 @@ <children xmi:type="notation:Node" xmi:id="_NxDRoAWjEey-kNQ7esRa_g" type="2003" element="_Nw8j8AWjEey-kNQ7esRa_g"> <children xmi:type="notation:Node" xmi:id="_NxDRowWjEey-kNQ7esRa_g" type="5007"/> <children xmi:type="notation:Node" xmi:id="_NxDRpAWjEey-kNQ7esRa_g" type="7004"> + <children xmi:type="notation:Node" xmi:id="_5-5BcCeeEeydzb6PKf1sDQ" type="3010" element="_5-c8kCeeEeydzb6PKf1sDQ"> + <styles xmi:type="notation:FontStyle" xmi:id="_5-5BcSeeEeydzb6PKf1sDQ" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_5-5BcieeEeydzb6PKf1sDQ"/> + </children> <styles xmi:type="notation:SortingStyle" xmi:id="_NxDRpQWjEey-kNQ7esRa_g"/> <styles xmi:type="notation:FilteringStyle" xmi:id="_NxDRpgWjEey-kNQ7esRa_g"/> </children> <styles xmi:type="notation:ShapeStyle" xmi:id="_NxDRoQWjEey-kNQ7esRa_g" fontName="Segoe UI" fontHeight="8"/> <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NxDRogWjEey-kNQ7esRa_g" x="1404" y="-12" width="120" height="100"/> </children> - <children xmi:type="notation:Node" xmi:id="_Sn_ycAWjEey-kNQ7esRa_g" type="2003" element="_Sn32oAWjEey-kNQ7esRa_g"> - <children xmi:type="notation:Node" xmi:id="_SoAZgAWjEey-kNQ7esRa_g" type="5007"/> - <children xmi:type="notation:Node" xmi:id="_SoAZgQWjEey-kNQ7esRa_g" type="7004"> - <styles xmi:type="notation:SortingStyle" xmi:id="_SoAZggWjEey-kNQ7esRa_g"/> - <styles xmi:type="notation:FilteringStyle" xmi:id="_SoAZgwWjEey-kNQ7esRa_g"/> - </children> - <styles xmi:type="notation:ShapeStyle" xmi:id="_Sn_ycQWjEey-kNQ7esRa_g" fontName="Segoe UI" fontHeight="8"/> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Sn_ycgWjEey-kNQ7esRa_g" x="1350" y="144" width="120" height="100"/> - </children> <children xmi:type="notation:Node" xmi:id="_YPBsYAWjEey-kNQ7esRa_g" type="2003" element="_YO6XoAWjEey-kNQ7esRa_g"> <children xmi:type="notation:Node" xmi:id="_YPBsYwWjEey-kNQ7esRa_g" type="5007"/> <children xmi:type="notation:Node" xmi:id="_YPBsZAWjEey-kNQ7esRa_g" type="7004"> + <children xmi:type="notation:Node" xmi:id="_ZINmUCdREey8t_kDLBrwCg" type="3010" element="_ZHyIgCdREey8t_kDLBrwCg"> + <styles xmi:type="notation:FontStyle" xmi:id="_ZINmUSdREey8t_kDLBrwCg" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_ZIONYCdREey8t_kDLBrwCg"/> + </children> + <children xmi:type="notation:Node" xmi:id="_dZcK8CdREey8t_kDLBrwCg" type="3010" element="_dZJ3ECdREey8t_kDLBrwCg"> + <styles xmi:type="notation:FontStyle" xmi:id="_dZcK8SdREey8t_kDLBrwCg" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_dZcK8idREey8t_kDLBrwCg"/> + </children> + <children xmi:type="notation:Node" xmi:id="_g0umECdREey8t_kDLBrwCg" type="3010" element="_g0c5QCdREey8t_kDLBrwCg"> + <styles xmi:type="notation:FontStyle" xmi:id="_g0umESdREey8t_kDLBrwCg" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_g0umEidREey8t_kDLBrwCg"/> + </children> <styles xmi:type="notation:SortingStyle" xmi:id="_YPBsZQWjEey-kNQ7esRa_g"/> <styles xmi:type="notation:FilteringStyle" xmi:id="_YPBsZgWjEey-kNQ7esRa_g"/> </children> @@ -370,11 +377,15 @@ <styles xmi:type="notation:FontStyle" xmi:id="_qBsbcQcREey-kNQ7esRa_g" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/> <layoutConstraint xmi:type="notation:Location" xmi:id="_qBsbcgcREey-kNQ7esRa_g"/> </children> + <children xmi:type="notation:Node" xmi:id="_9OAo0CeeEeydzb6PKf1sDQ" type="3010" element="_9NuU8CeeEeydzb6PKf1sDQ"> + <styles xmi:type="notation:FontStyle" xmi:id="_9OAo0SeeEeydzb6PKf1sDQ" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_9OAo0ieeEeydzb6PKf1sDQ"/> + </children> <styles xmi:type="notation:SortingStyle" xmi:id="_s0mpQQWjEey-kNQ7esRa_g"/> <styles xmi:type="notation:FilteringStyle" xmi:id="_s0mpQgWjEey-kNQ7esRa_g"/> </children> <styles xmi:type="notation:ShapeStyle" xmi:id="_s0mCMQWjEey-kNQ7esRa_g" fontName="Segoe UI" fontHeight="8"/> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s0mCMgWjEey-kNQ7esRa_g" x="1035" y="-18" width="120" height="100"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s0mCMgWjEey-kNQ7esRa_g" x="1035" y="-24" width="132" height="106"/> </children> <children xmi:type="notation:Node" xmi:id="_lCMqkAZsEey-kNQ7esRa_g" type="2003" element="_lBuJcAZsEey-kNQ7esRa_g"> <children xmi:type="notation:Node" xmi:id="_lCN4sAZsEey-kNQ7esRa_g" type="5007"/> @@ -393,15 +404,6 @@ <styles xmi:type="notation:ShapeStyle" xmi:id="_lCNRoAZsEey-kNQ7esRa_g" fontName="Segoe UI" fontHeight="8"/> <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lCNRoQZsEey-kNQ7esRa_g" x="1542" y="714" width="120" height="100"/> </children> - <children xmi:type="notation:Node" xmi:id="_ovs3EAZsEey-kNQ7esRa_g" type="2003" element="_ovifAAZsEey-kNQ7esRa_g"> - <children xmi:type="notation:Node" xmi:id="_ovs3EwZsEey-kNQ7esRa_g" type="5007"/> - <children xmi:type="notation:Node" xmi:id="_ovs3FAZsEey-kNQ7esRa_g" type="7004"> - <styles xmi:type="notation:SortingStyle" xmi:id="_ovs3FQZsEey-kNQ7esRa_g"/> - <styles xmi:type="notation:FilteringStyle" xmi:id="_ovs3FgZsEey-kNQ7esRa_g"/> - </children> - <styles xmi:type="notation:ShapeStyle" xmi:id="_ovs3EQZsEey-kNQ7esRa_g" fontName="Segoe UI" fontHeight="8"/> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ovs3EgZsEey-kNQ7esRa_g" x="2328" y="-174" width="120" height="100"/> - </children> <children xmi:type="notation:Node" xmi:id="_uNQr8AZsEey-kNQ7esRa_g" type="2003" element="_uNHiAAZsEey-kNQ7esRa_g"> <children xmi:type="notation:Node" xmi:id="_uNRTAAZsEey-kNQ7esRa_g" type="5007"/> <children xmi:type="notation:Node" xmi:id="_uNRTAQZsEey-kNQ7esRa_g" type="7004"> @@ -1013,22 +1015,6 @@ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PAtYIAWiEey-kNQ7esRa_g" id="(0.6101694915254238,0.0)"/> <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PAtYIQWiEey-kNQ7esRa_g" id="(0.6068965517241379,1.0)"/> </edges> - <edges xmi:type="notation:Edge" xmi:id="_cCGVYAWjEey-kNQ7esRa_g" type="4001" element="_cB2dzAWjEey-kNQ7esRa_g" source="_NxDRoAWjEey-kNQ7esRa_g" target="_Sn_ycAWjEey-kNQ7esRa_g"> - <children xmi:type="notation:Node" xmi:id="_cCGVZAWjEey-kNQ7esRa_g" type="6001"> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cCG8cAWjEey-kNQ7esRa_g" x="3" y="-10"/> - </children> - <children xmi:type="notation:Node" xmi:id="_cCG8cQWjEey-kNQ7esRa_g" type="6002"> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cCG8cgWjEey-kNQ7esRa_g" y="10"/> - </children> - <children xmi:type="notation:Node" xmi:id="_cCG8cwWjEey-kNQ7esRa_g" type="6003"> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cCG8dAWjEey-kNQ7esRa_g" x="-37" y="-15"/> - </children> - <styles xmi:type="notation:ConnectorStyle" xmi:id="_cCGVYQWjEey-kNQ7esRa_g" routing="Rectilinear"/> - <styles xmi:type="notation:FontStyle" xmi:id="_cCGVYgWjEey-kNQ7esRa_g" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> - <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_cCGVYwWjEey-kNQ7esRa_g" points="[0, 0, 49, -58]$[0, 14, 49, -44]$[-49, 14, 0, -44]$[-49, 58, 0, 0]"/> - <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cCG8dQWjEey-kNQ7esRa_g" id="(0.5,1.0)"/> - <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cCG8dgWjEey-kNQ7esRa_g" id="(0.5423728813559322,0.0)"/> - </edges> <edges xmi:type="notation:Edge" xmi:id="_cxxe0AWjEey-kNQ7esRa_g" type="4001" element="_cxcusAWjEey-kNQ7esRa_g" source="_NxDRoAWjEey-kNQ7esRa_g" target="_YPBsYAWjEey-kNQ7esRa_g"> <children xmi:type="notation:Node" xmi:id="_cxyF4AWjEey-kNQ7esRa_g" type="6001"> <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cxyF4QWjEey-kNQ7esRa_g" x="-21" y="-10"/> @@ -1077,22 +1063,6 @@ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_izFhCgWjEey-kNQ7esRa_g" id="(0.3724137931034483,0.0)"/> <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_izFhCwWjEey-kNQ7esRa_g" id="(0.5,0.5)"/> </edges> - <edges xmi:type="notation:Edge" xmi:id="_T8AZIAaBEey-kNQ7esRa_g" type="4001" element="_T72oPgaBEey-kNQ7esRa_g" source="_ovs3EAZsEey-kNQ7esRa_g" target="__k3HcAWcEey-kNQ7esRa_g"> - <children xmi:type="notation:Node" xmi:id="_T8AZJAaBEey-kNQ7esRa_g" type="6001"> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T8AZJQaBEey-kNQ7esRa_g" x="253" y="-10"/> - </children> - <children xmi:type="notation:Node" xmi:id="_T8AZJgaBEey-kNQ7esRa_g" type="6002"> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T8AZJwaBEey-kNQ7esRa_g" x="607" y="10"/> - </children> - <children xmi:type="notation:Node" xmi:id="_T8AZKAaBEey-kNQ7esRa_g" type="6003"> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T8AZKQaBEey-kNQ7esRa_g" x="76" y="10"/> - </children> - <styles xmi:type="notation:ConnectorStyle" xmi:id="_T8AZIQaBEey-kNQ7esRa_g" routing="Rectilinear"/> - <styles xmi:type="notation:FontStyle" xmi:id="_T8AZIgaBEey-kNQ7esRa_g" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> - <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_T8AZIwaBEey-kNQ7esRa_g" points="[0, 6, 722, 6]$[-722, 6, 0, 6]"/> - <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_T8BAMAaBEey-kNQ7esRa_g" id="(0.0,0.10204081632653061)"/> - <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_T8BAMQaBEey-kNQ7esRa_g" id="(1.0,0.16326530612244897)"/> - </edges> <edges xmi:type="notation:Edge" xmi:id="_0ITFAAaCEey-kNQ7esRa_g" type="4001" element="_0IAKIgaCEey-kNQ7esRa_g" source="_nuczcAaCEey-kNQ7esRa_g" target="_IONsYAZtEey-kNQ7esRa_g"> <children xmi:type="notation:Node" xmi:id="_0ITFBAaCEey-kNQ7esRa_g" type="6001"> <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0ITFBQaCEey-kNQ7esRa_g" x="-50" y="2"/> @@ -1170,7 +1140,7 @@ <styles xmi:type="notation:ConnectorStyle" xmi:id="_WT7CkQcMEey-kNQ7esRa_g" routing="Tree"/> <styles xmi:type="notation:FontStyle" xmi:id="_WT7CkgcMEey-kNQ7esRa_g" fontName="Segoe UI" fontHeight="8"/> <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WT7CkwcMEey-kNQ7esRa_g" points="[0, 0, -342, 161]$[342, -161, 0, 0]"/> - <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WT7CmgcMEey-kNQ7esRa_g" id="(0.559322033898305,0.0)"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WT7CmgcMEey-kNQ7esRa_g" id="(0.5076923076923077,0.057692307692307696)"/> <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WT7CmwcMEey-kNQ7esRa_g" id="(0.5,0.5)"/> </edges> <edges xmi:type="notation:Edge" xmi:id="_9YKTIAcMEey-kNQ7esRa_g" type="4001" element="_9X2xLAcMEey-kNQ7esRa_g" source="_zBjrsAcMEey-kNQ7esRa_g" target="_DsJToAWiEey-kNQ7esRa_g"> @@ -1203,7 +1173,7 @@ <styles xmi:type="notation:FontStyle" xmi:id="_Prz0MgcOEey-kNQ7esRa_g" fontName="Segoe UI" fontHeight="8"/> <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Prz0MwcOEey-kNQ7esRa_g" points="[0, 0, -54, 11]$[54, -11, 0, 0]"/> <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Prz0OgcOEey-kNQ7esRa_g" id="(0.5,0.0)"/> - <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Prz0OwcOEey-kNQ7esRa_g" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Prz0OwcOEey-kNQ7esRa_g" id="(0.45384615384615384,0.5288461538461539)"/> </edges> <edges xmi:type="notation:Edge" xmi:id="_QKsvoAcOEey-kNQ7esRa_g" type="4001" element="_QKU8MAcOEey-kNQ7esRa_g" source="_K7QPQAcOEey-kNQ7esRa_g" target="_s0mCMAWjEey-kNQ7esRa_g"> <children xmi:type="notation:Node" xmi:id="_QKsvpAcOEey-kNQ7esRa_g" type="6001"> @@ -1219,7 +1189,7 @@ <styles xmi:type="notation:FontStyle" xmi:id="_QKsvogcOEey-kNQ7esRa_g" fontName="Segoe UI" fontHeight="8"/> <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QKsvowcOEey-kNQ7esRa_g" points="[0, 0, 18, 103]$[-18, -103, 0, 0]"/> <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QKsvqgcOEey-kNQ7esRa_g" id="(0.4406779661016949,0.0)"/> - <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QKsvqwcOEey-kNQ7esRa_g" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QKsvqwcOEey-kNQ7esRa_g" id="(0.45384615384615384,0.5288461538461539)"/> </edges> <edges xmi:type="notation:Edge" xmi:id="_aEfQgAcUEey-kNQ7esRa_g" type="4001" element="_aEKgcgcUEey-kNQ7esRa_g" source="_VKA6kAcUEey-kNQ7esRa_g" target="_s0mCMAWjEey-kNQ7esRa_g"> <children xmi:type="notation:Node" xmi:id="_aEfQhAcUEey-kNQ7esRa_g" type="6001"> @@ -1235,7 +1205,7 @@ <styles xmi:type="notation:FontStyle" xmi:id="_aEfQggcUEey-kNQ7esRa_g" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/> <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aEfQgwcUEey-kNQ7esRa_g" points="[0, 0, 135, 258]$[-135, -258, 0, 0]"/> <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aEf3kAcUEey-kNQ7esRa_g" id="(0.5,0.0)"/> - <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aEf3kQcUEey-kNQ7esRa_g" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aEf3kQcUEey-kNQ7esRa_g" id="(0.45384615384615384,0.5288461538461539)"/> </edges> <edges xmi:type="notation:Edge" xmi:id="_HJJjsAcbEey-kNQ7esRa_g" type="4001" element="_HI0zogcbEey-kNQ7esRa_g" source="_pEG-0AaCEey-kNQ7esRa_g" target="_IONsYAZtEey-kNQ7esRa_g"> <children xmi:type="notation:Node" xmi:id="_HJKKwAcbEey-kNQ7esRa_g" type="6001"> @@ -1284,22 +1254,6 @@ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_oMShkwcoEey-kNQ7esRa_g" points="[59, 41, -229, 48]$[229, 41, -59, 48]"/> <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oMTIoQcoEey-kNQ7esRa_g" id="(0.5,0.0)"/> </edges> - <edges xmi:type="notation:Edge" xmi:id="_RDIQ0AcsEey-kNQ7esRa_g" type="4001" element="_RCvPUgcsEey-kNQ7esRa_g" source="_Ml8T0AcsEey-kNQ7esRa_g" target="_fodekAQjEey-kNQ7esRa_g"> - <children xmi:type="notation:Node" xmi:id="_RDIQ1AcsEey-kNQ7esRa_g" type="6001"> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RDIQ1QcsEey-kNQ7esRa_g" y="-10"/> - </children> - <children xmi:type="notation:Node" xmi:id="_RDIQ1gcsEey-kNQ7esRa_g" type="6002"> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RDIQ1wcsEey-kNQ7esRa_g" y="10"/> - </children> - <children xmi:type="notation:Node" xmi:id="_RDIQ2AcsEey-kNQ7esRa_g" type="6003"> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RDIQ2QcsEey-kNQ7esRa_g" y="10"/> - </children> - <styles xmi:type="notation:ConnectorStyle" xmi:id="_RDIQ0QcsEey-kNQ7esRa_g" routing="Rectilinear"/> - <styles xmi:type="notation:FontStyle" xmi:id="_RDIQ0gcsEey-kNQ7esRa_g" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> - <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_RDIQ0wcsEey-kNQ7esRa_g" points="[0, 0, -119, 0]$[119, 0, 0, 0]"/> - <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RDI34AcsEey-kNQ7esRa_g" id="(1.0,0.1326530612244898)"/> - <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RDI34QcsEey-kNQ7esRa_g" id="(0.0,0.030612244897959183)"/> - </edges> <edges xmi:type="notation:Edge" xmi:id="_JkaXUAc-Eey-kNQ7esRa_g" type="4001" element="_JkOxSgc-Eey-kNQ7esRa_g" source="_IONsYAZtEey-kNQ7esRa_g" target="_D9ZrgAc-Eey-kNQ7esRa_g"> <children xmi:type="notation:Node" xmi:id="_JkaXVAc-Eey-kNQ7esRa_g" type="6001"> <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JkaXVQc-Eey-kNQ7esRa_g" x="7" y="-9"/> @@ -1460,6 +1414,38 @@ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_G-S6cBxXEeyPOIo-WqURQQ" id="(0.7372881355932204,0.0)"/> <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_G-S6cRxXEeyPOIo-WqURQQ" id="(0.0,0.12244897959183673)"/> </edges> + <edges xmi:type="notation:Edge" xmi:id="_TlgywCdREey8t_kDLBrwCg" type="4001" element="_cB2dzAWjEey-kNQ7esRa_g" source="_NxDRoAWjEey-kNQ7esRa_g" target="_YB0RsATxEey-kNQ7esRa_g"> + <children xmi:type="notation:Node" xmi:id="_TlmSUCdREey8t_kDLBrwCg" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TlmSUSdREey8t_kDLBrwCg" x="-132" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Tlm5YCdREey8t_kDLBrwCg" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Tlm5YSdREey8t_kDLBrwCg" x="-2" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_TlngcCdREey8t_kDLBrwCg" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TlngcSdREey8t_kDLBrwCg" y="128"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_TlgywSdREey8t_kDLBrwCg" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_TlgywidREey8t_kDLBrwCg" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_TlgywydREey8t_kDLBrwCg" points="[0, 0, 195, -297]$[0, 14, 195, -283]$[-71, 14, 124, -283]$[-71, 346, 124, 49]$[-157, 346, 38, 49]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TlrK0CdREey8t_kDLBrwCg" id="(0.5,1.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TlrK0SdREey8t_kDLBrwCg" id="(0.6779661016949152,0.04672897196261682)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_BMxgQCemEeyTddajI1jY8w" type="4001" element="_RCvPUgcsEey-kNQ7esRa_g" source="_Ml8T0AcsEey-kNQ7esRa_g" target="_beL2gAQjEey-kNQ7esRa_g"> + <children xmi:type="notation:Node" xmi:id="_BM41ACemEeyTddajI1jY8w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BM41ASemEeyTddajI1jY8w" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_BM6DICemEeyTddajI1jY8w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BM6DISemEeyTddajI1jY8w" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_BNmmsCemEeyTddajI1jY8w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BNmmsSemEeyTddajI1jY8w" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_BMxgQSemEeyTddajI1jY8w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_BMxgQiemEeyTddajI1jY8w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_BMxgQyemEeyTddajI1jY8w" points="[0, 0, -124, 84]$[60, 0, -64, 84]$[60, -85, -64, -1]$[119, -85, -5, -1]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BNpqACemEeyTddajI1jY8w" id="(1.0,0.1326530612244898)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BNpqASemEeyTddajI1jY8w" id="(0.0423728813559322,0.826530612244898)"/> + </edges> </data> </ownedAnnotationEntries> <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_EwhNwAQNEey-kNQ7esRa_g" source="DANNOTATION_CUSTOMIZATION_KEY"> @@ -1562,7 +1548,7 @@ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/> </ownedElements> </ownedDiagramElements> - <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_beGW8AQjEey-kNQ7esRa_g" name="Placing" tooltipText="" outgoingEdges="_OlBg0AQlEey-kNQ7esRa_g _S3W4sAQlEey-kNQ7esRa_g" incomingEdges="_t9fiEwQxEey-kNQ7esRa_g _92h2_gccEey-kNQ7esRa_g _Q-uURhuHEeyPOIo-WqURQQ _G94qwBxXEeyPOIo-WqURQQ" width="12" height="10"> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_beGW8AQjEey-kNQ7esRa_g" name="Placing" tooltipText="" outgoingEdges="_OlBg0AQlEey-kNQ7esRa_g _S3W4sAQlEey-kNQ7esRa_g" incomingEdges="_t9fiEwQxEey-kNQ7esRa_g _92h2_gccEey-kNQ7esRa_g _Q-uURhuHEeyPOIo-WqURQQ _G94qwBxXEeyPOIo-WqURQQ _RCvPUgcsEey-kNQ7esRa_g" width="12" height="10"> <target xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//Placing"/> <semanticElements xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//Placing"/> <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> @@ -1573,7 +1559,7 @@ </ownedStyle> <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> </ownedDiagramElements> - <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_foX_AAQjEey-kNQ7esRa_g" name="Position" tooltipText="" outgoingEdges="_X6rBlgQlEey-kNQ7esRa_g _r-z1gBrzEeyPOIo-WqURQQ _t3gckhrzEeyPOIo-WqURQQ" incomingEdges="_OlBg0AQlEey-kNQ7esRa_g _RCvPUgcsEey-kNQ7esRa_g" width="12" height="10"> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_foX_AAQjEey-kNQ7esRa_g" name="Position" tooltipText="" outgoingEdges="_X6rBlgQlEey-kNQ7esRa_g _r-z1gBrzEeyPOIo-WqURQQ _t3gckhrzEeyPOIo-WqURQQ" incomingEdges="_OlBg0AQlEey-kNQ7esRa_g" width="12" height="10"> <target xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//Position"/> <semanticElements xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//Position"/> <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> @@ -1920,7 +1906,7 @@ </ownedStyle> <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> </ownedDiagramElements> - <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_YBru0ATxEey-kNQ7esRa_g" name="Quaternion" tooltipText="" outgoingEdges="_eXVOvgcoEey-kNQ7esRa_g" width="12" height="10"> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_YBru0ATxEey-kNQ7esRa_g" name="Quaternion" tooltipText="" outgoingEdges="_eXVOvgcoEey-kNQ7esRa_g" incomingEdges="_cB2dzAWjEey-kNQ7esRa_g" width="12" height="10"> <target xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//Quaternion"/> <semanticElements xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//Quaternion"/> <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> @@ -2029,21 +2015,20 @@ </ownedStyle> <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/> </ownedDiagramElements> - <ownedDiagramElements xmi:type="diagram:DNodeList" uid="__kvLoAWcEey-kNQ7esRa_g" name="Rawdata" tooltipText="" incomingEdges="_iSeHXgWjEey-kNQ7esRa_g _iy-MfAWjEey-kNQ7esRa_g _T72oPgaBEey-kNQ7esRa_g _WTwDiAcMEey-kNQ7esRa_g" width="12" height="10"> - <target xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//Rawdata"/> - <semanticElements xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//Rawdata"/> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="__kvLoAWcEey-kNQ7esRa_g" name="RawdataEvent" tooltipText="" incomingEdges="_iSeHXgWjEey-kNQ7esRa_g _iy-MfAWjEey-kNQ7esRa_g _WTwDiAcMEey-kNQ7esRa_g" width="12" height="10"> + <target xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//RawdataEvent"/> + <semanticElements xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//RawdataEvent"/> <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> <arrangeConstraints>KEEP_SIZE</arrangeConstraints> <arrangeConstraints>KEEP_RATIO</arrangeConstraints> - <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="__rmE0wWgEey-kNQ7esRa_g" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228"> - <labelFormat>italic</labelFormat> - <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_6Oi9IyeVEeydzb6PKf1sDQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> </ownedStyle> <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> - <ownedElements xmi:type="diagram:DNodeListElement" uid="_9wYVQAWgEey-kNQ7esRa_g" name="sensorId : EString" tooltipText=""> - <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//Rawdata/sensorId"/> - <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//Rawdata/sensorId"/> - <ownedStyle xmi:type="diagram:BundledImage" uid="__rnS5wWgEey-kNQ7esRa_g" labelAlignment="LEFT"> + <ownedElements xmi:type="diagram:DNodeListElement" uid="_4ZOaQCeVEeydzb6PKf1sDQ" name="timeStamp : String" tooltipText=""> + <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//RawdataEvent/timeStamp"/> + <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//RawdataEvent/timeStamp"/> + <ownedStyle xmi:type="diagram:BundledImage" uid="_6OnOkyeVEeydzb6PKf1sDQ" labelAlignment="LEFT"> <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/> </ownedStyle> <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/> @@ -2152,21 +2137,18 @@ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> <arrangeConstraints>KEEP_SIZE</arrangeConstraints> <arrangeConstraints>KEEP_RATIO</arrangeConstraints> - <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_Nw8j8QWjEey-kNQ7esRa_g" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> - <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> - </ownedStyle> - <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> - </ownedDiagramElements> - <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_Sn32oAWjEey-kNQ7esRa_g" name="AngularRate" tooltipText="" incomingEdges="_cB2dzAWjEey-kNQ7esRa_g" width="12" height="10"> - <target xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//AngularRate"/> - <semanticElements xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//AngularRate"/> - <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> - <arrangeConstraints>KEEP_SIZE</arrangeConstraints> - <arrangeConstraints>KEEP_RATIO</arrangeConstraints> - <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_Sn32oQWjEey-kNQ7esRa_g" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_76gZlieeEeydzb6PKf1sDQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> </ownedStyle> <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> + <ownedElements xmi:type="diagram:DNodeListElement" uid="_5-c8kCeeEeydzb6PKf1sDQ" name="sensorId : String" tooltipText=""> + <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//IMU/sensorId"/> + <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//IMU/sensorId"/> + <ownedStyle xmi:type="diagram:BundledImage" uid="_76kD8ieeEeydzb6PKf1sDQ" labelAlignment="LEFT"> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/> + </ownedElements> </ownedDiagramElements> <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_YO6XoAWjEey-kNQ7esRa_g" name="Acceleration" tooltipText="" incomingEdges="_cxcusAWjEey-kNQ7esRa_g" width="12" height="10"> <target xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//Acceleration"/> @@ -2174,19 +2156,46 @@ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> <arrangeConstraints>KEEP_SIZE</arrangeConstraints> <arrangeConstraints>KEEP_RATIO</arrangeConstraints> - <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_YO6-sAWjEey-kNQ7esRa_g" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_hliX-ydREey8t_kDLBrwCg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> </ownedStyle> <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> + <ownedElements xmi:type="diagram:DNodeListElement" uid="_ZHyIgCdREey8t_kDLBrwCg" name="x : Float = 0.0" tooltipText=""> + <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//Acceleration/x"/> + <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//Acceleration/x"/> + <ownedStyle xmi:type="diagram:BundledImage" uid="_adqWUSdREey8t_kDLBrwCg" labelAlignment="LEFT"> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/> + </ownedElements> + <ownedElements xmi:type="diagram:DNodeListElement" uid="_dZJ3ECdREey8t_kDLBrwCg" name="y : Float = 0.0" tooltipText=""> + <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//Acceleration/y"/> + <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//Acceleration/y"/> + <ownedStyle xmi:type="diagram:BundledImage" uid="_fTxwtydREey8t_kDLBrwCg" labelAlignment="LEFT"> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/> + </ownedElements> + <ownedElements xmi:type="diagram:DNodeListElement" uid="_g0c5QCdREey8t_kDLBrwCg" name="z : Float = 0.0" tooltipText=""> + <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//Acceleration/z"/> + <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//Acceleration/z"/> + <ownedStyle xmi:type="diagram:BundledImage" uid="_hlk0NSdREey8t_kDLBrwCg" labelAlignment="LEFT"> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/> + </ownedElements> </ownedDiagramElements> - <ownedDiagramElements xmi:type="diagram:DEdge" uid="_cB2dzAWjEey-kNQ7esRa_g" name="[1..1] angularrate" sourceNode="_Nw8j8AWjEey-kNQ7esRa_g" targetNode="_Sn32oAWjEey-kNQ7esRa_g"> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_cB2dzAWjEey-kNQ7esRa_g" name="[1..1] angularrate" sourceNode="_Nw8j8AWjEey-kNQ7esRa_g" targetNode="_YBru0ATxEey-kNQ7esRa_g"> <target xmi:type="ecore:EReference" href="iPos_Datamodel.ecore#//IMU/angularrate"/> <semanticElements xmi:type="ecore:EReference" href="iPos_Datamodel.ecore#//IMU/angularrate"/> <ownedStyle xmi:type="diagram:EdgeStyle" uid="_eks1GwWjEey-kNQ7esRa_g" description="_oD68EAQwEey-kNQ7esRa_g" routingStyle="manhattan" strokeColor="0,0,0"> <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_eks1HQWjEey-kNQ7esRa_g" showIcon="false"> + <customFeatures>labelSize</customFeatures> <labelFormat>bold</labelFormat> </centerLabelStyle> - <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_eks1HAWjEey-kNQ7esRa_g" labelSize="6" showIcon="false" labelColor="39,76,114"/> + <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_eks1HAWjEey-kNQ7esRa_g" showIcon="false" labelColor="39,76,114"> + <customFeatures>labelSize</customFeatures> + </endLabelStyle> </ownedStyle> <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> </ownedDiagramElements> @@ -2204,12 +2213,12 @@ <ownedDiagramElements xmi:type="diagram:DEdge" uid="_iSeHXgWjEey-kNQ7esRa_g" sourceNode="_Nw8j8AWjEey-kNQ7esRa_g" targetNode="__kvLoAWcEey-kNQ7esRa_g"> <target xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//IMU"/> <semanticElements xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//IMU"/> - <ownedStyle xmi:type="diagram:EdgeStyle" uid="_iSeHXwWjEey-kNQ7esRa_g" targetArrow="InputClosedArrow" routingStyle="tree"> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_76tN7CeeEeydzb6PKf1sDQ" targetArrow="InputClosedArrow" routingStyle="tree"> <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/> - <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_iSeHYAWjEey-kNQ7esRa_g" showIcon="false"> + <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_76tN7SeeEeydzb6PKf1sDQ" showIcon="false"> <labelFormat>italic</labelFormat> </beginLabelStyle> - <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_iSeHYQWjEey-kNQ7esRa_g" showIcon="false"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_76tN7ieeEeydzb6PKf1sDQ" showIcon="false"/> </ownedStyle> <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/> </ownedDiagramElements> @@ -2231,7 +2240,7 @@ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> <arrangeConstraints>KEEP_SIZE</arrangeConstraints> <arrangeConstraints>KEEP_RATIO</arrangeConstraints> - <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_E4I5hQcSEey-kNQ7esRa_g" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_-ag4MSeeEeydzb6PKf1sDQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> </ownedStyle> <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> @@ -2251,6 +2260,14 @@ </ownedStyle> <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/> </ownedElements> + <ownedElements xmi:type="diagram:DNodeListElement" uid="_9NuU8CeeEeydzb6PKf1sDQ" name="sensorId : String" tooltipText=""> + <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//Beacon/sensorId"/> + <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//Beacon/sensorId"/> + <ownedStyle xmi:type="diagram:BundledImage" uid="_-ajUdieeEeydzb6PKf1sDQ" labelAlignment="LEFT"> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/> + </ownedElements> </ownedDiagramElements> <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_lBuJcAZsEey-kNQ7esRa_g" name="PositionEvent" tooltipText="" outgoingEdges="_92h2_gccEey-kNQ7esRa_g" width="12" height="10"> <target xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//PositionEvent"/> @@ -2279,17 +2296,6 @@ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/> </ownedElements> </ownedDiagramElements> - <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_ovifAAZsEey-kNQ7esRa_g" name="RawdataEvent" tooltipText="" outgoingEdges="_T72oPgaBEey-kNQ7esRa_g" width="12" height="10"> - <target xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//RawdataEvent"/> - <semanticElements xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//RawdataEvent"/> - <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> - <arrangeConstraints>KEEP_SIZE</arrangeConstraints> - <arrangeConstraints>KEEP_RATIO</arrangeConstraints> - <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_ovjGEAZsEey-kNQ7esRa_g" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> - <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> - </ownedStyle> - <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> - </ownedDiagramElements> <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_uNHiAAZsEey-kNQ7esRa_g" name="TrackingRequest" tooltipText="" width="12" height="10"> <target xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//TrackingRequest"/> <semanticElements xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//TrackingRequest"/> @@ -2482,17 +2488,6 @@ </ownedStyle> <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> </ownedDiagramElements> - <ownedDiagramElements xmi:type="diagram:DEdge" uid="_T72oPgaBEey-kNQ7esRa_g" name="[1..*] rawdata" sourceNode="_ovifAAZsEey-kNQ7esRa_g" targetNode="__kvLoAWcEey-kNQ7esRa_g"> - <target xmi:type="ecore:EReference" href="iPos_Datamodel.ecore#//RawdataEvent/rawdata"/> - <semanticElements xmi:type="ecore:EReference" href="iPos_Datamodel.ecore#//RawdataEvent/rawdata"/> - <ownedStyle xmi:type="diagram:EdgeStyle" uid="_XIKMRgaBEey-kNQ7esRa_g" description="_oD68EAQwEey-kNQ7esRa_g" routingStyle="manhattan" strokeColor="0,0,0"> - <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_XIKMSAaBEey-kNQ7esRa_g" showIcon="false"> - <labelFormat>bold</labelFormat> - </centerLabelStyle> - <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_XIKMRwaBEey-kNQ7esRa_g" labelSize="6" showIcon="false" labelColor="39,76,114"/> - </ownedStyle> - <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> - </ownedDiagramElements> <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_nuR0UAaCEey-kNQ7esRa_g" name="MonitoringTask" tooltipText="" outgoingEdges="_0IAKIgaCEey-kNQ7esRa_g" width="12" height="10"> <target xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//MonitoringTask"/> <semanticElements xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//MonitoringTask"/> @@ -2591,12 +2586,12 @@ <ownedDiagramElements xmi:type="diagram:DEdge" uid="_WTwDiAcMEey-kNQ7esRa_g" sourceNode="_s0dfUAWjEey-kNQ7esRa_g" targetNode="__kvLoAWcEey-kNQ7esRa_g"> <target xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//Beacon"/> <semanticElements xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//Beacon"/> - <ownedStyle xmi:type="diagram:EdgeStyle" uid="_E4UfrAcSEey-kNQ7esRa_g" targetArrow="InputClosedArrow" routingStyle="tree"> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_-apbOieeEeydzb6PKf1sDQ" targetArrow="InputClosedArrow" routingStyle="tree"> <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/> - <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_E4UfrQcSEey-kNQ7esRa_g" showIcon="false"> + <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_-apbOyeeEeydzb6PKf1sDQ" showIcon="false"> <labelFormat>italic</labelFormat> </beginLabelStyle> - <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_E4UfrgcSEey-kNQ7esRa_g" showIcon="false"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_-apbPCeeEeydzb6PKf1sDQ" showIcon="false"/> </ownedStyle> <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/> </ownedDiagramElements> @@ -2637,14 +2632,14 @@ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> <arrangeConstraints>KEEP_SIZE</arrangeConstraints> <arrangeConstraints>KEEP_RATIO</arrangeConstraints> - <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_I-N60QcOEey-kNQ7esRa_g" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_d_Ac5iejEeyTddajI1jY8w" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> </ownedStyle> <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> <ownedElements xmi:type="diagram:DNodeListElement" uid="_10SAEAcOEey-kNQ7esRa_g" name="rss : EMap" tooltipText=""> <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//Bluetooth/rss"/> <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//Bluetooth/rss"/> - <ownedStyle xmi:type="diagram:BundledImage" uid="_D-2hAQcSEey-kNQ7esRa_g" labelAlignment="LEFT"> + <ownedStyle xmi:type="diagram:BundledImage" uid="_d_K08iejEeyTddajI1jY8w" labelAlignment="LEFT"> <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/> </ownedStyle> <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/> @@ -2664,12 +2659,12 @@ <ownedDiagramElements xmi:type="diagram:DEdge" uid="_PraypgcOEey-kNQ7esRa_g" sourceNode="_I-N60AcOEey-kNQ7esRa_g" targetNode="_s0dfUAWjEey-kNQ7esRa_g"> <target xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//Bluetooth"/> <semanticElements xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//Bluetooth"/> - <ownedStyle xmi:type="diagram:EdgeStyle" uid="_PraypwcOEey-kNQ7esRa_g" targetArrow="InputClosedArrow" routingStyle="tree"> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_d_dI0CejEeyTddajI1jY8w" targetArrow="InputClosedArrow" routingStyle="tree"> <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/> - <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_PrayqAcOEey-kNQ7esRa_g" showIcon="false"> + <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_d_dI0SejEeyTddajI1jY8w" showIcon="false"> <labelFormat>italic</labelFormat> </beginLabelStyle> - <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_PrayqQcOEey-kNQ7esRa_g" showIcon="false"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_d_dI0iejEeyTddajI1jY8w" showIcon="false"/> </ownedStyle> <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/> </ownedDiagramElements> @@ -2799,14 +2794,17 @@ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/> </ownedElements> </ownedDiagramElements> - <ownedDiagramElements xmi:type="diagram:DEdge" uid="_RCvPUgcsEey-kNQ7esRa_g" name="[1..1] position" sourceNode="_Mlx7wAcsEey-kNQ7esRa_g" targetNode="_foX_AAQjEey-kNQ7esRa_g"> - <target xmi:type="ecore:EReference" href="iPos_Datamodel.ecore#//POI/position"/> - <semanticElements xmi:type="ecore:EReference" href="iPos_Datamodel.ecore#//POI/position"/> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_RCvPUgcsEey-kNQ7esRa_g" name="[1..1] placing" sourceNode="_Mlx7wAcsEey-kNQ7esRa_g" targetNode="_beGW8AQjEey-kNQ7esRa_g"> + <target xmi:type="ecore:EReference" href="iPos_Datamodel.ecore#//POI/placing"/> + <semanticElements xmi:type="ecore:EReference" href="iPos_Datamodel.ecore#//POI/placing"/> <ownedStyle xmi:type="diagram:EdgeStyle" uid="_R838QwcsEey-kNQ7esRa_g" description="_oD68EAQwEey-kNQ7esRa_g" routingStyle="manhattan" strokeColor="0,0,0"> <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_R838RQcsEey-kNQ7esRa_g" showIcon="false"> + <customFeatures>labelSize</customFeatures> <labelFormat>bold</labelFormat> </centerLabelStyle> - <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_R838RAcsEey-kNQ7esRa_g" labelSize="6" showIcon="false" labelColor="39,76,114"/> + <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_R838RAcsEey-kNQ7esRa_g" showIcon="false" labelColor="39,76,114"> + <customFeatures>labelSize</customFeatures> + </endLabelStyle> </ownedStyle> <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> </ownedDiagramElements> diff --git a/emf_datamodel/model/iPos_Datamodel.ecore b/emf_datamodel/model/iPos_Datamodel.ecore index f18d514..8c2cf8f 100644 --- a/emf_datamodel/model/iPos_Datamodel.ecore +++ b/emf_datamodel/model/iPos_Datamodel.ecore @@ -78,10 +78,10 @@ defaultValueLiteral="0.0"/> </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="Point"/> - <eClassifiers xsi:type="ecore:EClass" name="Rawdata" abstract="true"> - <eStructuralFeatures xsi:type="ecore:EAttribute" name="sensorId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> + <eClassifiers xsi:type="ecore:EClass" name="RawdataEvent"> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="timeStamp" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/> </eClassifiers> - <eClassifiers xsi:type="ecore:EClass" name="Proximity" eSuperTypes="#//Rawdata"> + <eClassifiers xsi:type="ecore:EClass" name="Proximity" eSuperTypes="#//RawdataEvent"> <eStructuralFeatures xsi:type="ecore:EAttribute" name="tagId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> <eStructuralFeatures xsi:type="ecore:EAttribute" name="scannerId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> @@ -93,19 +93,23 @@ <eStructuralFeatures xsi:type="ecore:EAttribute" name="tagData" transient="true"> <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"> <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> - <eTypeArguments eClassifier="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject"/> + <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/> </eGenericType> </eStructuralFeatures> </eClassifiers> - <eClassifiers xsi:type="ecore:EClass" name="IMU" eSuperTypes="#//Rawdata"> + <eClassifiers xsi:type="ecore:EClass" name="IMU" eSuperTypes="#//RawdataEvent"> <eStructuralFeatures xsi:type="ecore:EReference" name="angularrate" lowerBound="1" - eType="#//AngularRate"/> + eType="#//Quaternion"/> <eStructuralFeatures xsi:type="ecore:EReference" name="acceleration" lowerBound="1" eType="#//Acceleration"/> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="sensorId" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="Acceleration"> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="x" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Float"/> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="y" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Float"/> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="z" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Float"/> </eClassifiers> - <eClassifiers xsi:type="ecore:EClass" name="AngularRate"/> - <eClassifiers xsi:type="ecore:EClass" name="Acceleration"/> - <eClassifiers xsi:type="ecore:EClass" name="Beacon" eSuperTypes="#//Rawdata"> + <eClassifiers xsi:type="ecore:EClass" name="Beacon" eSuperTypes="#//RawdataEvent"> <eStructuralFeatures xsi:type="ecore:EAttribute" name="distances" transient="true"> <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"> <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> @@ -113,6 +117,7 @@ </eGenericType> </eStructuralFeatures> <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="sensorId" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/> </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="PositionEvent"> <eStructuralFeatures xsi:type="ecore:EReference" name="placing" lowerBound="1" @@ -121,10 +126,6 @@ transient="true"/> <eStructuralFeatures xsi:type="ecore:EAttribute" name="lObjectId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> </eClassifiers> - <eClassifiers xsi:type="ecore:EClass" name="RawdataEvent"> - <eStructuralFeatures xsi:type="ecore:EReference" name="rawdata" lowerBound="1" - upperBound="-1" eType="#//Rawdata"/> - </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="TrackingRequest"/> <eClassifiers xsi:type="ecore:EClass" name="MonitoringRequest"> <eStructuralFeatures xsi:type="ecore:EAttribute" name="frameId" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/> @@ -184,7 +185,7 @@ <eStructuralFeatures xsi:type="ecore:EAttribute" name="data" transient="true"> <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"> <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> - <eTypeArguments eClassifier="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject"/> + <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/> </eGenericType> </eStructuralFeatures> </eClassifiers> @@ -192,7 +193,7 @@ <eStructuralFeatures xsi:type="ecore:EAttribute" name="rss" transient="true"> <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"> <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> - <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/> + <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//IntObject"/> </eGenericType> </eStructuralFeatures> </eClassifiers> @@ -202,13 +203,13 @@ <eStructuralFeatures xsi:type="ecore:EAttribute" name="data" transient="true"> <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"> <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> - <eTypeArguments eClassifier="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject"/> + <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/> </eGenericType> </eStructuralFeatures> </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="POI"> - <eStructuralFeatures xsi:type="ecore:EReference" name="position" lowerBound="1" - eType="#//Position"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="placing" lowerBound="1" + eType="#//Placing"/> <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> <eStructuralFeatures xsi:type="ecore:EAttribute" name="data" transient="true"> <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"> diff --git a/emf_datamodel/model/iPos_Datamodel.genmodel b/emf_datamodel/model/iPos_Datamodel.genmodel index 26de11f..836325f 100644 --- a/emf_datamodel/model/iPos_Datamodel.genmodel +++ b/emf_datamodel/model/iPos_Datamodel.genmodel @@ -83,8 +83,8 @@ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//Gaussian/confidenceInterval"/> </genClasses> <genClasses ecoreClass="iPos_Datamodel.ecore#//Point"/> - <genClasses ecoreClass="iPos_Datamodel.ecore#//Rawdata"> - <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//Rawdata/sensorId"/> + <genClasses ecoreClass="iPos_Datamodel.ecore#//RawdataEvent"> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//RawdataEvent/timeStamp"/> </genClasses> <genClasses ecoreClass="iPos_Datamodel.ecore#//Proximity"> <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//Proximity/tagId"/> @@ -100,21 +100,23 @@ <genClasses ecoreClass="iPos_Datamodel.ecore#//IMU"> <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference iPos_Datamodel.ecore#//IMU/angularrate"/> <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference iPos_Datamodel.ecore#//IMU/acceleration"/> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//IMU/sensorId"/> + </genClasses> + <genClasses ecoreClass="iPos_Datamodel.ecore#//Acceleration"> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//Acceleration/x"/> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//Acceleration/y"/> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//Acceleration/z"/> </genClasses> - <genClasses ecoreClass="iPos_Datamodel.ecore#//AngularRate"/> - <genClasses ecoreClass="iPos_Datamodel.ecore#//Acceleration"/> <genClasses ecoreClass="iPos_Datamodel.ecore#//Beacon"> <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//Beacon/distances"/> <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//Beacon/type"/> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//Beacon/sensorId"/> </genClasses> <genClasses ecoreClass="iPos_Datamodel.ecore#//PositionEvent"> <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference iPos_Datamodel.ecore#//PositionEvent/placing"/> <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//PositionEvent/timeStamp"/> <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//PositionEvent/lObjectId"/> </genClasses> - <genClasses ecoreClass="iPos_Datamodel.ecore#//RawdataEvent"> - <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference iPos_Datamodel.ecore#//RawdataEvent/rawdata"/> - </genClasses> <genClasses ecoreClass="iPos_Datamodel.ecore#//TrackingRequest"/> <genClasses ecoreClass="iPos_Datamodel.ecore#//MonitoringRequest"> <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//MonitoringRequest/frameId"/> @@ -164,7 +166,7 @@ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//OtherBeacon/data"/> </genClasses> <genClasses ecoreClass="iPos_Datamodel.ecore#//POI"> - <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference iPos_Datamodel.ecore#//POI/position"/> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference iPos_Datamodel.ecore#//POI/placing"/> <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//POI/description"/> <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//POI/data"/> <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//POI/id"/> diff --git a/init_Industrierobotik.txt b/init_Industrierobotik.txt index 708c899..ab99d24 100644 --- a/init_Industrierobotik.txt +++ b/init_Industrierobotik.txt @@ -1,5 +1,5 @@ -{"frames": [{"id": "cobot1_door_zone", "space": [{"position": {"refSystemId": "ROOT", "point": {"x": 2.0,"y": 0.0,"z": 0.0}, "accuracy": 1.0}, "orientation": {"x": 1.0,"y": 0.5,"z": 1.0, "w": 1.5}, "x": 4.0, "y": 4.0, "z":6.0}]}, {"id": "cobot1_window_zone", "space": [{"position": {"refSystemId": "ROOT", "point": {"x": 2.0,"y": 4.0,"z": 0.0}, "accuracy": 1.0}, "orientation": {"x": 1.0,"y": 0.5,"z": 1.0, "w": 1.5}, "x": 2.0, "y": 2.0, "z":6.0}]} ]} +{"frames": [{"id": "cobot1_door_zone", "space": [{"position": {"refSystemId": "ROOT", "point": {"x": 2.0,"y": 0.0,"z": 0.0}, "accuracy": 1.0}, "orientation": {"x": 1.0,"y": 0.5,"z": 1.0, "w": 1.5}, "x": 4.0, "y": 4.0, "z":6.0}]}, {"id": "cobot1_window_zone", "space": [{"position": {"refSystemId": "ROOT", "point": {"x": 2.0,"y": 4.0,"z": 0.0}, "accuracy": 1.0}, "orientation": {"x": 1.0,"y": 0.5,"z": 1.0, "w": 1.5}, "x": 4.0, "y": 4.0, "z":6.0}]} ]} {"refSystems": [{"id": "ROOT"}, {"id": "CETI_ROOT", "position": {"refSystemId": "ROOT", "point": {"x": 3.05,"y": 2.08,"z": 0.0}, "accuracy": 1.0}, "orientation": {"x": 0.0,"y": 0.0,"z": 0.0, "w": 0.0}}]} -{"objectConfigs": [{"agentId": "Employee1", "sensorId": "UWB_1", "agentType": "HUMAN", "sensorType": "UWB"}, {"agentId": "Employee2", "sensorId": "UWB_2", "agentType": "HUMAN", "sensorType": "UWB"}]} -{"pois": [{"id": "UWB_BEACON_1", "description": "Beacon_Position", "data": {"type" : "UWB"}, "position": {"refSystemId": "ROOT", "point": {"x": 3.1,"y": 0.5,"z": 0.0}, "accuracy": 1.0} }, {"id": "UWB_BEACON_2", "description": "Beacon_Position", "data": {"type" : "UWB"}, "position": {"refSystemId": "ROOT", "point": {"x": -0.3,"y": 4.5,"z": 0.0}, "accuracy": 1.0} } ]} +{"objectConfigs": [{"agentId": "Employee1", "sensorId": "UWB_1", "agentType": "HUMAN", "sensorType": "UWB"}, {"agentId": "Employee2", "sensorId": "UWB_2", "agentType": "HUMAN", "sensorType": "UWB"}, {"agentId": "Turtlebot", "sensorId": "98:CD:AC:26:2D:18", "agentType": "ROBOT", "sensorType": "RFID_SCANNER"}]} +{"pois": [{"id": "UWB_BEACON_1", "description": "Beacon_Position", "data": {"type" : "UWB"}, "position": {"refSystemId": "ROOT", "point": {"x": 3.1,"y": 0.5,"z": 0.0}, "accuracy": 1.0}, "orientation": {"x": 0.0,"y": 0.0,"z": 0.0, "w": 0.0} }, {"id": "UWB_BEACON_2", "description": "Beacon_Position", "data": {"type" : "UWB"}, "position": {"refSystemId": "ROOT", "point": {"x": -0.3,"y": 4.5,"z": 0.0}, "accuracy": 1.0}, "orientation": {"x": 0.0,"y": 0.0,"z": 0.0, "w": 0.0}}, {"id": "83221710", "description": "RFID_TAG", "data": {"type" : "NFC"}, "position": {"refSystemId": "ROOT", "point": {"x": 2.1,"y": 0.4,"z": 0.5}, "accuracy": 1.0}, "orientation": {"x": 0.0,"y": 0.0,"z": 0.0, "w": 0.0} }]} {"monitoringRequests": [{"frameId": "cobot1_door_zone", "monitoringTaskId": "Human_at_Door_Side"}, {"frameId": "cobot1_window_zone", "monitoringTaskId": "Human_at_Window_Side"}]} \ No newline at end of file diff --git a/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/SimpleSceneIntegration.java b/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/SimpleSceneIntegration.java index c5026c9..ba2428d 100644 --- a/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/SimpleSceneIntegration.java +++ b/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/SimpleSceneIntegration.java @@ -34,7 +34,7 @@ public class SimpleSceneIntegration { public static void init(String path_to_init_data_file){ Administration.initialize(); // clears WorldModel - File initFile = new File("./init_Industrierobotik.txt"); + File initFile = new File(path_to_init_data_file); try { for (String line : readLines(initFile)) { SimpleScene.IposConfigWrapper iposConfigWrapper = ProtoJsonMap.fromJson(line, SimpleScene.IposConfigWrapper.class); @@ -87,12 +87,12 @@ public class SimpleSceneIntegration { MqttMessage mqttMessage = mqttService.createMqttMsg(posEvent_proto, 0, false); // publishes protobuf over MQTT - // mqttService.publish(monitoringTaskId, mqttMessage); - // LOG.info("publishing protobuf mqttMessage. JSON-representation:" + ProtoJsonMap.toJson(posEvent_proto) + " on topic: " + monitoringTaskId); + mqttService.publish(monitoringTaskId, mqttMessage); + LOG.info("publishing protobuf mqttMessage. JSON-representation:" + ProtoJsonMap.toJson(posEvent_proto) + " on topic: " + monitoringTaskId); // publishes JSON over MQTT - mqttService.publish(monitoringTaskId, ProtoJsonMap.toJson(posEvent_proto), 0, false); - LOG.info("publishing JSON mqttMessage:" + ProtoJsonMap.toJson(posEvent_proto) + " on topic: " + monitoringTaskId); + // mqttService.publish(monitoringTaskId, ProtoJsonMap.toJson(posEvent_proto), 0, false); + // LOG.info("publishing JSON mqttMessage:" + ProtoJsonMap.toJson(posEvent_proto) + " on topic: " + monitoringTaskId); }else{ LOG.warn("Warning: SimpleScene: Received empty PositionEvent"); diff --git a/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/service/SimpleSceneTransformer.java b/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/service/SimpleSceneTransformer.java index 4f9b628..086f3f5 100644 --- a/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/service/SimpleSceneTransformer.java +++ b/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/service/SimpleSceneTransformer.java @@ -185,7 +185,7 @@ public class SimpleSceneTransformer { poi.setId(poi_proto.getId()); poi.setDescription(poi_proto.getDescription()); poi.setData(poi_proto.getDataMap()); - poi.setPosition(position_SScene2Internal(poi_proto.getPosition())); + poi.setPlacing(placing_SScene2Internal(poi_proto.getPosition(), poi_proto.getOrientation())); return poi; } } diff --git a/src/main/java/ipos/project/Functionality/DataServices.java b/src/main/java/ipos/project/Functionality/DataServices.java index a93c0a2..0d8b8fd 100644 --- a/src/main/java/ipos/project/Functionality/DataServices.java +++ b/src/main/java/ipos/project/Functionality/DataServices.java @@ -62,6 +62,8 @@ public class DataServices { for (Agent agent_loaded : wma.getAllAgents()){ if (agent_loaded.getId().equals(agent_input.getId())){ Agent agent_merged = mergeAgents(agent_loaded, agent_input); + + // TODO: careful: What about those LObjects that point on the currently existing agent-object? wma.removeAgent(agent_loaded.getId()); wma.addAgent(agent_merged); } @@ -118,9 +120,9 @@ public class DataServices { wma.addPoi(poi_input); } - public static POI createPOI(Position position, String description, Map<String, String> data){ + public static POI createPOI(Placing placing, String description, Map<String, String> data){ POI poi = modelFactory.createPOI(); - poi.setPosition(position); + poi.setPlacing(placing); poi.setDescription(description); poi.setData(data); return poi; @@ -202,4 +204,13 @@ public class DataServices { quaternion.setW(w); return quaternion; } + + public static POI getPoiByIdOrNull(String poiId) { + for (POI poi : wma.getAllPois()){ + if(poi.getId().equals(poiId)){ + return poi; + } + } + return null; + } } diff --git a/src/main/java/ipos/project/Functionality/PositionCalculation.java b/src/main/java/ipos/project/Functionality/PositionCalculation.java new file mode 100644 index 0000000..80f354c --- /dev/null +++ b/src/main/java/ipos/project/Functionality/PositionCalculation.java @@ -0,0 +1,44 @@ +package ipos.project.Functionality; + +import ipos.project.DataModellntegration.iPos_Datamodel.*; +import org.apache.logging.log4j.LogManager; + +public class PositionCalculation { + + private static org.apache.logging.log4j.Logger LOG = LogManager.getLogger(); + + private static IPos_DatamodelFactory modelFactory = IPos_DatamodelFactory.eINSTANCE; + + public static PositionEvent calcPositionFromNfcOrNull(NFC nfcRawDataEvent) { + if (isMobileScanner(nfcRawDataEvent)){ + return createPosEvent(nfcRawDataEvent.getScannerId(), nfcRawDataEvent.getTagId(), nfcRawDataEvent.getTimeStamp()); + } + if(isMobileTag(nfcRawDataEvent)){ + return createPosEvent(nfcRawDataEvent.getTagId(), nfcRawDataEvent.getScannerId(), nfcRawDataEvent.getTimeStamp()); + } + LOG.warn("NFC-RawdataEvent could not be processed, as the provided scanner " + + "and/or tag-id could not be associated to an registered object and/or " + + "an registered poi"); + return null; + } + + private static PositionEvent createPosEvent(String lObjectId, String poiId, String timeStamp) { + PositionEvent positionEvent = modelFactory.createPositionEvent(); + positionEvent.setLObjectId(lObjectId); + positionEvent.setTimeStamp(timeStamp); + positionEvent.setPlacing(DataServices.getPoiByIdOrNull(poiId).getPlacing()); + return positionEvent; + } + + private static boolean isMobileScanner(NFC nfcRawDataEvent) { + Boolean scannerIsMobile = DataServices.getLObjectByIdOrNull(nfcRawDataEvent.getScannerId()) != null; + Boolean tagIsFixed = DataServices.getPoiByIdOrNull(nfcRawDataEvent.getTagId()) != null; + return scannerIsMobile && tagIsFixed; + } + + private static boolean isMobileTag(NFC nfcRawDataEvent) { + Boolean tagIsMobile = DataServices.getLObjectByIdOrNull(nfcRawDataEvent.getTagId()) != null; + Boolean scannerIsFixed = DataServices.getPoiByIdOrNull(nfcRawDataEvent.getScannerId()) != null; + return tagIsMobile && scannerIsFixed; + } +} diff --git a/src/main/java/ipos/project/MainApp.java b/src/main/java/ipos/project/MainApp.java index 67d159a..eb0dc21 100644 --- a/src/main/java/ipos/project/MainApp.java +++ b/src/main/java/ipos/project/MainApp.java @@ -2,6 +2,7 @@ package ipos.project; import ipos.project.DataModellntegration.SimpleSceneIntegration.SimpleSceneIntegration; import ipos.project.Functionality.eventfilter.TestEventFilter; +import ipos.project.SensorValueIntegration.GenericSensorValueProcessor; import ipos.project.UseCaseController.Administration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -17,11 +18,13 @@ import java.text.ParseException; public class MainApp { public static final String INDUSTRIEROBOTIK_FILE = "./init_Industrierobotik.txt"; public static final String SENSORDATENFUSION_FILE = "./init_Sensordatenfusion.txt"; + public static final String TESTRAWDATA_FILE = "./testdata_raw.txt"; public static void main(String[] args) throws ParseException { SpringApplication.run(MainApp.class, args); // SimpleSceneIntegration.init(); SimpleSceneIntegration.init(INDUSTRIEROBOTIK_FILE); //SimpleSceneIntegration.init(SENSORDATENFUSION_FILE); + GenericSensorValueProcessor.processTestData(TESTRAWDATA_FILE); } } diff --git a/src/main/java/ipos/project/SensorValueIntegration/GenericSensorValueProcessor.java b/src/main/java/ipos/project/SensorValueIntegration/GenericSensorValueProcessor.java index 1154f19..e882878 100644 --- a/src/main/java/ipos/project/SensorValueIntegration/GenericSensorValueProcessor.java +++ b/src/main/java/ipos/project/SensorValueIntegration/GenericSensorValueProcessor.java @@ -1,13 +1,26 @@ package ipos.project.SensorValueIntegration; +import com.google.protobuf.InvalidProtocolBufferException; +import ipos.models.GenericSensor; +import ipos.models.SimpleScene; import ipos.models.SimpleScene.IposPosition; +import ipos.project.DataModellntegration.SimpleSceneIntegration.api.MqttRequestHandler; import ipos.project.DataModellntegration.SimpleSceneIntegration.service.impl.ExternalPubServiceImpl; +import ipos.project.SensorValueIntegration.api.MqttPositionHandler; +import ipos.project.UseCaseController.Administration; import ipos.project.mapper.ProtoJsonMap; import org.apache.logging.log4j.LogManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jms.annotation.JmsListener; import org.springframework.stereotype.Component; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + @Component public class GenericSensorValueProcessor { private static org.apache.logging.log4j.Logger LOG = LogManager.getLogger(); @@ -24,4 +37,31 @@ public class GenericSensorValueProcessor { this.mqttService.publish("test51/subscribe/positions", jsonPos, 0, false); } } + + public static void processTestData(String path_to_test_data_file){ + File testDataFile = new File(path_to_test_data_file); + try { + for (String line : readLines(testDataFile)) { + GenericSensor.SensorEventWrapper sensorEventWrapper = ProtoJsonMap.fromJson(line, GenericSensor.SensorEventWrapper.class); + MqttPositionHandler.handleSensorEventWrapper(sensorEventWrapper); + } + }catch (InvalidProtocolBufferException e) { + LOG.error("Error trying to read JSON into protobuf-objects: "); + e.printStackTrace(); + } + } + + private static List<String> readLines(File initFile) { + List<String> lines = new ArrayList<>(); + try(BufferedReader br = new BufferedReader(new FileReader(initFile))) { // br is automatically closed at the end of try-scope + for (String line; (line = br.readLine()) != null; ){ + lines.add(line); + } + } catch (IOException e) { + LOG.error("Error while reading the text file: "); + e.printStackTrace(); + } + return lines; + } + } diff --git a/src/main/java/ipos/project/SensorValueIntegration/Service/GenericSensorTransformer.java b/src/main/java/ipos/project/SensorValueIntegration/Service/GenericSensorTransformer.java index b217965..46b0ec3 100644 --- a/src/main/java/ipos/project/SensorValueIntegration/Service/GenericSensorTransformer.java +++ b/src/main/java/ipos/project/SensorValueIntegration/Service/GenericSensorTransformer.java @@ -4,9 +4,12 @@ import com.google.protobuf.ProtocolStringList; import ipos.models.GenericSensor; import ipos.models.SimpleScene; import ipos.project.DataModellntegration.iPos_Datamodel.*; +import org.eclipse.emf.ecore.EObject; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; public class GenericSensorTransformer { @@ -93,6 +96,25 @@ public class GenericSensorTransformer { return quaternion; } + public static NFC nfc_GSensor2Internal(GenericSensor.NFCRawDataEvent proto_nfcRawdataEvent) { + NFC internal_nfcRawdataEvent = modelFactory.createNFC(); + internal_nfcRawdataEvent.setTimeStamp(proto_nfcRawdataEvent.getTimestamp()); + internal_nfcRawdataEvent.setTagId(proto_nfcRawdataEvent.getTagId()); + internal_nfcRawdataEvent.setScannerId(proto_nfcRawdataEvent.getScannerId()); + internal_nfcRawdataEvent.setType(proto_nfcRawdataEvent.getType()); + internal_nfcRawdataEvent.setTagData(convertToStringToObjectMap(proto_nfcRawdataEvent.getTagDataMap())); + return internal_nfcRawdataEvent; + } + + private static Map<String, Object> convertToStringToObjectMap(Map<String, String> inputMap) { + Map<String,Object> outputMap =new HashMap<String,Object>(); + for (Map.Entry<String, String> entry : inputMap.entrySet()) { + if(entry.getValue() != null){ + outputMap.put(entry.getKey(), (Object) entry.getValue()); + } + } + return outputMap; + } } diff --git a/src/main/java/ipos/project/SensorValueIntegration/api/MqttPositionHandler.java b/src/main/java/ipos/project/SensorValueIntegration/api/MqttPositionHandler.java index 3a38e64..d44a68a 100644 --- a/src/main/java/ipos/project/SensorValueIntegration/api/MqttPositionHandler.java +++ b/src/main/java/ipos/project/SensorValueIntegration/api/MqttPositionHandler.java @@ -1,10 +1,13 @@ package ipos.project.SensorValueIntegration.api; import com.google.protobuf.InvalidProtocolBufferException; +import ipos.models.GenericSensor; import ipos.models.GenericSensor.SensorPositionEvent; +import ipos.models.SimpleScene; import ipos.models.SimpleScene.IposPosition; import ipos.models.GenericSensor.SensorEventWrapper; import ipos.project.DataModellntegration.SimpleSceneIntegration.service.impl.ExternalPubServiceImpl; +import ipos.project.DataModellntegration.iPos_Datamodel.NFC; import ipos.project.DataModellntegration.iPos_Datamodel.PositionEvent; import ipos.project.SensorValueIntegration.Service.GenericSensorTransformer; import ipos.project.UseCaseController.PositionMonitoring; @@ -16,9 +19,11 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jms.core.JmsTemplate; +import java.util.List; + // subscribe to the topic -@MqttListener("usertopic/SensorPositionEvent") +@MqttListener("usertopic/SensorEventWrapper") public class MqttPositionHandler implements Handler { private static org.apache.logging.log4j.Logger LOG = LogManager.getLogger(); @@ -35,18 +40,42 @@ public class MqttPositionHandler implements Handler { // method that handle new message from the topic public void handle(MqttMessage message) { try { - SensorPositionEvent protoSensPosEvent = ProtoJsonMap.fromJson(message.toString(), SensorPositionEvent.class); - //IposPosition pos = IposPosition.parseFrom(message.toString().getBytes()); - assert protoSensPosEvent != null; - PositionEvent positionEvent = GenericSensorTransformer.posEvent_GSensor2Internal(protoSensPosEvent); + SensorEventWrapper protoSensEventWrapper = ProtoJsonMap.fromJson(message.toString(), GenericSensor.SensorEventWrapper.class); + handleSensorEventWrapper(protoSensEventWrapper); + } catch (InvalidProtocolBufferException e) { + LOG.error("Invalid mqtt message:", e); + } + } + + public static void handleSensorEventWrapper(GenericSensor.SensorEventWrapper iposSensorEventWrapper) { + LOG.info("IposSensorEventWrapper received: \n" + + iposSensorEventWrapper.toString()); + // Annahme: iposSensorEventWrapper enthält für leere Felder leere Listen und nicht null + + processPositionEvents(iposSensorEventWrapper.getSensorPositionEventList()); + processNFCRawdataEvents(iposSensorEventWrapper.getNfcRawDataEventList()); + + // this.jmsTemplate.convertAndSend("/request123", monReqInternal); // submit request to the internal broker + } + + private static void processNFCRawdataEvents(List<GenericSensor.NFCRawDataEvent> nfcRawDataEventList) { + for (GenericSensor.NFCRawDataEvent proto_nfcRawdataEvent : nfcRawDataEventList){ + NFC internal_nfcRawDataEvent = GenericSensorTransformer.nfc_GSensor2Internal(proto_nfcRawdataEvent); + PositionMonitoring.receiveMessage(internal_nfcRawDataEvent); + } + } + + private static void processPositionEvents(List<SensorPositionEvent> sensorPositionEventList) { + // assert sensorPositionEventList != null; + for (GenericSensor.SensorPositionEvent proto_sensPosEvent : sensorPositionEventList){ + PositionEvent positionEvent = GenericSensorTransformer.posEvent_GSensor2Internal(proto_sensPosEvent); LOG.info("SensorValueIntegration: Transformed Protobuf-SensorPositionEvent into Internal-PositionEvent: " + positionEvent.toString() + ", " + positionEvent.getPlacing().getPosition().getPoint().toString() + ", " + positionEvent.getPlacing().getOrientation().toString()); - // ggf. anstatt JMS einfach den PositionMonitoringController per Funktionsaufruf aufrufen + // vorübergehend: anstatt JMS einfach den PositionMonitoringController per Funktionsaufruf aufrufen PositionMonitoring.receiveMessage(positionEvent); // this.jmsTemplate.convertAndSend("/PositionEvent", protoSensPosEvent); // submit position to the internal broker //TODO: fix message converter for the internal broker - } catch (InvalidProtocolBufferException e) { - LOG.error("Invalid mqtt message:", e); } } + } diff --git a/src/main/java/ipos/project/UseCaseController/PositionMonitoring.java b/src/main/java/ipos/project/UseCaseController/PositionMonitoring.java index af7cffc..afa32aa 100644 --- a/src/main/java/ipos/project/UseCaseController/PositionMonitoring.java +++ b/src/main/java/ipos/project/UseCaseController/PositionMonitoring.java @@ -3,6 +3,7 @@ package ipos.project.UseCaseController; import ipos.project.DataModellntegration.SimpleSceneIntegration.SimpleSceneIntegration; import ipos.project.DataModellntegration.iPos_Datamodel.*; import ipos.project.Functionality.DataServices; +import ipos.project.Functionality.PositionCalculation; import ipos.project.Functionality.eventfilter.eventFilter; import ipos.project.Functionality.eventfilter.readConfig; import org.apache.logging.log4j.LogManager; @@ -21,7 +22,7 @@ public class PositionMonitoring { private static org.apache.logging.log4j.Logger LOG = LogManager.getLogger(); private static List<eventFilter> eventFilters = new ArrayList<eventFilter>(); - private static Map<String, List<String>> zonePopulation = new HashMap<String, List<String>>(); + private static Map<String, List<String>> zonePopulation = new HashMap<String, List<String>>(); // maps zone-ids to list of ids of those lObjects that are currently located within that zone. private static IPos_DatamodelFactory modelFactory = IPos_DatamodelFactory.eINSTANCE; public static final String EXIT_NOTIFICATION_TYPE = "ExitNotification"; @@ -34,6 +35,23 @@ public class PositionMonitoring { public PositionMonitoring(){} + public static void receiveMessage(NFC nfcRawDataEvent) { + PositionEvent positionEvent = PositionCalculation.calcPositionFromNfcOrNull(nfcRawDataEvent); + if (positionEvent != null) { + updateLocalizableObject(positionEvent); + receiveMessage(positionEvent); + } + } + + private static void updateLocalizableObject(PositionEvent positionEvent) { + LocalizableObject lObject = DataServices.getLObjectByIdOrNull(positionEvent.getLObjectId()); + + // TODO: caution: all changes to the data model should be performed using DataServices. + // Directly changing this object just works for the current simple case that we only have the object-representation of the world model + // in general it has to be made sure that both, all links from this object and to this object keep intact + lObject.setCurrentPlacing(positionEvent.getPlacing()); + } + private MonitoringRequest createMonitoringRequest(String frameId, String monitoringTaskId) { MonitoringRequest monReq = modelFactory.createMonitoringRequest(); monReq.setFrameId(frameId); diff --git a/testdata_raw.txt b/testdata_raw.txt new file mode 100644 index 0000000..e431c4a --- /dev/null +++ b/testdata_raw.txt @@ -0,0 +1 @@ +{"nfcRawDataEvent" : [ {"timestamp" : "2021-09-14T10:51:20+00:00", "tagId": "83221710", "type": "RFID", "scannerId": "98:CD:AC:26:2D:18"} ] } \ No newline at end of file -- GitLab