Skip to content

Commit

Permalink
Merge 8d2d715 into 3f77750
Browse files Browse the repository at this point in the history
  • Loading branch information
githengi committed Nov 3, 2020
2 parents 3f77750 + 8d2d715 commit 95dc28c
Show file tree
Hide file tree
Showing 6 changed files with 85 additions and 18 deletions.
29 changes: 29 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# This workflow will build a Java project with Maven
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven

name: Java CI with Maven

on:
push:
branches: [ master ]
pull_request:
branches: [ master ]

jobs:
run-unit-tests:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Run Unit tests with Maven
run: mvn -B clean test jacoco:report --file pom.xml
- name: Upload coveralls report
env:
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_TOKEN }}
run: |
mvn -B coveralls:report --file pom.xml -DrepoToken="$COVERALLS_REPO_TOKEN"
7 changes: 5 additions & 2 deletions src/main/java/org/smartregister/converters/TaskConverter.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import com.ibm.fhir.model.type.String;
import com.ibm.fhir.model.type.Uri;
import com.ibm.fhir.model.type.code.TaskIntent;
import com.ibm.fhir.model.type.code.TaskPriority;
import com.ibm.fhir.model.type.code.TaskStatus;

public class TaskConverter {
Expand All @@ -39,8 +40,10 @@ public static Task convertTasktoFihrResource(org.smartregister.domain.Task domai
if (StringUtils.isNotBlank(domainTask.getLocation())) {
builder.location(Reference.builder().reference(String.of(domainTask.getLocation())).build());
}
// TaskPriority priority = TaskPriority.builder().id("priority").value(java.lang.String.valueOf(domainTask.getPriority())).build();
//TODO : Need to set priority as its an enum in FIHR

if (domainTask.getPriority() != null) {
builder.priority(TaskPriority.builder().value(StringUtils.toRootLowerCase(domainTask.getPriority().name())).build());
}

Reference focus = Reference.builder().reference(String.builder().value(domainTask.getFocus()).build()).build();

Expand Down
35 changes: 32 additions & 3 deletions src/main/java/org/smartregister/domain/Task.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,35 @@ public static TaskStatus get(String algorithm) {
return lookup.get(algorithm);
}
}


public enum TaskPriority {

@SerializedName("routine")
ROUTINE,
@SerializedName("urgent")
URGENT,
@SerializedName("asap")
ASAP,
@SerializedName("stat")
STAT;

public static TaskPriority get(String algorithm) {
switch (algorithm) {
case "routine":
return ROUTINE;
case "urgent":
return URGENT;
case "asap":
return ASAP;
case "stat":
return STAT;
default:
throw new IllegalArgumentException("Not a valid Task priority");
}

}
}

public static final String[] INACTIVE_TASK_STATUS = new String[]{TaskStatus.CANCELLED.name(), TaskStatus.ARCHIVED.name()};

Expand All @@ -55,7 +84,7 @@ public static TaskStatus get(String algorithm) {

private String businessStatus;

private int priority;
private TaskPriority priority;

private String code;

Expand Down Expand Up @@ -133,11 +162,11 @@ public void setBusinessStatus(String businessStatus) {
this.businessStatus = businessStatus;
}

public int getPriority() {
public TaskPriority getPriority() {
return priority;
}

public void setPriority(int priority) {
public void setPriority(TaskPriority priority) {
this.priority = priority;
}

Expand Down
23 changes: 14 additions & 9 deletions src/main/java/org/smartregister/pathevaluator/task/TaskHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@
* @author Samuel Githengi created on 06/15/20
*/
public class TaskHelper {

private PathEvaluatorLibrary pathEvaluatorLibrary = PathEvaluatorLibrary.getInstance();

private static Logger logger = Logger.getLogger(TaskHelper.class.getSimpleName());

/**
Expand All @@ -40,15 +40,15 @@ public class TaskHelper {
public void generateTask(DomainResource resource, Action action, String planIdentifier, String jurisdiction,
String username, QuestionnaireResponse questionnaireResponse) {
TaskDao taskDao = PathEvaluatorLibrary.getInstance().getTaskProvider().getTaskDao();
if (taskDao.checkIfTaskExists(resource.getId(),jurisdiction, planIdentifier,action.getCode())) {
if (taskDao.checkIfTaskExists(resource.getId(), jurisdiction, planIdentifier, action.getCode())) {
logger.info("Task already exists");
} else {
Task task = new Task();
task.setIdentifier(UUID.randomUUID().toString());
task.setPlanIdentifier(planIdentifier);
task.setGroupIdentifier(jurisdiction);
task.setStatus(Task.TaskStatus.READY);
task.setPriority(3);
task.setPriority(Task.TaskPriority.ROUTINE);
task.setCode(action.getCode());
task.setDescription(action.getDescription());
task.setFocus(action.getIdentifier());
Expand All @@ -60,7 +60,7 @@ public void generateTask(DomainResource resource, Action action, String planIden
if (action.getDynamicValue() != null) {
for (DynamicValue dynamicValue : action.getDynamicValue()) {
if (dynamicValue != null && dynamicValue.getExpression() != null
&& dynamicValue.getExpression().getName().equals("defaultBusinessStatus")) {
&& dynamicValue.getExpression().getName().equals("defaultBusinessStatus")) {
task.setBusinessStatus(dynamicValue.getExpression().getExpression());
}
}
Expand All @@ -74,7 +74,7 @@ public void generateTask(DomainResource resource, Action action, String planIden
logger.info("Created task " + task.toString());
}
}

public void updateTask(DomainResource resource, Action action) {
TaskDao taskDao = PathEvaluatorLibrary.getInstance().getTaskProvider().getTaskDao();
Task task = taskDao.getTaskByIdentifier(resource.getId());
Expand All @@ -83,9 +83,14 @@ public void updateTask(DomainResource resource, Action action) {
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()));
aField.set(task, Task.TaskStatus.get(pathEvaluatorLibrary
.evaluateStringExpression(resource, dynamicValue.getExpression().getExpression()).string()));
} else if (aField.getType().isAssignableFrom(Task.TaskPriority.class)) {
aField.set(task, Task.TaskPriority.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());
aField.set(task, pathEvaluatorLibrary
.evaluateStringExpression(resource, dynamicValue.getExpression().getExpression()).string());
} else {
throw new IllegalArgumentException();
}
Expand All @@ -94,7 +99,7 @@ public void updateTask(DomainResource resource, Action action) {
catch (Exception e) {
logger.log(Level.SEVERE, "Exception occurred while updating properties using Reflection" + e);
}

taskDao.updateTask(task);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

public class TaskConverterTest {

private String taskJson = "{\"identifier\":\"tsk11231jh22\",\"planIdentifier\":\"IRS_2018_S1\",\"groupIdentifier\":\"2018_IRS-3734{\",\"status\":\"Ready\",\"businessStatus\":\"Not Visited\",\"priority\":3,\"code\":\"IRS\",\"description\":\"Spray House\",\"focus\":\"IRS Visit\",\"for\":\"location.properties.uid:41587456-b7c8-4c4e-b433-23a786f742fc\",\"executionStartDate\":\"2018-11-10T2200\",\"executionEndDate\":\"2019-11-10T2100\",\"authoredOn\":\"2018-10-31T0700\",\"lastModified\":\"2018-10-31T0700\",\"owner\":\"demouser\",\"note\":[{\"authorString\":\"demouser\",\"time\":\"2018-01-01T0800\",\"text\":\"This should be assigned to patrick.\"}],\"serverVersion\":0,\"reasonReference\":\"reasonrefuuid\",\"location\":\"catchment1\",\"requester\":\"chw1\"}";
private String taskJson = "{\"identifier\":\"tsk11231jh22\",\"planIdentifier\":\"IRS_2018_S1\",\"groupIdentifier\":\"2018_IRS-3734{\",\"status\":\"Ready\",\"businessStatus\":\"Not Visited\",\"priority\":\"routine\",\"code\":\"IRS\",\"description\":\"Spray House\",\"focus\":\"IRS Visit\",\"for\":\"location.properties.uid:41587456-b7c8-4c4e-b433-23a786f742fc\",\"executionStartDate\":\"2018-11-10T2200\",\"executionEndDate\":\"2019-11-10T2100\",\"authoredOn\":\"2018-10-31T0700\",\"lastModified\":\"2018-10-31T0700\",\"owner\":\"demouser\",\"note\":[{\"authorString\":\"demouser\",\"time\":\"2018-01-01T0800\",\"text\":\"This should be assigned to patrick.\"}],\"serverVersion\":0,\"reasonReference\":\"reasonrefuuid\",\"location\":\"catchment1\",\"requester\":\"chw1\"}";

private static Gson gson = new GsonBuilder().registerTypeAdapter(DateTime.class, new TaskDateTimeTypeConverter())
.serializeNulls().create();
Expand Down
7 changes: 4 additions & 3 deletions src/test/java/org/smartregister/domain/TaskTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import org.junit.Test;
import org.smartregister.domain.Task.TaskPriority;
import org.smartregister.domain.Task.TaskStatus;
import org.smartregister.utils.TaskDateTimeTypeConverter;

Expand All @@ -20,9 +21,9 @@ public class TaskTest {

protected static DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HHmm");

private String taskJson = "{\"identifier\":\"tsk11231jh22\",\"planIdentifier\":\"IRS_2018_S1\",\"groupIdentifier\":\"2018_IRS-3734{\",\"status\":\"Ready\",\"businessStatus\":\"Not Visited\",\"priority\":3,\"code\":\"IRS\",\"description\":\"Spray House\",\"focus\":\"IRS Visit\",\"for\":\"location.properties.uid:41587456-b7c8-4c4e-b433-23a786f742fc\",\"executionStartDate\":\"2018-11-10T2200\",\"executionEndDate\":null,\"authoredOn\":\"2018-10-31T0700\",\"lastModified\":\"2018-10-31T0700\",\"owner\":\"demouser\",\"note\":[{\"authorString\":\"demouser\",\"time\":\"2018-01-01T0800\",\"text\":\"This should be assigned to patrick.\"}],\"serverVersion\":0,\"reasonReference\":\"reasonrefuuid\",\"location\":\"catchment1\",\"requester\":\"chw1\",\"syncStatus\":null,\"structureId\":null,\"rowid\":null}";
private String taskJson = "{\"identifier\":\"tsk11231jh22\",\"planIdentifier\":\"IRS_2018_S1\",\"groupIdentifier\":\"2018_IRS-3734{\",\"status\":\"Ready\",\"businessStatus\":\"Not Visited\",\"priority\":\"asap\",\"code\":\"IRS\",\"description\":\"Spray House\",\"focus\":\"IRS Visit\",\"for\":\"location.properties.uid:41587456-b7c8-4c4e-b433-23a786f742fc\",\"executionStartDate\":\"2018-11-10T2200\",\"executionEndDate\":null,\"authoredOn\":\"2018-10-31T0700\",\"lastModified\":\"2018-10-31T0700\",\"owner\":\"demouser\",\"note\":[{\"authorString\":\"demouser\",\"time\":\"2018-01-01T0800\",\"text\":\"This should be assigned to patrick.\"}],\"serverVersion\":0,\"reasonReference\":\"reasonrefuuid\",\"location\":\"catchment1\",\"requester\":\"chw1\",\"syncStatus\":null,\"structureId\":null,\"rowid\":null}";

private String task2Json = "{\"identifier\":\"tsk11231jh22\",\"planIdentifier\":\"IRS_2018_S1\",\"groupIdentifier\":\"2018_IRS-3734{\",\"status\":\"Ready\",\"businessStatus\":\"Not Visited\",\"priority\":3,\"code\":\"IRS\",\"description\":\"Spray House\",\"focus\":\"IRS Visit\",\"for\":\"location.properties.uid:41587456-b7c8-4c4e-b433-23a786f742fc\",\"executionStartDate\":\"2018-11-10T2200\",\"executionEndDate\":null,\"authoredOn\":\"2018-10-31T0700\",\"lastModified\":\"2018-10-31T07:00:00\",\"owner\":\"demouser\",\"note\":[{\"authorString\":\"demouser\",\"time\":\"2018-01-01T0800\",\"text\":\"This should be assigned to patrick.\"}],\"serverVersion\":0}";
private String task2Json = "{\"identifier\":\"tsk11231jh22\",\"planIdentifier\":\"IRS_2018_S1\",\"groupIdentifier\":\"2018_IRS-3734{\",\"status\":\"Ready\",\"businessStatus\":\"Not Visited\",\"priority\":\"routine\",\"code\":\"IRS\",\"description\":\"Spray House\",\"focus\":\"IRS Visit\",\"for\":\"location.properties.uid:41587456-b7c8-4c4e-b433-23a786f742fc\",\"executionStartDate\":\"2018-11-10T2200\",\"executionEndDate\":null,\"authoredOn\":\"2018-10-31T0700\",\"lastModified\":\"2018-10-31T07:00:00\",\"owner\":\"demouser\",\"note\":[{\"authorString\":\"demouser\",\"time\":\"2018-01-01T0800\",\"text\":\"This should be assigned to patrick.\"}],\"serverVersion\":0}";

@Test
public void testDeserialize() {
Expand All @@ -31,7 +32,7 @@ public void testDeserialize() {
assertEquals("2018_IRS-3734{", task.getGroupIdentifier());
assertEquals(TaskStatus.READY, task.getStatus());
assertEquals("Not Visited", task.getBusinessStatus());
assertEquals(3, task.getPriority());
assertEquals(TaskPriority.ASAP, task.getPriority());
assertEquals("IRS", task.getCode());
assertEquals("Spray House", task.getDescription());
assertEquals("IRS Visit", task.getFocus());
Expand Down

0 comments on commit 95dc28c

Please sign in to comment.