Android Open Source - openhds-tablet Field Worker Login Activity






From Project

Back to project page openhds-tablet.

License

The source code is released under:

OPENHDS PLATFORM OPENSOURCE LICENSE AGREEMENT Copyright (c) 2013 University of Southern Maine. All rights reserved. Redistribution and use in source and binary forms, with or without mo...

If you think the Android project openhds-tablet listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package org.openhds.mobile.activity;
/*from w w  w. j a va  2 s. c  o m*/
import org.openhds.mobile.Converter;
import org.openhds.mobile.Queries;
import org.openhds.mobile.R;
import org.openhds.mobile.activity.FieldWorkerLoginActivity.AuthenticateFieldWorker.Listener;
import org.openhds.mobile.listener.RetrieveFieldWorkersListener;
import org.openhds.mobile.model.FieldWorker;
import org.openhds.mobile.model.Result;
import org.openhds.mobile.task.FieldWorkerLoginTask;

import android.app.ActionBar;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.ContentResolver;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.os.AsyncTask.Status;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;

public class FieldWorkerLoginActivity extends Activity implements OnClickListener, RetrieveFieldWorkersListener {
  
    private static final int LOGIN_ACTIVITY = 1;

  private TextView extIdText;
  private TextView passwordText;
  private Button loginButton;
  private CheckBox registerChkBox;
  
  private ProgressDialog dialog;
  
    private FieldWorkerLoginTask loginTask = null;
  
