diff --git a/emf_datamodel/model/iPos_Datamodel.aird b/emf_datamodel/model/iPos_Datamodel.aird index 6cc9afa543b94738765e2262b2b9f739498f0012..e5e7e447aab40361ae0d003270d4eaa1e43a5fb7 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="de9b3043-b6a3-4d89-afc7-963d67701d45"> + <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_Et4wgAQNEey-kNQ7esRa_g" name="iPos_Datamodel" repPath="#_Es-xkAQNEey-kNQ7esRa_g" changeId="97e64d49-5157-4ee8-a1f0-01117933234c"> <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> @@ -2250,7 +2250,7 @@ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> <arrangeConstraints>KEEP_SIZE</arrangeConstraints> <arrangeConstraints>KEEP_RATIO</arrangeConstraints> - <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_qwXFihvcEeyPOIo-WqURQQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_ZchbXyBzEeyaJIyxidrtuQ" 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']"/> @@ -2262,9 +2262,9 @@ </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="_onxBUBvcEeyPOIo-WqURQQ" name="sensorId : EString" tooltipText=""> - <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//PositionEvent/sensorId"/> - <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//PositionEvent/sensorId"/> + <ownedElements xmi:type="diagram:DNodeListElement" uid="_onxBUBvcEeyPOIo-WqURQQ" name="lObjectId : EString" tooltipText=""> + <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//PositionEvent/lObjectId"/> + <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//PositionEvent/lObjectId"/> <ownedStyle xmi:type="diagram:BundledImage" uid="_qwZhwRvcEeyPOIo-WqURQQ" 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> @@ -2762,7 +2762,7 @@ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> <arrangeConstraints>KEEP_SIZE</arrangeConstraints> <arrangeConstraints>KEEP_RATIO</arrangeConstraints> - <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_NzPucRr2EeyPOIo-WqURQQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_GrDD1SB0EeyaJIyxidrtuQ" 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']"/> diff --git a/emf_datamodel/model/iPos_Datamodel.ecore b/emf_datamodel/model/iPos_Datamodel.ecore index f77db0cd0f2356def153cc681bd32a3ea438bec2..481804d45bec65fbcf64adef69bcfb1ae62838a2 100644 --- a/emf_datamodel/model/iPos_Datamodel.ecore +++ b/emf_datamodel/model/iPos_Datamodel.ecore @@ -119,7 +119,7 @@ eType="#//Placing"/> <eStructuralFeatures xsi:type="ecore:EAttribute" name="timeStamp" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String" transient="true"/> - <eStructuralFeatures xsi:type="ecore:EAttribute" name="sensorId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> + <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" diff --git a/emf_datamodel/model/iPos_Datamodel.genmodel b/emf_datamodel/model/iPos_Datamodel.genmodel index 1b9e4b44f00fc48dce02e561b6479f714866c741..5a12659432eeb11ab1b3e78ebc5913b3969b063b 100644 --- a/emf_datamodel/model/iPos_Datamodel.genmodel +++ b/emf_datamodel/model/iPos_Datamodel.genmodel @@ -110,7 +110,7 @@ <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/sensorId"/> + <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"/> diff --git a/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/SimpleSceneIntegration.java b/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/SimpleSceneIntegration.java index 40987e405162ae3ecd93aa538727dfa9bd5f8f4d..c79e5ffe6dc83c43ba93dc4ee786afdf8fdbec3a 100644 --- a/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/SimpleSceneIntegration.java +++ b/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/SimpleSceneIntegration.java @@ -1,18 +1,18 @@ package ipos.project.DataModellntegration.SimpleSceneIntegration; -import ipos.models.SimpleScene.IposPosition; +import ipos.models.SimpleScene; +import ipos.project.DataModellntegration.SimpleSceneIntegration.service.SimpleSceneTransformer; import ipos.project.DataModellntegration.SimpleSceneIntegration.service.impl.ExternalPubServiceImpl; import ipos.project.DataModellntegration.iPos_Datamodel.PositionEvent; -import ipos.project.mapper.ProtoJsonMap; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.apache.logging.log4j.LogManager; +import org.eclipse.paho.client.mqttv3.MqttMessage; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.jms.annotation.JmsListener; import org.springframework.stereotype.Component; @Component public class SimpleSceneIntegration { - private final Logger LOG = LoggerFactory.getLogger(getClass()); + // private static final Logger LOG = LoggerFactory.getLogger(SimpleSceneIntegration.class); + private static org.apache.logging.log4j.Logger LOG = LogManager.getLogger(); //@Autowired public static ExternalPubServiceImpl mqttService; @@ -34,22 +34,17 @@ public class SimpleSceneIntegration { }*/ public static void receiveMessage(PositionEvent positionEvent, String monitoringTaskId) { - // LOG.trace("Data integration get: " + pos); - System.out.println("SimpleSceneIntegration: Data integration get: " + positionEvent); - // we can translate a class into a string using several methods: 1) `.toString()` 2) `JsonFormat` in `ProtoJsonMap` - //String jsonPos = ProtoJsonMap.toJson(positionEvent); - // TODO: Transform Internal-PositionEvent to Protobuf-SensorPositionEvent + LOG.info("receiveMessage get: " + positionEvent); + //String jsonPos = ProtoJsonMap.toJson(positionEvent); // we can translate a class into a string using several methods: 1) `.toString()` 2) `JsonFormat` in `ProtoJsonMap` if (positionEvent != null) { - System.out.println("SimpleSceneIntegration: mqtt-message will be published: monitoringTaskId: " + monitoringTaskId + " positionEvent: " + positionEvent.toString()); - - if (null == mqttService) { - System.out.println("Warning: SimpleSceneIntegration: mqttService is null"); - } - // getsensorId, load sensor-type, agent-type, agent-id and create IposPositionEvent - // SimpleSceneTransformer.posEvent_internal2Proto(); - mqttService.publish(monitoringTaskId, positionEvent.toString(), 0, false); + LOG.info("received internal-positionEvent: monitoringTaskId: " + monitoringTaskId + " positionEvent: " + positionEvent.toString()); + SimpleScene.IposPositionEvent posEvent_proto = SimpleSceneTransformer.posEvent_internal2Proto(positionEvent); + LOG.info("obtained protobuf-positionEvent:" + posEvent_proto.toString()); + MqttMessage mqttMessage = mqttService.createMqttMsg(posEvent_proto, 0, false); + LOG.info("publishing mqttMessage:" + mqttMessage.toString() + " on topic: " + monitoringTaskId); + mqttService.publish(monitoringTaskId, mqttMessage); }else{ - System.out.println("Warning: SimpleScene: Received empty PositionEvent"); + LOG.debug("Warning: SimpleScene: Received empty PositionEvent"); } } diff --git a/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/service/ExternalPubService.java b/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/service/ExternalPubService.java index 48c7aee093607dc090a26728ca44feae076836e0..69cb4a98491f5cb52180eb72ca47c27e415cef60 100644 --- a/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/service/ExternalPubService.java +++ b/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/service/ExternalPubService.java @@ -1,5 +1,9 @@ package ipos.project.DataModellntegration.SimpleSceneIntegration.service; +import com.google.protobuf.AbstractMessageLite; +import org.eclipse.paho.client.mqttv3.MqttMessage; + public interface ExternalPubService { void publish(final String topic, final String msg , int qos, boolean retained); + MqttMessage createMqttMsg(AbstractMessageLite message, int qos, boolean retained); } 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 1924476217ce2c45e6b35e561506774d494471e8..0c9c7dba881a55547cd71ef42440ecbaaf986930 100644 --- a/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/service/SimpleSceneTransformer.java +++ b/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/service/SimpleSceneTransformer.java @@ -1,15 +1,16 @@ package ipos.project.DataModellntegration.SimpleSceneIntegration.service; import ipos.models.SimpleScene; -import ipos.project.DataModellntegration.iPos_Datamodel.IPos_DatamodelFactory; -import ipos.project.DataModellntegration.iPos_Datamodel.MonitoringRequest; +import ipos.project.DataModellntegration.iPos_Datamodel.*; import com.google.protobuf.ProtocolStringList; +import ipos.project.UseCaseController.PositionMonitoring; +import org.apache.logging.log4j.LogManager; import java.util.ArrayList; import java.util.List; public class SimpleSceneTransformer { - + private static org.apache.logging.log4j.Logger LOG = LogManager.getLogger(); private static IPos_DatamodelFactory modelFactory = IPos_DatamodelFactory.eINSTANCE; public static MonitoringRequest monReq_SScene2Internal(SimpleScene.IposMonitoringRequest monReqProto){ @@ -39,4 +40,45 @@ public class SimpleSceneTransformer { return null; } + public static SimpleScene.IposPositionEvent posEvent_internal2Proto(PositionEvent internalPosEvent){ + LocalizableObject lObject = PositionMonitoring.getLObjectByIdOrNull(internalPosEvent.getSensorId()); + if (null == lObject || null == lObject.getAgent()) { + LOG.error("Internal-PositionEvent could not be transformed into protobuf-format. " + + "No LocalizableObject with the provided sensor-id could be found, or no agent " + + "is associated to the LocalizableObject that has been found."); + return null; + } + + SimpleScene.IposPoint3D.Builder protoPoint3D = transformIntoProtoPoint3D(internalPosEvent); + SimpleScene.IposPosition.Builder protoIposPosition = transformIntoProtoIposPosition(internalPosEvent, protoPoint3D); + SimpleScene.IposSimpleOrientation.Builder protoOrientation = transformIntoProtoOrientation(internalPosEvent); + SimpleScene.IposObject.Builder protoIposObject = SimpleScene.IposObject.newBuilder(); + protoIposObject.setSensorId(lObject.getId()).setSensorType(lObject.getSensorType()).setId(lObject.getAgent().getId()).setType(lObject.getAgent().getAgentType()).setOrientation(protoOrientation).setPosition(protoIposPosition).setLastPosUpdate(internalPosEvent.getTimeStamp()); + + SimpleScene.IposPositionEvent.Builder protoIPosEvent = SimpleScene.IposPositionEvent.newBuilder(); + protoIPosEvent.addObject(protoIposObject); + return protoIPosEvent.build(); + } + + private static SimpleScene.IposSimpleOrientation.Builder transformIntoProtoOrientation(PositionEvent internalPosEvent) { + SimpleScene.IposSimpleOrientation.Builder protoOrientation = SimpleScene.IposSimpleOrientation.newBuilder(); + Quaternion internalOrientation = (Quaternion) internalPosEvent.getPlacing().getOrientation(); + protoOrientation.setX(internalOrientation.getX()).setY(internalOrientation.getY()).setZ(internalOrientation.getZ()); + return protoOrientation; + } + + private static SimpleScene.IposPosition.Builder transformIntoProtoIposPosition(PositionEvent internalPosEvent, SimpleScene.IposPoint3D.Builder protoPoint3D) { + float internalAccuracy = ((Gaussian) internalPosEvent.getPlacing().getPosition().getAccuracy()).getConfidenceInterval(); + String internalRefSystemId = internalPosEvent.getPlacing().getPosition().getReferenceSystem().getId(); + SimpleScene.IposPosition.Builder protoIposPosition = SimpleScene.IposPosition.newBuilder(); + protoIposPosition.setAccuracy(internalAccuracy).setRefSystemId(internalRefSystemId).setPoint(protoPoint3D); + return protoIposPosition; + } + + private static SimpleScene.IposPoint3D.Builder transformIntoProtoPoint3D(PositionEvent internalPosEvent) { + SimpleScene.IposPoint3D.Builder protoPoint3D = SimpleScene.IposPoint3D.newBuilder(); + Point3D internalPoint3D = (Point3D) internalPosEvent.getPlacing().getPosition().getPoint(); + protoPoint3D.setX(internalPoint3D.getX()).setY(internalPoint3D.getY()).setZ(internalPoint3D.getZ()); + return protoPoint3D; + } } diff --git a/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/service/impl/ExternalPubServiceImpl.java b/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/service/impl/ExternalPubServiceImpl.java index 1269b262ffd3d91de504be2aa8a4760e03f46a94..2a9c6a75de3515e879b98c88177a14ab15d0fddb 100644 --- a/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/service/impl/ExternalPubServiceImpl.java +++ b/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/service/impl/ExternalPubServiceImpl.java @@ -1,15 +1,22 @@ package ipos.project.DataModellntegration.SimpleSceneIntegration.service.impl; +import com.google.protobuf.AbstractMessageLite; import ipos.project.DataModellntegration.SimpleSceneIntegration.service.ExternalPubService; import org.eclipse.paho.client.mqttv3.MqttAsyncClient; import org.eclipse.paho.client.mqttv3.MqttException; import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.io.ByteArrayOutputStream; +import java.io.IOException; + @Service public class ExternalPubServiceImpl implements ExternalPubService { + private final Logger LOG = LoggerFactory.getLogger(getClass()); private final MqttAsyncClient mqttClient; @Autowired @@ -22,11 +29,30 @@ public class ExternalPubServiceImpl implements ExternalPubService { mqttMessage.setPayload(msg.getBytes()); mqttMessage.setQos(qos); mqttMessage.setRetained(retained); + publish(topic, mqttMessage); + } + public void publish(final String topic, final MqttMessage mqttMessage){ try { mqttClient.publish(topic, mqttMessage); } catch (MqttException e) { + LOG.error("MQTT-message could not be published"); e.printStackTrace(); } } + + @Override + public MqttMessage createMqttMsg(AbstractMessageLite protoMessage, int qos, boolean retained) { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try { + protoMessage.writeTo(baos); + } catch (IOException e) { + LOG.error("Protobuf-message could not be serialized"); + e.printStackTrace(); + } + MqttMessage mqttMessage = new MqttMessage(baos.toByteArray()); + mqttMessage.setQos(qos); + mqttMessage.setRetained(retained); + return mqttMessage; + } } diff --git a/src/main/java/ipos/project/SensorValueIntegration/GenericSensorValueProcessor.java b/src/main/java/ipos/project/SensorValueIntegration/GenericSensorValueProcessor.java index 36fd606813a5c2c08de8d497d8cc4cfc029b2089..1154f1923f5c52e3aed627698644b5f58a863299 100644 --- a/src/main/java/ipos/project/SensorValueIntegration/GenericSensorValueProcessor.java +++ b/src/main/java/ipos/project/SensorValueIntegration/GenericSensorValueProcessor.java @@ -3,15 +3,14 @@ package ipos.project.SensorValueIntegration; import ipos.models.SimpleScene.IposPosition; import ipos.project.DataModellntegration.SimpleSceneIntegration.service.impl.ExternalPubServiceImpl; import ipos.project.mapper.ProtoJsonMap; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.apache.logging.log4j.LogManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jms.annotation.JmsListener; import org.springframework.stereotype.Component; @Component public class GenericSensorValueProcessor { - private final Logger LOG = LoggerFactory.getLogger(getClass()); + private static org.apache.logging.log4j.Logger LOG = LogManager.getLogger(); @Autowired private ExternalPubServiceImpl mqttService; diff --git a/src/main/java/ipos/project/SensorValueIntegration/api/MqttPositionHandler.java b/src/main/java/ipos/project/SensorValueIntegration/api/MqttPositionHandler.java index a0326b2c28f5df4621c0d4056e52bf85f1ef6420..3a38e64fe0cb1f6dbabca1f8bbf7439f22765e5a 100644 --- a/src/main/java/ipos/project/SensorValueIntegration/api/MqttPositionHandler.java +++ b/src/main/java/ipos/project/SensorValueIntegration/api/MqttPositionHandler.java @@ -11,9 +11,8 @@ import ipos.project.UseCaseController.PositionMonitoring; import ipos.project.config.mqtt.Handler; import ipos.project.config.mqtt.MqttListener; import ipos.project.mapper.ProtoJsonMap; +import org.apache.logging.log4j.LogManager; import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jms.core.JmsTemplate; @@ -22,7 +21,7 @@ import org.springframework.jms.core.JmsTemplate; @MqttListener("usertopic/SensorPositionEvent") public class MqttPositionHandler implements Handler { - private final Logger LOG = LoggerFactory.getLogger(getClass()); + private static org.apache.logging.log4j.Logger LOG = LogManager.getLogger(); JmsTemplate jmsTemplate; @Autowired @@ -36,25 +35,12 @@ public class MqttPositionHandler implements Handler { // method that handle new message from the topic public void handle(MqttMessage message) { try { - System.out.println("Received MQTT-message: " + message.toString()); SensorPositionEvent protoSensPosEvent = ProtoJsonMap.fromJson(message.toString(), SensorPositionEvent.class); - // example-JSON: {"sensorId": "UWB_1", "position": {"refSystemId": "ROOT", "point": {"x": 3.0,"y": 2.0,"z": 3.0}, "accuracy": 1.0}, "orientation": {"x": 1.0,"y": 0.5,"z": 1.0, "w": 1.5}, "lastPosUpdate": "2021-09-14T09:41:20+00:00"} //IposPosition pos = IposPosition.parseFrom(message.toString().getBytes()); assert protoSensPosEvent != null; - LOG.info("SensorPositionEvent received: \n" + protoSensPosEvent); - System.out.println("SimpleSceneIntegration: Proto-Point: " + protoSensPosEvent.getPosition().getPoint().toString()); PositionEvent positionEvent = GenericSensorTransformer.posEvent_GSensor2Internal(protoSensPosEvent); - System.out.println("SimpleSceneIntegration: Internal-Point: " + positionEvent.getPlacing().getPosition().getPoint().toString()); + LOG.info("SensorValueIntegration: Transformed Protobuf-SensorPositionEvent into Internal-PositionEvent: " + positionEvent.toString() + ", " + positionEvent.getPlacing().getPosition().getPoint().toString() + ", " + positionEvent.getPlacing().getOrientation().toString()); - System.out.println("SensorValueIntegration: Transformed Protobuf-SensorPositionEvent into Internal-PositionEvent: " + positionEvent.toString() + ", " + positionEvent.getPlacing().getPosition().getPoint().toString() + ", " + positionEvent.getPlacing().getOrientation().toString()); - - /* System.out.println("Sending Internal-PositionEvent using mqttService"); - if (null == mqttService) - System.out.println("SimpleSceneIntegration: mqttService is null"); - else - System.out.println("SimpleSceneIntegration: mqttService is not null"); - mqttService.publish("Human_at_Window_Side", positionEvent.toString(), 0, false); -*/ // ggf. anstatt JMS einfach den PositionMonitoringController per Funktionsaufruf aufrufen PositionMonitoring.receiveMessage(positionEvent); // this.jmsTemplate.convertAndSend("/PositionEvent", protoSensPosEvent); // submit position to the internal broker diff --git a/src/main/java/ipos/project/UseCaseController/PositionMonitoring.java b/src/main/java/ipos/project/UseCaseController/PositionMonitoring.java index aae8da291923a18a48f927d1f9136f05eaaf8a39..80c3c40f5b4d8eb0998e7ce4cf6ec81b0a03584b 100644 --- a/src/main/java/ipos/project/UseCaseController/PositionMonitoring.java +++ b/src/main/java/ipos/project/UseCaseController/PositionMonitoring.java @@ -4,22 +4,18 @@ import ipos.project.DataModellntegration.SimpleSceneIntegration.SimpleSceneInteg import ipos.project.DataModellntegration.iPos_Datamodel.*; import ipos.project.Functionality.eventfilter.eventFilter; import ipos.project.Functionality.eventfilter.readConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.apache.logging.log4j.LogManager; import org.springframework.jms.annotation.JmsListener; import org.springframework.stereotype.Component; import ipos.models.SimpleScene.IposPosition; - -import java.lang.ref.Reference; -import java.text.ParseException; import java.util.*; @Component public class PositionMonitoring { - private final Logger LOG = LoggerFactory.getLogger(getClass()); + private static org.apache.logging.log4j.Logger LOG = LogManager.getLogger(); - public WorldModel wm; + private static WorldModel wm; private static List<eventFilter> eventFilters = new ArrayList<eventFilter>(); private IPos_DatamodelFactory modelFactory = IPos_DatamodelFactory.eINSTANCE; @@ -37,6 +33,17 @@ public class PositionMonitoring { initEventFiltersForDemo(); } + public static LocalizableObject getLObjectByIdOrNull(String lObjectId){ + for (Agent agent : wm.getAgent()){ + for (LocalizableObject lObject : agent.getLObject()){ + if (lObject.getId().equals(lObjectId)){ + return lObject; + } + } + } + return null; + } + private void initEventFiltersForDemo(){ String taskIdWindow = "Human_at_Window_Side"; String taskIdDoor = "Human_at_Door_Side"; @@ -176,8 +183,7 @@ public class PositionMonitoring { // @JmsListener(destination = "/PositionEvent", containerFactory = "jmsListenFactory") public static void receiveMessage(PositionEvent posEvent) { - // LOG.info("Received <" + posEvent + ">"); - System.out.println("MonitoringController: Received <" + posEvent.toString() + ">"); + LOG.info("Received <" + posEvent + ">"); String taskIdWindow = "Human_at_Window_Side"; String taskIdDoor = "Human_at_Door_Side"; float y_coordinate = ((Point3D) posEvent.getPlacing().getPosition().getPoint()).getY();