From 979353d062f84ab016ae1d69541909119e2f3b24 Mon Sep 17 00:00:00 2001 From: Ephraim Kigamba Date: Mon, 30 Nov 2020 12:42:46 +0300 Subject: [PATCH 1/6] Enable updating a task for a certain entity referenced in the update --- .../pathevaluator/dao/TaskDao.java | 2 +- .../pathevaluator/plan/PlanEvaluator.java | 2 +- .../pathevaluator/task/TaskHelper.java | 40 +++++++++++-------- 3 files changed, 25 insertions(+), 19 deletions(-) diff --git a/src/main/java/org/smartregister/pathevaluator/dao/TaskDao.java b/src/main/java/org/smartregister/pathevaluator/dao/TaskDao.java index abfd5bbc..f1d1969b 100644 --- a/src/main/java/org/smartregister/pathevaluator/dao/TaskDao.java +++ b/src/main/java/org/smartregister/pathevaluator/dao/TaskDao.java @@ -30,7 +30,7 @@ public interface TaskDao { */ void saveTask(org.smartregister.domain.Task task, QuestionnaireResponse questionnaireResponse); - boolean checkIfTaskExists(String baseEntityId,String juridiction, String planIdentifier, String code); + boolean checkIfTaskExists(String baseEntityId,String jurisdiction, String planIdentifier, String code); List findAllTasksForEntity(String id); diff --git a/src/main/java/org/smartregister/pathevaluator/plan/PlanEvaluator.java b/src/main/java/org/smartregister/pathevaluator/plan/PlanEvaluator.java index f248cea4..54f41143 100644 --- a/src/main/java/org/smartregister/pathevaluator/plan/PlanEvaluator.java +++ b/src/main/java/org/smartregister/pathevaluator/plan/PlanEvaluator.java @@ -140,7 +140,7 @@ public void evaluateResource(DomainResource resource, QuestionnaireResponse ques : questionnaireResponse.toBuilder().contained(Collections.singleton(resource)).build(), action, planIdentifier, triggerEvent)) { if (action.getType().equals(Action.ActionType.UPDATE)) { - taskHelper.updateTask(resource, action); + taskHelper.updateTask(resource, action, planIdentifier); } else { taskHelper.generateTask(resource, action, planIdentifier, jurisdictionCode, username, questionnaireResponse); diff --git a/src/main/java/org/smartregister/pathevaluator/task/TaskHelper.java b/src/main/java/org/smartregister/pathevaluator/task/TaskHelper.java index 209f2471..543f4914 100644 --- a/src/main/java/org/smartregister/pathevaluator/task/TaskHelper.java +++ b/src/main/java/org/smartregister/pathevaluator/task/TaskHelper.java @@ -4,6 +4,7 @@ package org.smartregister.pathevaluator.task; import java.lang.reflect.Field; +import java.util.List; import java.util.UUID; import java.util.logging.Level; import java.util.logging.Logger; @@ -75,27 +76,32 @@ public void generateTask(DomainResource resource, Action action, String planIden } } - public void updateTask(DomainResource resource, Action action) { + public void updateTask(DomainResource resource, Action action, String planIdentifier) { TaskDao taskDao = PathEvaluatorLibrary.getInstance().getTaskProvider().getTaskDao(); - Task task = taskDao.getTaskByIdentifier(resource.getId()); - try { - for (DynamicValue dynamicValue : action.getDynamicValue()) { - Field aField = task.getClass().getDeclaredField(dynamicValue.getPath()); - aField.setAccessible(true); - if (aField.getType().isAssignableFrom(Task.TaskStatus.class)) { - aField.set(task, Task.TaskStatus.get(pathEvaluatorLibrary.evaluateStringExpression(resource,dynamicValue.getExpression().getExpression()).string())); - } else if (aField.getType().isAssignableFrom(String.class)) { - aField.set(task, pathEvaluatorLibrary.evaluateStringExpression(resource,dynamicValue.getExpression().getExpression()).string()); - } else { - throw new IllegalArgumentException(); + List tasks = taskDao.findTasksForEntity(resource.getId(), planIdentifier); + + for (com.ibm.fhir.model.resource.Task task: tasks) { + Task opensrpTask = taskDao.getTaskByIdentifier(task.getId()); + + try { + for (DynamicValue dynamicValue : action.getDynamicValue()) { + Field aField = task.getClass().getDeclaredField(dynamicValue.getPath()); + aField.setAccessible(true); + if (aField.getType().isAssignableFrom(Task.TaskStatus.class)) { + aField.set(task, Task.TaskStatus.get(pathEvaluatorLibrary.evaluateStringExpression(resource,dynamicValue.getExpression().getExpression()).string())); + } else if (aField.getType().isAssignableFrom(String.class)) { + aField.set(task, pathEvaluatorLibrary.evaluateStringExpression(resource,dynamicValue.getExpression().getExpression()).string()); + } else { + throw new IllegalArgumentException(); + } } } - } - catch (Exception e) { - logger.log(Level.SEVERE, "Exception occurred while updating properties using Reflection" + e); - } + catch (Exception e) { + logger.log(Level.SEVERE, "Exception occurred while updating properties using Reflection" + e); + } - taskDao.updateTask(task); + taskDao.updateTask(opensrpTask); + } } private DateTime getDateTime(ExecutionPeriod executionPeriod, boolean start) { From 951c047fdb9695ed25c0c78afa5fd41e74d8e924 Mon Sep 17 00:00:00 2001 From: Ephraim Kigamba Date: Mon, 30 Nov 2020 15:45:11 +0300 Subject: [PATCH 2/6] Update snapshot version to 0.1.6.2-GS-SNAPSHOT --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f861143f..43be210d 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ opensrp-plan-evaluator jar - 0.1.6-SNAPSHOT + 0.1.6.2-GS-SNAPSHOT OpenSRP Plan Evaluator OpenSRP Plan Evaluator Library https://github.com/OpenSRP/opensrp-plan-evaluator From d4b0784d19e4be21525eb7265f6d8855fb2a4858 Mon Sep 17 00:00:00 2001 From: Ephraim Kigamba Date: Mon, 30 Nov 2020 18:01:47 +0300 Subject: [PATCH 3/6] Fix retrieving task by FhirTask id --- .../org/smartregister/pathevaluator/task/TaskHelper.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/smartregister/pathevaluator/task/TaskHelper.java b/src/main/java/org/smartregister/pathevaluator/task/TaskHelper.java index 543f4914..16d9dcc8 100644 --- a/src/main/java/org/smartregister/pathevaluator/task/TaskHelper.java +++ b/src/main/java/org/smartregister/pathevaluator/task/TaskHelper.java @@ -81,7 +81,12 @@ public void updateTask(DomainResource resource, Action action, String planIdenti List tasks = taskDao.findTasksForEntity(resource.getId(), planIdentifier); for (com.ibm.fhir.model.resource.Task task: tasks) { - Task opensrpTask = taskDao.getTaskByIdentifier(task.getId()); + String identifier = task.getIdentifier().get(0).getValue().getValue(); + Task opensrpTask = taskDao.getTaskByIdentifier(identifier); + + if (opensrpTask == null) { + continue; + } try { for (DynamicValue dynamicValue : action.getDynamicValue()) { From 074f33e1e145feaf85757fefcf2ff58d3881da8f Mon Sep 17 00:00:00 2001 From: Ephraim Kigamba Date: Mon, 30 Nov 2020 18:02:57 +0300 Subject: [PATCH 4/6] Update snapshot version to 0.1.6.3-GS-SNAPSHOT --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 43be210d..f0829670 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ opensrp-plan-evaluator jar - 0.1.6.2-GS-SNAPSHOT + 0.1.6.3-GS-SNAPSHOT OpenSRP Plan Evaluator OpenSRP Plan Evaluator Library https://github.com/OpenSRP/opensrp-plan-evaluator From 15872d540e187aed087951ce8cf0cc0d5bb247d5 Mon Sep 17 00:00:00 2001 From: Ephraim Kigamba Date: Tue, 1 Dec 2020 14:28:12 +0300 Subject: [PATCH 5/6] Fix TaskHelper#updateTask bug on updating Task --- .../smartregister/pathevaluator/task/TaskHelper.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/smartregister/pathevaluator/task/TaskHelper.java b/src/main/java/org/smartregister/pathevaluator/task/TaskHelper.java index 16d9dcc8..42d2648a 100644 --- a/src/main/java/org/smartregister/pathevaluator/task/TaskHelper.java +++ b/src/main/java/org/smartregister/pathevaluator/task/TaskHelper.java @@ -80,11 +80,11 @@ public void updateTask(DomainResource resource, Action action, String planIdenti TaskDao taskDao = PathEvaluatorLibrary.getInstance().getTaskProvider().getTaskDao(); List tasks = taskDao.findTasksForEntity(resource.getId(), planIdentifier); - for (com.ibm.fhir.model.resource.Task task: tasks) { - String identifier = task.getIdentifier().get(0).getValue().getValue(); - Task opensrpTask = taskDao.getTaskByIdentifier(identifier); + for (com.ibm.fhir.model.resource.Task fhirTask: tasks) { + String identifier = fhirTask.getIdentifier().get(0).getValue().getValue(); + Task task = taskDao.getTaskByIdentifier(identifier); - if (opensrpTask == null) { + if (task == null) { continue; } @@ -105,7 +105,7 @@ public void updateTask(DomainResource resource, Action action, String planIdenti logger.log(Level.SEVERE, "Exception occurred while updating properties using Reflection" + e); } - taskDao.updateTask(opensrpTask); + taskDao.updateTask(task); } } From 7a31776a7201b5c6a0df8b7000025bbb0d49453a Mon Sep 17 00:00:00 2001 From: Ephraim Kigamba Date: Tue, 1 Dec 2020 14:28:32 +0300 Subject: [PATCH 6/6] Update snapshot version to 0.1.6.4-GS-SNAPSHOT --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f0829670..6deae5ca 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ opensrp-plan-evaluator jar - 0.1.6.3-GS-SNAPSHOT + 0.1.6.4-GS-SNAPSHOT OpenSRP Plan Evaluator OpenSRP Plan Evaluator Library https://github.com/OpenSRP/opensrp-plan-evaluator