  @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.fieldworker_login);
      
      initializeProgressDialog();
      
        extIdText = (TextView) findViewById(R.id.extIdText);
        passwordText = (TextView) findViewById(R.id.passwordText);
        
      loginButton = (Button) findViewById(R.id.loginBtn);
      loginButton.setOnClickListener(this);
      
      registerChkBox = (CheckBox) findViewById(R.id.registerChkBox);
      registerChkBox.setOnClickListener(this);
      
      ActionBar actionBar = getActionBar();
      actionBar.show();
    }
  
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {  
      //MenuInflater inflater = getMenuInflater();
      //inflater.inflate(R.menu.loginmenu, menu);
        return true;
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.configure_server:
                Intent i = new Intent(this, ServerPreferencesActivity.class);
                startActivity(i);
                return true;
        }
        return super.onOptionsItemSelected(item);
    }
    
  public void onClick(View view) {
    switch (view.getId()) {
    case R.id.registerChkBox: 
      if (registerChkBox.isChecked()) 
        loginButton.setText(getString(R.string.fwlogin_registerlbl));
      else 
        loginButton.setText(getString(R.string.fwlogin_loginlbl));
      break;
    case R.id.loginBtn: 
      
      String extId = extIdText.getText().toString();
      String password = passwordText.getText().toString();
      
      if (registerChkBox.isChecked()) {
        dialog.show();
        SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
        if (loginTask == null)
          loginTask = new FieldWorkerLoginTask(this, settings, this, dialog, extId, password, true);
        
          if (loginTask.getStatus() == Status.PENDING) {
                    loginTask.execute();
                }
      }
      else {
                dialog = ProgressDialog.show(this, getString(R.string.authenticating_lbl), getString(R.string.please_wait_lbl));
                new AuthenticateFieldWorker(getContentResolver(), extId, password, new Listener() {

                    public void onAuthenticated(FieldWorker fw) {
                        dialog.dismiss();
                        if (fw == null) {
                            Toast.makeText(getApplicationContext(), getString(R.string.bad_authentication),
                                    Toast.LENGTH_LONG).show();
                        } else {
                            startUpdateActivity(fw);
                        }
                    }

                }).execute();
      }
      break;
    }
  }
  
  public static class AuthenticateFieldWorker extends android.os.AsyncTask<Void, Void, org.openhds.mobile.model.FieldWorker> {

      private ContentResolver resolver;
        private String extId;
        private String password;
        private Listener listener;
      
      interface Listener {
          void onAuthenticated(FieldWorker fw);
      }

        public AuthenticateFieldWorker(ContentResolver resolver, String extId, String password, Listener listener) {
          this.resolver = resolver;
          this.extId = extId;
          this.password = password;
          this.listener = listener;
      }
      
        @Override
        protected FieldWorker doInBackground(Void... arg0) {
            if (Queries.hasFieldWorker(resolver, extId, password)) {
                Cursor cursor = Queries.getFieldWorkByExtId(resolver, extId);
                return Converter.toFieldWorker(cursor);
            } else {
                return null;
            }
        }
        
        @Override
        protected void onPostExecute(FieldWorker result) {
            listener.onAuthenticated(result);
        }
      
  }

    private void startUpdateActivity(FieldWorker fieldWorker) {
    Intent intent = new Intent(getApplicationContext(), UpdateActivity.class);
        intent.putExtra("fieldWorker", fieldWorker);
        passwordText.setText("");
        startActivity(intent);
  }
  
  @Override
  protected void onPause() {
    super.onPause();
    if (loginTask != null)
      loginTask.cancel(true);
  }
    
  @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
        super.onActivityResult(requestCode, resultCode, intent);
      initializeProgressDialog();

        if (resultCode == RESULT_CANCELED) {
            // request was canceled, so do nothing
            return;
        }

        switch (requestCode) {
            case LOGIN_ACTIVITY:
              break;
        }
    }
  
  private void initializeProgressDialog() {
        dialog = new ProgressDialog(this);
        dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        dialog.setTitle(getString(R.string.dialog_working_lbl));
        dialog.setMessage(getString(R.string.dialog_dont_interrupt_lbl));
        dialog.setCancelable(true);
        dialog.setOnCancelListener(new MyOnCancelListener());
  }

  public void retrieveFieldWorkersComplete(Result result) {
    switch (result) {
      case CREATED_FIELDWORKER_SUCCESS:
        Toast.makeText(getApplicationContext(),  getString(R.string.field_worker_created), Toast.LENGTH_SHORT).show();
        break;
      case BAD_AUTHENTICATION:
        Toast.makeText(getApplicationContext(),  getString(R.string.bad_authentication), Toast.LENGTH_SHORT).show();
        break;
      case BAD_XML:
        Toast.makeText(getApplicationContext(),  getString(R.string.bad_xml), Toast.LENGTH_SHORT).show();
        break;
      case FIELDWORKER_ALREADY_EXISTS:
        Toast.makeText(getApplicationContext(),  getString(R.string.field_worker_already_exists), Toast.LENGTH_SHORT).show();
        break;
      case UNABLE_TO_CONNECT:
        Toast.makeText(getApplicationContext(),  getString(R.string.unable_to_connect), Toast.LENGTH_SHORT).show();
    default:
      break;
    }
    dialog.dismiss();
    loginTask = null;
  }
  
  private class MyOnCancelListener implements OnCancelListener {
    public void onCancel(DialogInterface dialog) {
      if (loginTask != null)
        loginTask.cancel(true);
      finish();
      Toast.makeText(getApplicationContext(),  getString(R.string.retrieving_fieldworkers_interrupted), Toast.LENGTH_SHORT).show();
    }  
  }
}




Java Source Code List

