package edu.gatech.i3l.fhir.to;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.Validate;
import org.springframework.beans.factory.annotation.Required;
import ca.uhn.fhir.context.FhirVersionEnum;
import ca.uhn.fhir.util.ITestingUiClientFactory;
public class TesterConfig {
private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(TesterConfig.class);
public static final String SYSPROP_FORCE_SERVERS = "edu.gatech.i3l.fhir.to.TesterConfig_SYSPROP_FORCE_SERVERS";
private ITestingUiClientFactory myClientFactory;
private LinkedHashMap<String, FhirVersionEnum> myIdToFhirVersion = new LinkedHashMap<String, FhirVersionEnum>();
private LinkedHashMap<String, String> myIdToServerBase = new LinkedHashMap<String, String>();
private LinkedHashMap<String, String> myIdToServerName = new LinkedHashMap<String, String>();
public ITestingUiClientFactory getClientFactory() {
return myClientFactory;
}
public boolean getDebugTemplatesMode() {
return true;
}
public LinkedHashMap<String, FhirVersionEnum> getIdToFhirVersion() {
return myIdToFhirVersion;
}
public LinkedHashMap<String, String> getIdToServerBase() {
return myIdToServerBase;
}
public LinkedHashMap<String, String> getIdToServerName() {
return myIdToServerName;
}
public void setClientFactory(ITestingUiClientFactory theClientFactory) {
myClientFactory = theClientFactory;
}
@Required
public void setServers(List<String> theServers) {
List<String> servers = theServers;
// This is mostly for unit tests
String force = System.getProperty(SYSPROP_FORCE_SERVERS);
if (StringUtils.isNotBlank(force)) {
ourLog.warn("Forcing server confirguration because of system property: {}", force);
servers = Collections.singletonList(force);
}
for (String nextRaw : servers) {
String[] nextSplit = nextRaw.split(",");
if (nextSplit.length == 3) {
Validate.notBlank(nextSplit[0], "theId can not be blank");
Validate.notBlank(nextSplit[1], "theDisplayName can not be blank");
Validate.notBlank(nextSplit[2], "theServerBase can not be blank");
myIdToServerName.put(nextSplit[0].trim(), nextSplit[1].trim());
myIdToServerBase.put(nextSplit[0].trim(), nextSplit[2].trim());
myIdToFhirVersion.put(nextSplit[0].trim(), FhirVersionEnum.DSTU1);
} else {
Validate.notBlank(nextSplit[0], "theId can not be blank");
Validate.notBlank(nextSplit[1], "theVersion can not be blank");
Validate.notBlank(nextSplit[2], "theDisplayName can not be blank");
Validate.notBlank(nextSplit[3], "theServerBase can not be blank");
myIdToServerName.put(nextSplit[0].trim(), nextSplit[2].trim());
myIdToServerBase.put(nextSplit[0].trim(), nextSplit[3].trim());
myIdToFhirVersion.put(nextSplit[0].trim(), FhirVersionEnum.valueOf(nextSplit[1].trim().toUpperCase()));
}
}
}
}