From 91c8f60bb63b9619c3963ba44ed83c7e7ea34363 Mon Sep 17 00:00:00 2001
From: Hailong <hailong.zhu@tu-dresden.de>
Date: Wed, 22 Sep 2021 17:02:04 +0200
Subject: [PATCH] - updated eventFilter to support positionConditionCell.

---
 .../eventfilter/TestEventFilter.java          |  6 ++--
 .../eventfilter/eventFilter.java              | 32 +++++++++++--------
 .../Functionality/eventfilter/readConfig.java |  3 +-
 3 files changed, 24 insertions(+), 17 deletions(-)

diff --git a/src/main/java/ipos/project/Functionality/eventfilter/TestEventFilter.java b/src/main/java/ipos/project/Functionality/eventfilter/TestEventFilter.java
index dbe5fcf..050002b 100644
--- a/src/main/java/ipos/project/Functionality/eventfilter/TestEventFilter.java
+++ b/src/main/java/ipos/project/Functionality/eventfilter/TestEventFilter.java
@@ -49,9 +49,9 @@ public class TestEventFilter {
         events.put(tagNames.tagY,"2.456");
         events.put(tagNames.tagZ, "1");
         events.put(tagNames.tagAccuracy,"0.15"); */
-        testPoint3D.setX((float) 1.34);
-        testPoint3D.setY((float) 2.456);
-        testPoint3D.setZ((float) 1);
+        testPoint3D.setX((float) 3.34);
+        testPoint3D.setY((float) 2.656);
+        testPoint3D.setZ((float) 2);
         testPosition.setPoint(testPoint3D);
         testPlacing.setPosition(testPosition);
         testLObject.setId("AGV001");
diff --git a/src/main/java/ipos/project/Functionality/eventfilter/eventFilter.java b/src/main/java/ipos/project/Functionality/eventfilter/eventFilter.java
index 05b3589..f75f81c 100644
--- a/src/main/java/ipos/project/Functionality/eventfilter/eventFilter.java
+++ b/src/main/java/ipos/project/Functionality/eventfilter/eventFilter.java
@@ -5,6 +5,7 @@ import ipos.project.Functionality.eventfilter.Cell.Vector3;
 import ipos.project.DataModellntegration.iPos_Datamodel.*;
 
 import java.sql.Timestamp;
+import java.lang.Math;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -70,10 +71,13 @@ public class eventFilter {
         return (float) Math.hypot(Math.hypot(dx, dy), dz);
     }
 
-    private static boolean is_in_cell(Vector3 cod, Vector3 ref, Vector3 size, Quaternion rot){
-        cod.sub(ref);
-        rot.toMatrix();
-        return true;
+    private static boolean is_in_cell(Point3D cod, Float[] ref, Float[] size, Float[] rot){
+        if ((Math.abs(cod.getX()-ref[0])<= size[0]/2) && (Math.abs(cod.getY()-ref[1])<= size[1]/2) && (Math.abs(cod.getZ()-ref[2])<= size[2]/2)) {
+            return true;
+        }
+        else {
+            return false;
+        }
     }
 
     public boolean process(PositionEvent event) throws ParseException {
@@ -216,19 +220,21 @@ public class eventFilter {
         System.out.println("Filter status (position_delta) " + ": " + flag);
 
         //filter positionCondition_cell condition
-        /*if (filterStructure[8] && !flag) {
+        if (filterStructure[8] && !flag) {
             flag = true; //switch the filter status to block, if the event meet the filter condition, switch to pass
-            Vector3 cod = new Vector3(Double.parseDouble(event.getPositionInfo().getPosition().getCoordinate().getX()),Double.parseDouble(event.getPositionInfo().getPosition().getCoordinate().getY()),Double.parseDouble(event.getPositionInfo().getPosition().getCoordinate().getZ()));
-            for (int i = 0; i < positionCondition_cell.size(); i++) {
-                Vector3 ref = new Vector3(positionCondition_cell.get(i)[0][0], positionCondition_cell.get(i)[0][1], positionCondition_cell.get(i)[0][2]);
-                Vector3 size = new Vector3(positionCondition_cell.get(i)[1][0], positionCondition_cell.get(i)[1][1], positionCondition_cell.get(i)[1][2]);
-                Quaternion rot = new Quaternion(positionCondition_cell.get(i)[2][0], positionCondition_cell.get(i)[2][1], positionCondition_cell.get(i)[2][2], positionCondition_cell.get(i)[2][3]);
-                if (is_in_cell(cod, ref, size, rot)) {
-                    flag = false;
+            if (event.getPlacing().getPosition() instanceof RelativePosition) {
+                RelativePosition rPosition = (RelativePosition) event.getPlacing().getPosition();
+                for (int i = 0; i < positionConditionCell.size(); i++) {
+                    if (rPosition.getPoint() instanceof Point3D) {
+                        Point3D cod = (Point3D) rPosition.getPoint();
+                        if (is_in_cell(cod, positionConditionCell.get(i)[0], positionConditionCell.get(i)[1], positionConditionCell.get(i)[2])) {
+                            flag = false;
+                        }
+                    }
                 }
             }
         }
-        System.out.println("Filter status (positionCondition_cell) " + ": " + flag);*/
+        System.out.println("Filter status (positionCondition_cell) " + ": " + flag);
 
 
         if (!flag) {
diff --git a/src/main/java/ipos/project/Functionality/eventfilter/readConfig.java b/src/main/java/ipos/project/Functionality/eventfilter/readConfig.java
index b32f9de..d0ab1d7 100644
--- a/src/main/java/ipos/project/Functionality/eventfilter/readConfig.java
+++ b/src/main/java/ipos/project/Functionality/eventfilter/readConfig.java
@@ -261,8 +261,9 @@ public class readConfig {
         System.out.println("\tsensor_id_condition          : " + config.getSensorIdCondition());
         System.out.println("\tid_condition                 : " + config.getIdCondition());
         System.out.println("\taccuracy_condition           : " + config.getAccuracyCondition());
-        System.out.println("\tposition_condition           : " + config.getPositionCondition().get(0)[0] + ", " + config.getPositionCondition().get(0)[1] + ", " + config.getPositionCondition().get(0)[2] + ", " + config.getPositionCondition().get(0)[3]);
+        //System.out.println("\tposition_condition           : " + config.getPositionCondition().get(0)[0] + ", " + config.getPositionCondition().get(0)[1] + ", " + config.getPositionCondition().get(0)[2] + ", " + config.getPositionCondition().get(0)[3]);
         System.out.println("\ttime_min_interval            : " + config.getTimeMinInterval());
         System.out.println("\tposition_delta               : " + config.getPositionDelta());
+        System.out.println("\tfilter_structure             : " + config.getFilterStructure());
     }
 }
-- 
GitLab