org.openhds.mobile.BadXmlException.java
org.openhds.mobile.Converter.java
org.openhds.mobile.FieldWorkerProvider.java
org.openhds.mobile.FormsProviderAPI.java
org.openhds.mobile.InstanceProviderAPI.java
org.openhds.mobile.OpenHDS.java
org.openhds.mobile.Queries.java
org.openhds.mobile.activity.AbstractActivity.java
org.openhds.mobile.activity.FieldWorkerLoginActivity.java
org.openhds.mobile.activity.FilterActivity.java
org.openhds.mobile.activity.FilterFormActivity.java
org.openhds.mobile.activity.FilterLocationActivity.java
org.openhds.mobile.activity.FilterVisitActivity.java
org.openhds.mobile.activity.FormListActivity.java
org.openhds.mobile.activity.FormViewActivity.java
org.openhds.mobile.activity.OpeningActivity.java
org.openhds.mobile.activity.ServerPreferencesActivity.java
org.openhds.mobile.activity.ShowMapActivity.java
org.openhds.mobile.activity.SupervisorLoginActivity.java
org.openhds.mobile.activity.SupervisorMainActivity.java
org.openhds.mobile.activity.SyncDatabaseActivity.java
org.openhds.mobile.activity.UpdateActivity.java
org.openhds.mobile.adapter.AdapterContent.java
org.openhds.mobile.adapter.MapAdapter.java
org.openhds.mobile.database.DatabaseAdapter.java
org.openhds.mobile.database.DeathUpdate.java
org.openhds.mobile.database.ExternalInMigrationUpdate.java
org.openhds.mobile.database.HouseholdUpdate.java
org.openhds.mobile.database.InternalInMigrationUpdate.java
org.openhds.mobile.database.LocationUpdate.java
org.openhds.mobile.database.MembershipUpdate.java
org.openhds.mobile.database.OutMigrationUpdate.java
org.openhds.mobile.database.PregnancyOutcomeUpdate.java
org.openhds.mobile.database.RelationshipUpdate.java
org.openhds.mobile.database.Updatable.java
org.openhds.mobile.database.VisitUpdate.java
org.openhds.mobile.fragment.EventFragment.java
org.openhds.mobile.fragment.ProgressFragment.java
org.openhds.mobile.fragment.SelectionFilterFragment.java
org.openhds.mobile.fragment.SelectionFilterLocFragment.java
org.openhds.mobile.fragment.SelectionFormFragment.java
org.openhds.mobile.fragment.SelectionFragment.java
org.openhds.mobile.fragment.ValueFormFragment.java
org.openhds.mobile.fragment.ValueFragment.java
org.openhds.mobile.fragment.ValueLocFragment.java
org.openhds.mobile.listener.CollectEntitiesListener.java
org.openhds.mobile.listener.OdkFormLoadListener.java
org.openhds.mobile.listener.RetrieveFieldWorkersListener.java
org.openhds.mobile.listener.TaskCompleteListener.java
org.openhds.mobile.listener.ValueSelectedListener.java
org.openhds.mobile.model.Child.java
org.openhds.mobile.model.FieldWorker.java
org.openhds.mobile.model.FilledForm.java
org.openhds.mobile.model.FilledParams.java
org.openhds.mobile.model.FormFiller.java
org.openhds.mobile.model.FormSubmissionRecord.java
org.openhds.mobile.model.FormXmlReader.java
org.openhds.mobile.model.Form.java
org.openhds.mobile.model.HierarchySelection.java
org.openhds.mobile.model.Individual.java
org.openhds.mobile.model.LocationHierarchy.java
org.openhds.mobile.model.LocationVisit.java
org.openhds.mobile.model.Location.java
org.openhds.mobile.model.Membership.java
org.openhds.mobile.model.PregnancyObservationUpdate.java
org.openhds.mobile.model.PregnancyOutcome.java
org.openhds.mobile.model.Relationship.java
org.openhds.mobile.model.Result.java
org.openhds.mobile.model.Round.java
org.openhds.mobile.model.SocialGroup.java
org.openhds.mobile.model.StateMachine.java
org.openhds.mobile.model.Supervisor.java
org.openhds.mobile.model.UpdateEvent.java
org.openhds.mobile.model.UpdateParams.java
org.openhds.mobile.model.UpdateStatus.java
org.openhds.mobile.model.Visit.java
org.openhds.mobile.provider.OpenHDSProvider.java
org.openhds.mobile.task.AbstractHttpTask.java
org.openhds.mobile.task.AuthenticateTask.java
org.openhds.mobile.task.DownloadFormsTask.java
org.openhds.mobile.task.FieldWorkerLoginTask.java
org.openhds.mobile.task.OdkFormLoadTask.java
org.openhds.mobile.task.OdkGeneratedFormLoadTask.java
org.openhds.mobile.task.SupervisorLoginTask.java
org.openhds.mobile.task.SyncEntitiesTask.java
org.openhds.mobile.task.SyncFormsTask.java
org.openhds.mobile.utilities.L.java
org.openhds.mobile.utilities.Logg.java
org.openhds.mobile.utilities.UrlUtils.java