jsinovassin commented on code in PR #659:
URL: https://github.com/apache/unomi/pull/659#discussion_r1579458066


##########
plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/PastEventConditionESQueryBuilder.java:
##########
@@ -131,35 +131,77 @@ private Condition getProfileIdsCondition(Set<String> ids, 
boolean shouldMatch) {
     }
 
     private Condition getProfileConditionForCounter(String 
generatedPropertyKey, Integer minimumEventCount, Integer maximumEventCount, 
boolean eventsOccurred) {
-        String generatedPropertyName = "systemProperties.pastEvents." + 
generatedPropertyKey;
+        Condition countCondition = new Condition();
+
+        
countCondition.setConditionType(definitionsService.getConditionType("nestedCondition"));
+        countCondition.setParameter("path", "systemProperties.pastEvents");
+
+        Condition subConditionCount = new 
Condition(definitionsService.getConditionType("profilePropertyCondition"));
+
+        Condition subConditionKey = 
getKeyEqualsCondition(generatedPropertyKey);
+
         ConditionType profilePropertyConditionType = 
definitionsService.getConditionType("profilePropertyCondition");
         if (eventsOccurred) {
-            Condition counterIsBetweenBoundaries = new Condition();
-            
counterIsBetweenBoundaries.setConditionType(profilePropertyConditionType);
-            counterIsBetweenBoundaries.setParameter("propertyName", 
generatedPropertyName);
-            counterIsBetweenBoundaries.setParameter("comparisonOperator", 
"between");
-            counterIsBetweenBoundaries.setParameter("propertyValuesInteger", 
Arrays.asList(minimumEventCount, maximumEventCount));
-            return counterIsBetweenBoundaries;
+            subConditionCount.setParameter("propertyName", 
"systemProperties.pastEvents.count");
+            subConditionCount.setParameter("comparisonOperator", "between");
+            subConditionCount.setParameter("propertyValuesInteger", 
Arrays.asList(minimumEventCount, maximumEventCount));
+
+            Condition booleanCondition = new 
Condition(definitionsService.getConditionType("booleanCondition"));
+            booleanCondition.setParameter("operator", "and");
+            booleanCondition.setParameter("subConditions", 
Arrays.asList(subConditionCount, subConditionKey));
+
+            countCondition.setParameter("subCondition", booleanCondition);
+            return countCondition;
+
         } else {
-            Condition counterMissing = new Condition();
-            counterMissing.setConditionType(profilePropertyConditionType);
-            counterMissing.setParameter("propertyName", generatedPropertyName);
-            counterMissing.setParameter("comparisonOperator", "missing");
-
-            Condition counterZero = new Condition();
-            counterZero.setConditionType(profilePropertyConditionType);
-            counterZero.setParameter("propertyName", generatedPropertyName);
+
+            // 1. Key not present in profile
+            Condition keyNestedCondition = new Condition();
+            
keyNestedCondition.setConditionType(definitionsService.getConditionType("nestedCondition"));
+            keyNestedCondition.setParameter("path", 
"systemProperties.pastEvents");
+
+            Condition keyEquals = new Condition(profilePropertyConditionType);
+            keyEquals.setParameter("propertyName", 
"systemProperties.pastEvents.key");
+            keyEquals.setParameter("comparisonOperator", "equals");
+            keyEquals.setParameter("propertyValue", generatedPropertyKey);

Review Comment:
   keyEquals was added as a subCondition of keyNestedCondition at line 168



##########
plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/PastEventConditionESQueryBuilder.java:
##########
@@ -131,35 +131,77 @@ private Condition getProfileIdsCondition(Set<String> ids, 
boolean shouldMatch) {
     }
 
     private Condition getProfileConditionForCounter(String 
generatedPropertyKey, Integer minimumEventCount, Integer maximumEventCount, 
boolean eventsOccurred) {
-        String generatedPropertyName = "systemProperties.pastEvents." + 
generatedPropertyKey;
+        Condition countCondition = new Condition();
+
+        
countCondition.setConditionType(definitionsService.getConditionType("nestedCondition"));
+        countCondition.setParameter("path", "systemProperties.pastEvents");
+
+        Condition subConditionCount = new 
Condition(definitionsService.getConditionType("profilePropertyCondition"));

Review Comment:
   Updated!



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@unomi.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to