package org.sana.android.activity; import org.sana.R; import org.sana.android.app.Locales; import org.sana.android.fragment.PatientRunnerFragment; import org.sana.android.provider.Patients; import org.sana.android.provider.Subjects; import org.sana.net.Response; import android.content.Intent; import android.content.IntentFilter; import android.net.Uri; import android.os.Bundle; import android.support.v4.app.Fragment; import android.text.TextUtils; import android.util.Log; import android.view.Menu; /** * Activity for creating a new patient. Each question is wrapped in a container * which presents buttons for paging. * * @author Sana Development Team */ public class PatientRunner extends BaseRunner { public static final String TAG = PatientRunner.class.getSimpleName(); private PatientRunnerFragment mFragmentPatientRunner; /** * {@inheritDoc} */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.patient_runner_activity); } /** * {@inheritDoc} */ @Override public void onAttachFragment(Fragment fragment) { super.onAttachFragment(fragment); if (fragment.getClass() == PatientRunnerFragment.class) { //mFragmentPatientRunner = (PatientRunnerFragment) fragment; mRunnerFragment = (PatientRunnerFragment) fragment; mRunnerFragment.setProcedureListener(this); } } @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); Locales.updateLocale(this, getString(R.string.force_locale)); menu.add(0, OPTION_DISCARD_EXIT, 1, getString(R.string.menu_discard_exit)); menu.add(0, OPTION_VIEW_PAGES, 2, getString(R.string.menu_view_pages)); return true; } @Override public IntentFilter buildFilter() { Log.i(TAG, "buildFilter()"); IntentFilter filter = new IntentFilter(Response.RESPONSE); filter.addDataScheme(Subjects.CONTENT_URI.getScheme()); try { filter.addDataType(Subjects.CONTENT_ITEM_TYPE); filter.addDataType(Subjects.CONTENT_TYPE); } catch (Exception e) { } return filter; } @Override protected void handleBroadcastResultSuccess(Intent intent) { Log.i(TAG, "handleBroadcastResultSuccess(Intent)"); setUploading(false); hideUploadingDialog(); Log.d(TAG, "...broadcast=" + intent.toUri(Intent.URI_INTENT_SCHEME)); Response.Code code = Response.Code.get(intent.getIntExtra( Response.CODE, Response.Code.UNKNOWN.code)); switch (code) { case OK: onReadSuccess(intent); break; case CREATED: onCreateSuccess(intent); break; case UPDATED: onUpdateSuccess(intent); break; default: Log.d(TAG, "...unhandled response code"); } } @Override protected void handleBroadcastResultFailure(Intent intent) { Log.i(TAG, "handleBroadcastResultFailure(Intent)"); setUploading(false); hideUploadingDialog(); onReadFailure(intent); } public void onProcedureComplete(Intent data) { Log.i(TAG, "onProcedureComplete(): " + data); startService(data); setResult(RESULT_OK, data); finish(); } @Override public void onProcedureCancelled(String message) { Log.i(TAG, "onProcedureComplete(): " + message); setResult(RESULT_CANCELED, null); finish(); } protected void onCreateSuccess(Intent intent) { Log.i(TAG, "onCreateSuccess(Intent)"); ((PatientRunnerFragment) mRunnerFragment).onCreateSuccess(intent); } protected void onCreateFailure(Intent intent) { Log.i(TAG, "onCreateFailure(Intent)"); } protected void onReadSuccess(Intent intent) { Log.i(TAG, "onReadSuccess(Intent)"); try { Uri data = intent.getData(); String systemId = data.getQueryParameter(Patients.Contract.PATIENT_ID); Log.d(TAG, "...system_id=" + systemId); if (!TextUtils.isEmpty(systemId)) { ((PatientRunnerFragment) mRunnerFragment).onPatientLookupSuccess (systemId); } else { Log.w(TAG, "...directory code. do nothing"); } } catch (Exception e) { e.printStackTrace(); onReadFailure(intent); } } protected void onReadFailure(Intent intent) { Log.i(TAG, "onReadFailure(Intent)"); try { Uri data = intent.getData(); String systemId = data.getQueryParameter(Patients.Contract.PATIENT_ID); Log.d(TAG, "...system_id=" + systemId); if (!TextUtils.isEmpty(systemId)) { ((PatientRunnerFragment) mRunnerFragment).onPatientLookupFailure( systemId); } } catch (Exception e) { e.printStackTrace(); } } protected void onUpdateSuccess(Intent intent) { Log.i(TAG, "onUpdateSuccess(Intent)"); ((PatientRunnerFragment) mRunnerFragment).onCreateSuccess(intent); } protected void onUpdateFailure(Intent intent) { Log.i(TAG, "onUpdateFailure(Intent)"); } }