Android Open Source - openhds-tablet Supervisor 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;
/*ww w  .ja va  2 s.  co m*/
import org.openhds.mobile.R;
import org.openhds.mobile.database.DatabaseAdapter;
import org.openhds.mobile.task.AbstractHttpTask.RequestContext;
import org.openhds.mobile.task.AuthenticateTask;
import org.openhds.mobile.task.SupervisorLoginTask;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class SupervisorLoginActivity extends AbstractActivity {

  private TextView userTxt;
  private TextView passTxt;
  private DatabaseAdapter store;

  private static final int PROGRESS_DIALOG = 0;
  private static final int DIALOG_BAD_AUTH = 1;
  private static final int DIALOG_NEW_USER = 2;
  private static final int DIALOG_CREATED_USER = 4;
  private static final int DIALOG_CONNECTION_ERROR = 8;
  private static final int DIALOG_ERROR_USER = 16;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.supervisor_login);

    //getApplicationContext().deleteDatabase("form_submission");

    Button loginBtn = (Button) findViewById(R.id.login_btn);
    userTxt = (TextView) findViewById(R.id.user_txt);
    passTxt = (TextView) findViewById(R.id.password_txt);
    loginBtn.setOnClickListener(new OnClickListener() {
      public void onClick(View arg0) {
        if (!isValidated()) {
          return;
        }
        showProgressDialog();
      }
    });
  }

  @Override
  protected Dialog onCreateDialog(int id) {
    Dialog dialog;
    switch (id) {
    case DIALOG_BAD_AUTH:
      dialog = buildFailedDialog(getString(R.string.sprvlogin_bad_auth));
      break;
    case PROGRESS_DIALOG:
      dialog = buildProgressDialog();
      break;
    case DIALOG_CREATED_USER:
      dialog = buildSuccessDialog(getString(R.string.sprvlogin_created_user));
      break;
    case DIALOG_NEW_USER:
      dialog = buildNewUserDialog();
      break;
    case DIALOG_CONNECTION_ERROR:
      dialog = buildFailedDialog(getString(R.string.sprvlogin_connection_error));
      break;
    case DIALOG_ERROR_USER:
      dialog = buildFailedDialog(getString(R.string.sprvlogin_error_user));
      break;
    default:
      dialog = null;
    }

    return dialog;
  }

  private Dialog buildNewUserDialog() {
    return buildGenericOkDialog(getString(R.string.sprvlogin_user_notrecon),
        getString(R.string.sprvlogin_authenticate_with_server))
        .setPositiveButton(getString(R.string.yes_lbl),
            new DialogInterface.OnClickListener() {
              public void onClick(DialogInterface dialog,
                  int which) {
                dialog.dismiss();
                showDialog(PROGRESS_DIALOG);
                executeAuthenticateTask();
              }
            })
        .setNegativeButton(getString(R.string.no_lbl), new DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog, int which) {
          }
        }).create();
  }

  private void executeAuthenticateTask() {
    RequestContext requestCtx = new RequestContext();
    requestCtx.url(getServerUrl("/api/user/authenticate"))
        .user(getUsernameValue())
        .password(getPasswordValue());
    AuthenticateTask authenticateTask = new AuthenticateTask(requestCtx,
        new AuthenticateListener(), getPersistentStore());
    authenticateTask.execute();
  }

  private DatabaseAdapter getPersistentStore() {
    if (store == null) {
      store = new DatabaseAdapter(this);
    }

    return store;
  }

  private Dialog buildFailedDialog(String message) {
    return buildGenericOkDialog(getString(R.string.error_lbl), message).setPositiveButton("Ok",
        new DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog, int which) {
          }
        }).create();
  }

  private AlertDialog.Builder buildGenericOkDialog(String title,
      String message) {
    return new AlertDialog.Builder(this)
        .setIcon(android.R.drawable.ic_dialog_alert).setTitle(title)
        .setMessage(message);
  }

  private Dialog buildSuccessDialog(String message) {
    return buildGenericOkDialog(getString(R.string.success_lbl), message).setPositiveButton("Ok",
        new DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
            startMainFormActivity();
          }
        }).create();
  }

  private Dialog buildProgressDialog() {
    ProgressDialog dialog = new ProgressDialog(this);
    dialog.setCancelable(true);
    dialog.setTitle(getString(R.string.please_wait_lbl));
    dialog.setMessage(getString(R.string.trying_to_authenticate_lbl));
    dialog.setIndeterminate(true);

    return dialog;
  }

  protected void showProgressDialog() {
    showDialog(PROGRESS_DIALOG);
    DatabaseAdapter ps = new DatabaseAdapter(this);
    SupervisorLoginTask loginTask = new SupervisorLoginTask(ps, getUsernameValue(),
        getPasswordValue(), new LoginListener());
    loginTask.execute(false);
  }

  private void startMainFormActivity() {
    Intent intent = new Intent(getApplicationContext(), SupervisorMainActivity.class);
    intent.putExtra(USERNAME_PARAM, getUsernameValue());
    intent.putExtra(PASSWORD_PARAM, getPasswordValue());
    passTxt.setText("");
    startActivity(intent);
  }

  private String getUsernameValue() {
    return userTxt.getText().toString();
  }

  private String getPasswordValue() {
    return passTxt.getText().toString();
  }

  private boolean isValidated() {
    String user = getUsernameValue();
    if ("".equals(user.trim())) {
      Toast.makeText(getBaseContext(), getString(R.string.sprvlogin_enter_in_user),
          Toast.LENGTH_LONG).show();
      return false;
    }

    String password = getPasswordValue();
    if ("".equals(password.trim())) {
      Toast.makeText(getBaseContext(), getString(R.string.sprvlogin_enter_in_pass),
          Toast.LENGTH_LONG).show();
      return false;
    }

    return true;
  }

  private class LoginListener implements SupervisorLoginTask.Listener {
    public void onNewUser() {
      removeAndShow(DIALOG_NEW_USER);
    }

    @SuppressWarnings("deprecation")
    public void onAuthenticated() {
      removeDialog(PROGRESS_DIALOG);
      startMainFormActivity();
    }

    public void onBadAuthentication() {
      removeAndShow(DIALOG_BAD_AUTH);
    }

    public void onCreatedUser() {
      removeAndShow(DIALOG_CREATED_USER);
    }
  }

  private class AuthenticateListener implements AuthenticateTask.TaskListener {

    public void onFailedAuthentication() {
      removeAndShow(DIALOG_BAD_AUTH);
    }

    public void onConnectionError() {
      removeAndShow(DIALOG_CONNECTION_ERROR);
    }

    public void onConnectionTimeout() {
      removeAndShow(DIALOG_CONNECTION_ERROR);
    }

    public void onSuccess() {
      removeAndShow(DIALOG_CREATED_USER);
    }

    public void onFailure() {
      removeAndShow(DIALOG_ERROR_USER);
    }

    public void onNoContent() {
      
    }
  }

  private void removeAndShow(int toShow) {
    removeDialog(PROGRESS_DIALOG);
    showDialog(toShow);
  }
  
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    menu.add(getString(R.string.server_preferences_lbl));
    return true;
  }

  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
    startActivity(new Intent(getApplicationContext(),
        ServerPreferencesActivity.class));
    return true;
  }
}




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