Advertisement
truesdale

MainActivity.java

Sep 18th, 2019
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.00 KB | None | 0 0
  1. package com.smkn.firebasecrud;
  2.  
  3. import androidx.annotation.NonNull;
  4. import androidx.appcompat.app.AppCompatActivity;
  5.  
  6. import android.content.Intent;
  7. import android.os.Bundle;
  8. import android.text.TextUtils;
  9. import android.view.View;
  10. import android.widget.Button;
  11. import android.widget.EditText;
  12. import android.widget.ProgressBar;
  13. import android.widget.Toast;
  14.  
  15. import com.firebase.ui.auth.AuthUI;
  16. import com.google.android.gms.tasks.OnCompleteListener;
  17. import com.google.android.gms.tasks.OnSuccessListener;
  18. import com.google.android.gms.tasks.Task;
  19. import com.google.firebase.auth.FirebaseAuth;
  20. import com.google.firebase.database.DatabaseReference;
  21. import com.google.firebase.database.FirebaseDatabase;
  22. import com.smkn.firebasecrud.R;
  23.  
  24. import java.util.Collections;
  25.  
  26. public class MainActivity extends AppCompatActivity implements View.OnClickListener {
  27. //Deklarasi Variable
  28. private ProgressBar progressBar;
  29. private EditText NIM, Nama, Jurusan;
  30. private FirebaseAuth auth;
  31. private Button Logout, Simpan, Login, ShowData;
  32.  
  33. //Membuat Kode Permintaan
  34. private int RC_SIGN_IN = 1;
  35.  
  36. @Override
  37. protected void onCreate(Bundle savedInstanceState) {
  38. super.onCreate(savedInstanceState);
  39. setContentView(R.layout.activity_main);
  40. progressBar = findViewById(R.id.progress);
  41. progressBar.setVisibility(View.GONE);
  42.  
  43. //Inisialisasi ID (Button)
  44. Logout = findViewById(R.id.logout);
  45. Logout.setOnClickListener(this);
  46. Simpan = findViewById(R.id.save);
  47. Simpan.setOnClickListener(this);
  48. Login = findViewById(R.id.login);
  49. Login.setOnClickListener(this);
  50. ShowData = findViewById(R.id.showdata);
  51. ShowData.setOnClickListener(this);
  52.  
  53. auth = FirebaseAuth.getInstance(); //Mendapakan Instance Firebase Autentifikasi
  54.  
  55. //Inisialisasi ID (EditText)
  56. NIM = findViewById(R.id.nim);
  57. Nama = findViewById(R.id.nama);
  58. Jurusan = findViewById(R.id.jurusan);
  59.  
  60. /*
  61. * Mendeteksi apakah ada user yang masuk, Jika tidak, maka setiap komponen UI akan dinonaktifkan
  62. * Kecuali Tombol Login. Dan jika ada user yang terautentikasi, semua fungsi/komponen
  63. * didalam User Interface dapat digunakan, kecuali tombol Logout
  64. */
  65. if(auth.getCurrentUser() == null){
  66. defaultUI();
  67. }else {
  68. updateUI();
  69. }
  70. }
  71. //Tampilan Default pada Activity jika user belum terautentikasi
  72. private void defaultUI(){
  73. Logout.setEnabled(false);
  74. Simpan.setEnabled(false);
  75. ShowData.setEnabled(false);
  76. Login.setEnabled(true);
  77. NIM.setEnabled(false);
  78. Nama.setEnabled(false);
  79. Jurusan.setEnabled(false);
  80. }
  81. //Tampilan User Interface pada Activity setelah user Terautentikasi
  82. private void updateUI(){
  83. Logout.setEnabled(true);
  84. Simpan.setEnabled(true);
  85. Login.setEnabled(false);
  86. ShowData.setEnabled(true);
  87. NIM.setEnabled(true);
  88. Nama.setEnabled(true);
  89. Jurusan.setEnabled(true);
  90. progressBar.setVisibility(View.GONE);
  91. }
  92. // Mengecek apakah ada data yang kosong, akan digunakan pada Tutorial Selanjutnya
  93. private boolean isEmpty(String s){
  94. return TextUtils.isEmpty(s);
  95. }
  96. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  97. super.onActivityResult(requestCode, resultCode, data);
  98. // RC_SIGN_IN adalah kode permintaan yang Anda berikan ke startActivityForResult, saat memulai masuknya arus.
  99. if (requestCode == RC_SIGN_IN) {
  100. //Berhasil masuk
  101. if (resultCode == RESULT_OK) {
  102. Toast.makeText(MainActivity.this, "Login Berhasil", Toast.LENGTH_SHORT).show();
  103. updateUI();
  104. }else {
  105. progressBar.setVisibility(View.GONE);
  106. Toast.makeText(MainActivity.this, "Login Dibatalkan", Toast.LENGTH_SHORT).show();
  107. }
  108. }
  109. }
  110. @Override
  111. public void onClick(View v) {
  112. switch (v.getId()){
  113. case R.id.login:
  114. // Statement program untuk login/masuk
  115. startActivityForResult(AuthUI.getInstance()
  116. .createSignInIntentBuilder()
  117.  
  118. //Memilih Provider atau Method masuk yang akan kita gunakan
  119. .setAvailableProviders(Collections.singletonList(new AuthUI.IdpConfig.GoogleBuilder().build()))
  120. .setIsSmartLockEnabled(false)
  121. .build(),
  122. RC_SIGN_IN);
  123. progressBar.setVisibility(View.VISIBLE);
  124. break;
  125.  
  126. case R.id.save:
  127. /*
  128. Digunakan untuk mendapatkan referensi dan meyimpan data pada Database
  129. Akan dibahas pada Tutorial Berikutnya, Mengenai Fungsi Create
  130. */
  131.  
  132. //Mendapatkan UserID dari pengguna yang Terautentikasi
  133. String getUserID = auth.getCurrentUser().getUid();
  134. //Mendapatkan Instance dari Database
  135. FirebaseDatabase database = FirebaseDatabase.getInstance();
  136. DatabaseReference getReference;
  137.  
  138. //Menyimpan Data yang diinputkan User kedalam Variable
  139. String getNIM = NIM.getText().toString();
  140. String getNama = Nama.getText().toString();
  141. String getJurusan = Jurusan.getText().toString();
  142.  
  143. getReference = database.getReference(); // Mendapatkan Referensi dari Database
  144.  
  145. // Mengecek apakah ada data yang kosong
  146. if(isEmpty(getNIM) && isEmpty(getNama) && isEmpty(getJurusan)){
  147. //Jika Ada, maka akan menampilkan pesan singkan seperti berikut ini.
  148. Toast.makeText(MainActivity.this, "Data tidak boleh ada yang kosong", Toast.LENGTH_SHORT).show();
  149. }else {
  150. /*
  151. Jika Tidak, maka data dapat diproses dan meyimpannya pada Database
  152. Menyimpan data referensi pada Database berdasarkan User ID dari masing-masing Akun
  153. */
  154. getReference.child("Admin").child(getUserID).child("Mahasiswa").push()
  155. .setValue(new data_mahasiswa(getNIM, getNama, getJurusan))
  156. .addOnSuccessListener(this, new OnSuccessListener() {
  157. @Override
  158. public void onSuccess(Object o) {
  159. //Peristiwa ini terjadi saat user berhasil menyimpan datanya kedalam Database
  160. NIM.setText("");
  161. Nama.setText("");
  162. Jurusan.setText("");
  163. Toast.makeText(MainActivity.this, "Data Tersimpan", Toast.LENGTH_SHORT).show();
  164. }
  165. });
  166. }
  167. break;
  168. case R.id.logout:
  169. // Statement program untuk logout/keluar
  170. AuthUI.getInstance()
  171. .signOut(this)
  172. .addOnCompleteListener(new OnCompleteListener() {
  173. @Override
  174. public void onComplete(@NonNull Task task) {
  175. Toast.makeText(MainActivity.this, "Logout Berhasil", Toast.LENGTH_SHORT).show();
  176. finish();
  177. }
  178. });
  179. break;
  180. case R.id.showdata:
  181. // Digunakan untuk melihat data yang sudah tersimpan didalam Database
  182. // Akan digunakan pada Tutorial Berikutnya, mengenai penggunaan Fungsi Read
  183. startActivity(new Intent(MainActivity.this, MyListData.class));
  184. break;
  185. }
  186. }
  187. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement