Skip to content

Commit

Permalink
refactor RuleEngineContext to kotlin
Browse files Browse the repository at this point in the history
  • Loading branch information
enricocolasante committed Dec 6, 2023
1 parent 7c2e7aa commit debfa77
Show file tree
Hide file tree
Showing 16 changed files with 273 additions and 663 deletions.
8 changes: 4 additions & 4 deletions src/main/java/org/hisp/dhis/rules/RuleEngine.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ import java.util.*
import java.util.concurrent.Callable

data class RuleEngine(
val executionContext: RuleEngineContext,
val events: List<RuleEvent>,
val enrollment: RuleEnrollment?,
val triggerEnvironment: TriggerEnvironment?) {
val executionContext: RuleEngineContext,
val events: List<RuleEvent> = emptyList(),
val enrollment: RuleEnrollment? = null,
val triggerEnvironment: TriggerEnvironment? = TriggerEnvironment.SERVER) {

@Deprecated("use kotlin property")
fun executionContext(): RuleEngineContext {
Expand Down
161 changes: 0 additions & 161 deletions src/main/java/org/hisp/dhis/rules/RuleEngineContext.java

This file was deleted.

13 changes: 13 additions & 0 deletions src/main/java/org/hisp/dhis/rules/RuleEngineContext.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package org.hisp.dhis.rules

import org.hisp.dhis.rules.models.Rule
import org.hisp.dhis.rules.models.RuleVariable

data class RuleEngineContext(
val rules: List<Rule>,
val ruleVariables: List<RuleVariable>,
val supplementaryData: Map<String, List<String>> = emptyMap(),
val constantsValues: Map<String, String> = emptyMap(),
val ruleEngineIntent: RuleEngineIntent = RuleEngineIntent.EVALUATION,
val dataItemStore: Map<String, DataItem> = emptyMap()
)
24 changes: 7 additions & 17 deletions src/test/java/org/hisp/dhis/rules/ConstantsValueTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ class ConstantsValueTest {
val rule: Rule = Rule("true", java.util.List.of(assignAction), "test_program_rule1", "")
val constantsValueMap: MutableMap<String, String> = HashMap()
constantsValueMap["A1234567890"] = "3.14"
val ruleEngineBuilder = getRuleEngine(java.util.List.of(rule), constantsValueMap)
val ruleEngine = getRuleEngine(listOf(rule), constantsValueMap)
val enrollment = RuleEnrollment.builder()
.enrollment("test_enrollment")
.programName("test_program")
Expand All @@ -51,7 +51,6 @@ class ConstantsValueTest {
.organisationUnitCode("test_ou_code")
.attributeValues(java.util.List.of(RuleAttributeValue.create("test_attribute", "test_value")))
.build()
val ruleEngine = ruleEngineBuilder.build()
val ruleEffects = ruleEngine.evaluate(enrollment).call()
assertEquals(1, ruleEffects.size)
assertEquals("3.14", ruleEffects[0].data())
Expand All @@ -65,7 +64,7 @@ class ConstantsValueTest {
RuleActionMessage.create(null, "#{test_attribute}", "", RuleActionMessage.Type.SHOW_ERROR)
val rule: Rule = Rule("true", java.util.List.of(assignAction), "test_program_rule1", "")
val rule2: Rule = Rule("#{test_attribute} > 3", java.util.List.of(action), "test_program_rule2", "")
val ruleEngineBuilder = getRuleEngine(
val ruleEngine = getRuleEngine(
java.util.List.of(rule, rule2),
HashMap()
)
Expand All @@ -79,7 +78,6 @@ class ConstantsValueTest {
.organisationUnitCode("test_ou_code")
.attributeValues(java.util.List.of(RuleAttributeValue.create("test_attribute", "test_value")))
.build()
val ruleEngine = ruleEngineBuilder.build()
val ruleEffects = ruleEngine.evaluate(enrollment).call()
assertEquals(2, ruleEffects.size)
assertEquals("4", ruleEffects[0].data())
Expand All @@ -95,8 +93,8 @@ class ConstantsValueTest {
RuleActionMessage.create(null, "#{test_attribute}", "", RuleActionMessage.Type.SHOW_ERROR)
val rule: Rule = Rule("true", java.util.List.of(assignAction), "test_program_rule1", "")
val rule2: Rule = Rule("#{test_attribute} > 3", java.util.List.of(action), "test_program_rule2", "")
val ruleEngineBuilder = getRuleEngine(
java.util.List.of(rule, rule2),
val ruleEngine = getRuleEngine(
listOf(rule, rule2),
HashMap()
)
val enrollment = RuleEnrollment.builder()
Expand All @@ -109,7 +107,6 @@ class ConstantsValueTest {
.organisationUnitCode("test_ou_code")
.attributeValues(java.util.List.of(RuleAttributeValue.create("test_attribute", "test_value")))
.build()
val ruleEngine = ruleEngineBuilder.build()
val ruleEffects = ruleEngine.evaluate(enrollment).call()
assertEquals(1, ruleEffects.size)
assertEquals("4", ruleEffects[0].data())
Expand All @@ -122,7 +119,7 @@ class ConstantsValueTest {
val rule: Rule = Rule("true", java.util.List.of(assignAction), "test_program_rule1", "")
val constantsValueMap: MutableMap<String, String> = HashMap()
constantsValueMap["A1234567890"] = "3.14"
val ruleEngineBuilder = getRuleEngine(java.util.List.of(rule), constantsValueMap)
val ruleEngine = getRuleEngine(listOf(rule), constantsValueMap)
val ruleEvent = RuleEvent(event ="test_event", programStage = "test_program_stage", programStageName = "",
status = RuleEvent.Status.ACTIVE, eventDate = Date(), dueDate = Date(), organisationUnit = "", organisationUnitCode = "", completedDate = Date(), dataValues =
listOf(
Expand All @@ -131,7 +128,6 @@ class ConstantsValueTest {
)
)
)
val ruleEngine = ruleEngineBuilder.build()
val ruleEffects = ruleEngine.evaluate(ruleEvent).call()
assertEquals(1, ruleEffects.size)
assertEquals("3.14", ruleEffects[0].data())
Expand All @@ -141,13 +137,7 @@ class ConstantsValueTest {
private fun getRuleEngine(
rules: List<Rule>,
constantsValueMap: Map<String, String>
): RuleEngine.Builder {
return RuleEngineContext
.builder()
.rules(rules)
.ruleVariables(ArrayList())
.supplementaryData(HashMap())
.constantsValue(constantsValueMap)
.build().toEngineBuilder().triggerEnvironment(TriggerEnvironment.SERVER)
): RuleEngine {
return RuleEngine(RuleEngineContext(rules, emptyList(), emptyMap(), constantsValueMap), emptyList(), null, TriggerEnvironment.SERVER)
}
}
19 changes: 6 additions & 13 deletions src/test/java/org/hisp/dhis/rules/ProgramRuleVariableTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -174,21 +174,19 @@ class ProgramRuleVariableTest {
}

private fun callEnrollmentRuleEngine(rule: Rule): List<RuleEffect> {
val ruleEngineBuilder = getRuleEngine(java.util.List.of(rule))
val ruleEngine = ruleEngineBuilder.build()
val ruleEngine = getRuleEngine(java.util.List.of(rule))
return ruleEngine.evaluate(enrollment).call()
}

private fun callEventRuleEngine(rule: Rule): List<RuleEffect> {
val ruleEngineBuilder = getRuleEngine(java.util.List.of(rule))
val ruleEngine = getRuleEngine(java.util.List.of(rule))
val event = RuleEvent(event = EVENT_ID, programStage = PROGRAM_STAGE,
programStageName = PROGRAM_STAGE_NAME, status = RULE_EVENT_STATUS,
eventDate = EVENT_DATE, dueDate = DUE_DATE,
organisationUnit = ORGANISATION_UNIT, organisationUnitCode = ORGANISATION_UNIT_CODE,
completedDate = null,
dataValues = emptyList())
val ruleEngine = ruleEngineBuilder.enrollment(enrollment).build()
return ruleEngine.evaluate(event).call()
return ruleEngine.copy(enrollment = enrollment).evaluate(event).call()
}

private val enrollment: RuleEnrollment
Expand All @@ -203,14 +201,9 @@ class ProgramRuleVariableTest {
.attributeValues(java.util.List.of(RuleAttributeValue.create("test_attribute", "test_value")))
.build()

private fun getRuleEngine(rules: List<Rule>): RuleEngine.Builder {
return RuleEngineContext
.builder()
.rules(rules)
.ruleVariables(listOf())
.supplementaryData(HashMap())
.constantsValue(HashMap())
.build().toEngineBuilder().triggerEnvironment(TriggerEnvironment.SERVER)
private fun getRuleEngine(rules: List<Rule>): RuleEngine {
return RuleEngine(RuleEngineContext(rules, listOf(), emptyMap(), emptyMap()),
emptyList(), null, TriggerEnvironment.SERVER)
}

companion object {
Expand Down
63 changes: 0 additions & 63 deletions src/test/java/org/hisp/dhis/rules/RuleEngineContextTest.kt

This file was deleted.

Loading

0 comments on commit debfa77

Please sign in to comment.