diff --git a/src/main/java/ipos/project/Functionality/eventfilter/TestEventFilter.java b/src/main/java/ipos/project/Functionality/eventfilter/TestEventFilter.java index dbe5fcf89a7d63e76fb08b83589e1f446a342edd..050002bef3441a0886ac4bb0d59b62d0a0acf724 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 05b35890ab6b84bf38f86422890ba272a7ed1b22..f75f81c49a27e58c68f5577bc319cbe734f37ea0 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 b32f9dee9e2c5de76c5a017935b8d85493f44759..d0ab1d75f9fa894f0e6737a2e6579d02a459a41d 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()); } }