Advertisement
olalab

LoginActivity

Sep 11th, 2017
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.84 KB | None | 0 0
  1. package com.demo.parking.ui;
  2.  
  3. import android.content.DialogInterface;
  4. import android.content.Intent;
  5. import android.os.Bundle;
  6. import android.support.v7.app.AlertDialog;
  7. import android.support.v7.app.AppCompatActivity;
  8. import android.view.View;
  9. import android.widget.Button;
  10. import android.widget.EditText;
  11. import android.widget.Toast;
  12.  
  13. import com.demo.parking.ApiHelper;
  14. import com.demo.parking.Constants;
  15. import com.demo.parking.R;
  16. import com.demo.parking.model.User;
  17. import com.demo.parking.util.PrefsUtil;
  18.  
  19. import org.json.JSONException;
  20. import org.json.JSONObject;
  21.  
  22. import java.io.IOException;
  23.  
  24. import okhttp3.ResponseBody;
  25. import retrofit2.Call;
  26. import retrofit2.Callback;
  27. import retrofit2.Response;
  28. import retrofit2.Retrofit;
  29. import retrofit2.converter.gson.GsonConverterFactory;
  30.  
  31. public class LoginActivity extends AppCompatActivity {
  32.  
  33. private EditText inputEmail;
  34. private EditText inputPassword;
  35. private Button btnLogin;
  36. private ProgressBarWidget progressBarWidget;
  37.  
  38. @Override
  39. protected void onCreate(Bundle savedInstanceState) {
  40. super.onCreate(savedInstanceState);
  41. setContentView(R.layout.activity_login);
  42.  
  43. inputEmail = (EditText) findViewById(R.id.inputEmail);
  44. inputPassword = (EditText) findViewById(R.id.inputPassword);
  45. btnLogin = (Button) findViewById(R.id.btnLogin);
  46. progressBarWidget = new ProgressBarWidget(LoginActivity.this);
  47.  
  48. btnLogin.setOnClickListener(new View.OnClickListener() {
  49.  
  50. @Override
  51. public void onClick(View v) {
  52. if (validLoginEntries()) {
  53. login(inputEmail.getText().toString(), inputPassword.getText().toString());
  54. }
  55. }
  56. });
  57. }
  58.  
  59. public void gotoRegistration(View v) {
  60. Intent i = new Intent(this, RegistrationActivity.class);
  61. startActivity(i);
  62. finish();
  63. }
  64.  
  65. public boolean validLoginEntries() {
  66. boolean valid = true;
  67.  
  68. String email = inputEmail.getText().toString();
  69. String password = inputPassword.getText().toString();
  70.  
  71. if (email.isEmpty() || !android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
  72. inputEmail.setError(getString(R.string.text_invalid_email));
  73. valid = false;
  74. } else {
  75. inputEmail.setError(null);
  76. }
  77.  
  78. if (password.isEmpty() || password.length() < 4 || password.length() > 10) {
  79. inputPassword.setError(getString(R.string.text_invalid_password));
  80. valid = false;
  81. } else {
  82. inputPassword.setError(null);
  83. }
  84.  
  85. return valid;
  86. }
  87.  
  88. private void login(String email, String password) {
  89. // show progress bar
  90. progressBarWidget.show();
  91. Retrofit retrofit = new Retrofit.Builder()
  92. .baseUrl(Constants.API_BASE_URL)
  93. .addConverterFactory(GsonConverterFactory.create())
  94. .build();
  95.  
  96. ApiHelper helper = retrofit.create(ApiHelper.class);
  97. Call<ResponseBody> call = helper.login(email, password);
  98.  
  99. call.enqueue(new Callback<ResponseBody>() {
  100. @Override
  101. public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
  102. try {
  103. final String body = response.body().string();
  104. JSONObject loginResponse = new JSONObject(body);
  105. if (loginResponse.has("success") && loginResponse.getInt("success") == 200) {
  106.  
  107. // create user object
  108. User user = new User();
  109. user.setSessionID(loginResponse.getString("session_id"));
  110. user.setUsername(loginResponse.getString("username"));
  111.  
  112. // save session_id into SharedPreferences
  113. PrefsUtil.getInstance(getApplicationContext()).setSessionID(user.getSessionID());
  114.  
  115. // show toast
  116. Toast.makeText(getApplicationContext(), R.string.text_success_alert_login_message, Toast.LENGTH_LONG);
  117.  
  118. // redirect back to main screen
  119. Intent i = new Intent(getApplicationContext(), MainActivity.class);
  120. Bundle bundle = new Bundle();
  121. bundle.putParcelable(Constants.BUNDLE_USER, user);
  122. i.putExtras(bundle);
  123. startActivity(i);
  124. finish();
  125. } else {
  126. showErrorDialog(getString(R.string.text_error_alert_title), loginResponse.getString("message"));
  127. }
  128. } catch (IOException e) {
  129. e.printStackTrace();
  130. } catch (JSONException e) {
  131. e.printStackTrace();
  132. }
  133. }
  134.  
  135. @Override
  136. public void onFailure(Call<ResponseBody> call, Throwable t) {
  137. t.printStackTrace();
  138. showErrorDialog(getString(R.string.text_error_alert_title), getString(R.string.text_error_alert_login_message));
  139. }
  140. });
  141. }
  142.  
  143. private void showErrorDialog(String title, String message) {
  144. // hide progress bar
  145. progressBarWidget.hide();
  146.  
  147. AlertDialog.Builder dialog = new AlertDialog.Builder(LoginActivity.this);
  148. dialog.setCancelable(false);
  149. dialog.setTitle(title);
  150. dialog.setMessage(message);
  151. dialog.setPositiveButton(getString(R.string.button_ok), new DialogInterface.OnClickListener() {
  152. @Override
  153. public void onClick(DialogInterface dialog, int id) {
  154. dialog.dismiss();
  155. }
  156. });
  157.  
  158. final AlertDialog alert = dialog.create();
  159. alert.show();
  160. }
  161.  
  162. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement