package org.sana.android.net.test;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Collection;
import java.util.Collections;
import java.util.Locale;
import java.util.Map;
import java.util.HashMap;
import java.net.URI;
import org.sana.R;
import org.sana.android.Constants;
import org.sana.android.content.Uris;
import org.sana.android.net.MDSInterface2;
import org.sana.android.provider.Concepts;
import org.sana.android.provider.EncounterTasks;
import org.sana.android.provider.Procedures;
import org.sana.android.provider.Subjects;
import org.sana.android.provider.Tasks;
import org.sana.api.task.EncounterTask;
import org.sana.api.IModel;
import org.sana.core.Concept;
import org.sana.core.Location;
import org.sana.core.Patient;
import org.sana.core.Procedure;
import org.sana.net.Response;
import org.sana.net.http.handler.ConceptResponseHandler;
import org.sana.net.http.handler.EncounterResponseHandler;
import org.sana.net.http.handler.EncounterTaskResponseHandler;
import org.sana.net.http.handler.LocationResponseHandler;
import org.sana.net.http.handler.PatientResponseHandler;
import org.sana.net.http.handler.ProcedureResponseHandler;
import android.content.Context;
import android.content.SharedPreferences;
import android.net.Uri;
import android.preference.PreferenceManager;
import android.test.AndroidTestCase;
import android.util.Log;
public class MDS2InterfaceTest extends AndroidTestCase {
String username = "test_sa";
String password = "t3st";
Uri[] uris = new Uri[]{};
Context mContext;
String scheme, host, rootPath;
int port;
public void setUp(){
mContext = this.getContext();
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mContext);
host = preferences.getString(Constants.PREFERENCE_MDS_URL, host);
// Realistically should never use http
boolean useSecure = preferences.getBoolean(
Constants.PREFERENCE_SECURE_TRANSMISSION, true);
scheme = (useSecure)? "https": "http";
host = mContext.getString(R.string.host_mds);
port = 443;
rootPath = mContext.getString(R.string.path_root);
}
static final SimpleDateFormat sdf = new SimpleDateFormat(IModel.DATE_FORMAT,
Locale.US);
public String timeStamp(){
Date now = new Date();
String nowStr = sdf.format(now);
return nowStr;
}
public void testLocationGet(){
Uri target = Uri.parse("content://org.sana/core/location");
Collection<Location> objs = Collections.emptyList();
try {
URI uri = Uris.iriToURI(target , scheme, host, port, rootPath );
Log.d("MDS2InterfaceTest", "GET: " + uri);
LocationResponseHandler handler = new LocationResponseHandler();
Response<Collection<Location>> response = MDSInterface2.apiGet(uri, username,password,handler);
Log.i("MDS2InterfaceTest", "LOCATIONS " + response);
objs = response.message;
for(Location obj:objs){
Log.i("MDS2InterfaceTest", obj.name );
}
} catch (Exception e) {
e.printStackTrace();
}
assertTrue(objs.size() > 0);
}
public void testEncounterTaskGet(){
Collection<EncounterTask> objs = Collections.emptyList();
Uri target = EncounterTasks.CONTENT_URI;
try {
URI uri = Uris.iriToURI(target , scheme, host, port, rootPath );
Log.d("MDS2InterfaceTest", "GET: " + uri);
EncounterTaskResponseHandler handler = new EncounterTaskResponseHandler();
Response<Collection<EncounterTask>> response = MDSInterface2.apiGet(uri,username,password,handler);
Log.i("MDS2InterfaceTest", "TASKS " + response);
objs = response.message;
for(EncounterTask task:objs){
Log.d("MDS2InterfaceTest", "<EncounterTask " + task.status.current +" " + task.assigned_to.getUsername() + " >");
}
} catch (Exception e) {
e.printStackTrace();
}
assertTrue(objs.size() > 0);
}
public void testEncounterTaskUpdate(){
Collection<EncounterTask> objs = Collections.emptyList();
String uuid = "e56b3f06-329a-4be8-869e-0226c708221e";
String now = timeStamp();
Log.d("MDS2InterfaceTest", "now = " + now);
Uri target = Uris.withAppendedUuid(EncounterTasks.CONTENT_URI, uuid);
try {
URI uri = MDSInterface2.iriToURI(mContext,target);
//Uris.iriToURI(target , scheme, host, port, rootPath );
Map<String,String> form = new HashMap<String,String>();
//form.put("uuid",uuid);
form.put("status", "2");
form.put(Tasks.Contract.COMPLETED, now);
Log.d("MDS2InterfaceTest", "PUT: " + uri);
EncounterTaskResponseHandler handler = new EncounterTaskResponseHandler();
Response<Collection<EncounterTask>> response = MDSInterface2.apiPost(uri,username,password,form,handler);
Log.i("MDS2InterfaceTest", "TASKS " + response);
objs = response.message;
for(EncounterTask task:objs){
Log.d("MDS2InterfaceTest", task.toString());
Log.d("MDS2InterfaceTest", "..completed" + task.completed);
}
} catch (Exception e) {
e.printStackTrace();
}
assertTrue(objs.size() == 1);
}
public void testConceptGet(){
ConceptResponseHandler handler = new ConceptResponseHandler();
Collection<Concept> objs = Collections.emptyList();
Uri target = Concepts.CONTENT_URI;
try {
URI uri = Uris.iriToURI(target , scheme, host, port, rootPath );
Response<Collection<Concept>> response = MDSInterface2.apiGet(uri,username,password,handler);
Log.i("MDS2InterfaceTest", "CONCEPTS" + response);
objs = response.message;
for(Concept obj:objs){
Log.i("MDS2InterfaceTest", "<Concept "+ obj.name+">" );
}
} catch (Exception e) {
e.printStackTrace();
}
assertTrue(objs.size() > 0);
}
public void testPatientGet(){
Uri target = Subjects.CONTENT_URI;
Log.d("MDS2InterfaceTest", "GET: " + target);
PatientResponseHandler handler = new PatientResponseHandler();
Collection<Patient> objs = Collections.emptyList();
try {
URI uri = Uris.iriToURI(target , scheme, host, port, rootPath );
Response<Collection<Patient>> response = MDSInterface2.apiGet(uri, username,password,handler);
Log.i("MDS2InterfaceTest", "PATIENTS" + response);
objs = response.message;
for(Patient obj:objs){
Log.i("MDS2InterfaceTest", "<Patient " + obj.system_id +" >");
}
} catch (Exception e) {
e.printStackTrace();
}
assertTrue(objs.size() > 0);
}
public void testProcedureGet(){
Uri target = Procedures.CONTENT_URI;
Log.d("MDS2InterfaceTest", "GET: " + target);
ProcedureResponseHandler handler = new ProcedureResponseHandler();
Response<Collection<Procedure>> response = null;
Collection<Procedure> objs = Collections.emptyList();
try {
URI uri = Uris.iriToURI(target , scheme, host, port, rootPath );
response = MDSInterface2.apiGet(uri, username,password,handler);
Log.i("MDS2InterfaceTest", "CONCEPTS" + response);
objs = response.message;
for(Procedure obj:objs){
Log.i("MDS2InterfaceTest", "<Procedure "+obj.title +" >" );
}
} catch (Exception e) {
e.printStackTrace();
}
assertTrue(objs.size() > 0);
}
}