Skip to content

Commit

Permalink
Refactor Sync Strategy To Single Value
Browse files Browse the repository at this point in the history
  • Loading branch information
ndegwamartin committed Jul 21, 2023
1 parent 7eb7cb2 commit 8a35175
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ public class OpenSRPSyncAccessDecision implements AccessDecision {
public static final String MATCHES_ANY_VALUE = "ANY_VALUE";
private static final Logger logger = LoggerFactory.getLogger(OpenSRPSyncAccessDecision.class);
private static final int LENGTH_OF_SEARCH_PARAM_AND_EQUALS = 5;
private final List<String> syncStrategy;
private final String syncStrategy;
private final String applicationId;
private final boolean accessGranted;

Expand All @@ -83,7 +83,7 @@ public OpenSRPSyncAccessDecision(
List<String> locationIds,
List<String> careTeamIds,
List<String> organizationIds,
List<String> syncStrategy) {
String syncStrategy) {
this.applicationId = applicationId;
this.accessGranted = accessGranted;
this.careTeamIds = careTeamIds;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@
package com.google.fhir.gateway.plugin;

import static com.google.fhir.gateway.ProxyConstants.SYNC_STRATEGY;
import static org.smartregister.utils.Constants.LOCATION;
import static org.smartregister.utils.Constants.ORGANIZATION;

import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.model.api.IQueryParameterType;
Expand All @@ -33,11 +31,11 @@
import com.google.fhir.gateway.interfaces.*;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import java.util.*;
import java.util.stream.Collectors;
import javax.inject.Named;
import org.apache.commons.lang3.StringUtils;
import org.hl7.fhir.r4.model.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand All @@ -56,7 +54,7 @@ public class PermissionAccessChecker implements AccessChecker {

private final List<String> organizationIds;

private final List<String> syncStrategy;
private final String syncStrategy;

private PermissionAccessChecker(
List<String> userRoles,
Expand All @@ -65,7 +63,7 @@ private PermissionAccessChecker(
List<String> careTeamIds,
List<String> locationIds,
List<String> organizationIds,
List<String> syncStrategy) {
String syncStrategy) {
Preconditions.checkNotNull(userRoles);
Preconditions.checkNotNull(resourceFinder);
Preconditions.checkNotNull(applicationId);
Expand Down Expand Up @@ -257,21 +255,18 @@ private Binary findApplicationConfigBinaryResource(String binaryResourceId) {
return binary;
}

private List<String> findSyncStrategy(Binary binary) {
private String findSyncStrategy(Binary binary) {
byte[] bytes =
binary != null && binary.getDataElement() != null
? Base64.getDecoder().decode(binary.getDataElement().getValueAsString())
: null;
List<String> syncStrategy = new ArrayList<>();
String syncStrategy = Constants.EMPTY_STRING;
if (bytes != null) {
String json = new String(bytes);
JsonObject jsonObject = new Gson().fromJson(json, JsonObject.class);
JsonArray jsonArray = jsonObject.getAsJsonArray(SYNC_STRATEGY);
if (jsonArray != null) {
for (JsonElement jsonElement : jsonArray) {
syncStrategy.add(jsonElement.getAsString());
}
}
if (jsonArray != null && !jsonArray.isEmpty())
syncStrategy = jsonArray.get(0).getAsString();
}
return syncStrategy;
}
Expand Down Expand Up @@ -322,16 +317,16 @@ public AccessChecker create(
Composition composition = readCompositionResource(applicationId);
String binaryResourceReference = getBinaryResourceReference(composition);
Binary binary = findApplicationConfigBinaryResource(binaryResourceReference);
List<String> syncStrategy = findSyncStrategy(binary);
String syncStrategy = findSyncStrategy(binary);
PractitionerDetails practitionerDetails = readPractitionerDetails(jwt.getSubject());
List<CareTeam> careTeams;
List<Organization> organizations;
List<Location> locations;
List<String> careTeamIds = new ArrayList<>();
List<String> organizationIds = new ArrayList<>();
List<String> locationIds = new ArrayList<>();
if (syncStrategy.size() > 0) {
if (syncStrategy.contains(Constants.CARE_TEAM)) {
if (StringUtils.isNotBlank(syncStrategy)) {
if (syncStrategy.equals(Constants.CARE_TEAM)) {
careTeams =
practitionerDetails != null
&& practitionerDetails.getFhirPractitionerDetails() != null
Expand All @@ -342,7 +337,7 @@ public AccessChecker create(
careTeamIds.add(careTeam.getIdElement().getIdPart());
}
}
} else if (syncStrategy.contains(ORGANIZATION)) {
} else if (syncStrategy.equals(Constants.ORGANIZATION)) {
organizations =
practitionerDetails != null
&& practitionerDetails.getFhirPractitionerDetails() != null
Expand All @@ -353,7 +348,7 @@ public AccessChecker create(
organizationIds.add(organization.getIdElement().getIdPart());
}
}
} else if (syncStrategy.contains(LOCATION)) {
} else if (syncStrategy.equals(Constants.LOCATION)) {
locations =
practitionerDetails != null
&& practitionerDetails.getFhirPractitionerDetails() != null
Expand Down

0 comments on commit 8a35175

Please sign in to comment.