· 6 years ago · Mar 25, 2020, 05:26 PM
1package com.unpam.crudfan.create;
2
3import android.app.AlertDialog;
4import android.app.ProgressDialog;
5import android.content.DialogInterface;
6import android.content.Intent;
7import android.database.Cursor;
8import android.graphics.Bitmap;
9import android.graphics.BitmapFactory;
10import android.net.Uri;
11import android.os.Bundle;
12import android.os.Environment;
13import android.provider.MediaStore;
14import android.util.Base64;
15import android.util.Log;
16import android.view.ContextThemeWrapper;
17import android.view.View;
18import android.widget.Button;
19import android.widget.EditText;
20import android.widget.ImageView;
21import android.widget.Toast;
22
23import androidx.appcompat.app.AppCompatActivity;
24
25import com.unpam.crudfan.R;
26import com.android.volley.AuthFailureError;
27import com.android.volley.DefaultRetryPolicy;
28import com.android.volley.NetworkError;
29import com.android.volley.NoConnectionError;
30import com.android.volley.ParseError;
31import com.android.volley.Request;
32import com.android.volley.RequestQueue;
33import com.android.volley.Response;
34import com.android.volley.ServerError;
35import com.android.volley.TimeoutError;
36import com.android.volley.VolleyError;
37import com.android.volley.toolbox.StringRequest;
38import com.android.volley.toolbox.Volley;
39import com.androidnetworking.AndroidNetworking;
40import com.androidnetworking.common.Priority;
41import com.androidnetworking.error.ANError;
42import com.androidnetworking.interfaces.JSONObjectRequestListener;
43import com.android.volley.RetryPolicy;
44
45import org.json.JSONException;
46import org.json.JSONObject;
47
48import java.io.ByteArrayOutputStream;
49import java.io.File;
50import java.io.FileNotFoundException;
51import java.io.FileOutputStream;
52import java.io.IOException;
53import java.io.OutputStream;
54import java.util.HashMap;
55import java.util.Map;
56
57public class CreateActivity extends AppCompatActivity implements View.OnClickListener {
58
59 public static final String KEY_User_Document1 = "doc1"; //key untuk document pertama
60 private static final String TAG = "CreateActivity"; //untuk melihat log
61 private EditText Nim, Nama, No_Hp, Jurusan; //pembuatan variable edit text
62 private ImageView IDPic; //pembuatan variable imageview
63 private Button btnSimpan; //pembuatan variable button
64 private String Document_img1 = "";
65
66 @Override
67 protected void onCreate(Bundle savedInstanceState) {
68 super.onCreate(savedInstanceState);
69 setContentView(R.layout.activity_create);
70
71 Log.d(TAG, "onCreate: inisialisasi"); //untuk log pada oncreate
72
73 Nim = findViewById(R.id.etNim); //inisialisasi value Nim
74 Nama = findViewById(R.id.etNama); //inisialisasi value Nama
75 No_Hp = findViewById(R.id.etHp); //inisialisasi value Kelas
76 Jurusan = findViewById(R.id.etJurusan); //inisialisasi value Jurusan
77 IDPic = findViewById(R.id.IdPic); //inisialisasi value image
78 btnSimpan = findViewById(R.id.btnTambah); //inisialisasi value btnSimpan
79
80 IDPic.setOnClickListener(new View.OnClickListener() {
81 @Override
82 public void onClick(View v) {
83 selectImage();
84 }
85 });
86
87 btnSimpan.setOnClickListener(this);
88
89 AndroidNetworking.initialize(getApplicationContext()); //inisialisasi library FAN
90 aksiButton(); //memanggil fungsi aksiButton()
91 }
92
93 private void selectImage() {
94 final CharSequence[] options = { "Take Photo", "Choose from Gallery", "Cancel" };
95 AlertDialog.Builder builder = new AlertDialog.Builder(CreateActivity.this);
96 builder.setTitle("Add Photo!");
97 builder.setItems(options, new DialogInterface.OnClickListener() {
98 @Override
99 public void onClick(DialogInterface dialog, int item) {
100 if (options[item].equals("Take Photo")) {
101 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
102 File f = new File(android.os.Environment.getExternalStorageDirectory(), "temp.jpg");
103 intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
104 if (intent.resolveActivity(getPackageManager()) != null) {
105 startActivityForResult(intent, 1); //baris error
106 }
107 } else if (options[item].equals("Choose from Gallery")) {
108 Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
109 if (intent.resolveActivity(getPackageManager()) != null) {
110 startActivityForResult(intent, 2);
111 }
112 } else if (options[item].equals("Cancel")) {
113 dialog.dismiss();
114 }
115 }
116 });
117 builder.show();
118 }
119
120 @Override
121 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
122 super.onActivityResult(requestCode, resultCode, data);
123 if (resultCode == RESULT_OK) {
124 if (requestCode == 1) {
125 File f = new File(Environment.getExternalStorageDirectory().toString());
126 Bundle extras = data.getExtras();
127 Bitmap imageBitmap = (Bitmap) extras.get("data");
128 IDPic.setImageBitmap(imageBitmap);
129 for (File temp : f.listFiles()) {
130 if (temp.getName().equals("temp.jpg")) {
131 f = temp;
132 break;
133 }
134 }
135 try {
136 Bitmap bitmap;
137 BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
138 bitmap = BitmapFactory.decodeFile(f.getAbsolutePath(), bitmapOptions);
139 bitmap = getResizedBitmap(bitmap, 400);
140 IDPic.setImageBitmap(bitmap);
141 BitMapToString(bitmap);
142 String path = android.os.Environment
143 .getExternalStorageDirectory()
144 + File.separator
145 + "Phoenix" + File.separator + "default";
146 f.delete();
147 OutputStream outFile = null;
148 File file = new File(path, String.valueOf(System.currentTimeMillis()) + ".jpg");
149 try {
150 outFile = new FileOutputStream(file);
151 bitmap.compress(Bitmap.CompressFormat.JPEG, 85, outFile);
152 outFile.flush();
153 outFile.close();
154 } catch (FileNotFoundException e) {
155 e.printStackTrace();
156 } catch (IOException e) {
157 e.printStackTrace();
158 } catch (Exception e) {
159 e.printStackTrace();
160 }
161 } catch (Exception e) {
162 e.printStackTrace();
163 }
164 } else if (requestCode == 2) {
165 Uri selectedImage = data.getData();
166 String[] filePath = { MediaStore.Images.Media.DATA };
167 Cursor c = getContentResolver().query(selectedImage,filePath, null, null, null);
168 c.moveToFirst();
169 int columnIndex = c.getColumnIndex(filePath[0]);
170 String picturePath = c.getString(columnIndex);
171 c.close();
172 Bitmap thumbnail = (BitmapFactory.decodeFile(picturePath));
173 thumbnail = getResizedBitmap(thumbnail, 400); //baris error
174 Log.w(getString(R.string.path_image), picturePath+"");
175 IDPic.setImageBitmap(thumbnail);
176 BitMapToString(thumbnail);
177 }
178 }
179 }
180
181 public String BitMapToString(Bitmap userImage1) {
182 ByteArrayOutputStream baos = new ByteArrayOutputStream();
183 userImage1.compress(Bitmap.CompressFormat.PNG, 60, baos);
184 byte[] b = baos.toByteArray();
185 Document_img1 = Base64.encodeToString(b, Base64.DEFAULT);
186 return Document_img1;
187 }
188
189 public Bitmap getResizedBitmap(Bitmap image, int maxSize) {
190 int width = image.getWidth(); //baris error
191 int height = image.getHeight();
192
193 float bitmapRatio = (float) width / (float) height;
194 if (bitmapRatio > 1) {
195 width = maxSize;
196 height = (int) (width * bitmapRatio);
197 } else {
198 height = maxSize;
199 width = (int) (height * bitmapRatio);
200 }
201 return Bitmap.createScaledBitmap(image, width, height, true);
202 }
203
204 private void SendDetail() {
205 String ConfiURL = "http://...";
206 final ProgressDialog loading = new ProgressDialog(CreateActivity.this);
207 loading.setMessage("Please Wait...");
208 loading.show();
209 loading.setCanceledOnTouchOutside(false);
210 RetryPolicy mRetryPolicy = new DefaultRetryPolicy(0, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
211 StringRequest stringRequest = new StringRequest(Request.Method.POST, ConfiURL,
212 new Response.Listener<String>() {
213 @Override
214 public void onResponse(String response) {
215 try {
216 loading.dismiss();
217 Log.d("JSON", response);
218 JSONObject eventObject = new JSONObject(response);
219 String error_status = eventObject.getString("error");
220 if (error_status.equals("true")) {
221 String error_msg = eventObject.getString("msg");
222 ContextThemeWrapper ctw = new ContextThemeWrapper(CreateActivity.this, R.style.Theme_AppCompat_Dialog_Alert);
223 final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(ctw);
224 alertDialogBuilder.setTitle("Vendor Detail");
225 alertDialogBuilder.setCancelable(false);
226 alertDialogBuilder.setMessage(error_msg);
227 alertDialogBuilder.setPositiveButton("ok", new DialogInterface.OnClickListener() {
228 @Override
229 public void onClick(DialogInterface dialog, int id) {
230
231 }
232 });
233 alertDialogBuilder.show();
234 } else {
235 String error_msg = eventObject.getString("msg");
236 ContextThemeWrapper ctw = new ContextThemeWrapper(CreateActivity.this, R.style.Theme_AppCompat_Dialog_Alert);
237 final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(ctw);
238 alertDialogBuilder.setTitle("Registration");
239 alertDialogBuilder.setCancelable(false);
240 alertDialogBuilder.setMessage(error_msg);
241 alertDialogBuilder.setIcon(R.drawable.ic_launcher_foreground);
242 alertDialogBuilder.setPositiveButton("ok", new DialogInterface.OnClickListener() {
243 @Override
244 public void onClick(DialogInterface dialog, int id) {
245 Intent intent = new Intent(CreateActivity.this, Log_In.class);
246 startActivity(intent);
247 finish();
248 }
249 });
250 alertDialogBuilder.show();
251 }
252 } catch (Exception e) {
253 Log.d("Tag", e.getMessage());
254 }
255 }
256 },
257 new Response.ErrorListener() {
258 @Override
259 public void onErrorResponse(VolleyError error) {
260 loading.dismiss();
261 if (error instanceof TimeoutError || error instanceof NoConnectionError) {
262 ContextThemeWrapper ctw = new ContextThemeWrapper(CreateActivity.this, R.style.Theme_AppCompat_Dialog_Alert);
263 final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(ctw);
264 alertDialogBuilder.setTitle("No Connection");
265 alertDialogBuilder.setMessage("Connection time out error please try again!");
266 alertDialogBuilder.setPositiveButton("ok", new DialogInterface.OnClickListener() {
267 @Override
268 public void onClick(DialogInterface dialog, int id) {
269
270 }
271 });
272 alertDialogBuilder.show();
273 } else if (error instanceof AuthFailureError) {
274 ContextThemeWrapper ctw = new ContextThemeWrapper(CreateActivity.this, R.style.Theme_AppCompat_Dialog_Alert);
275 final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(ctw);
276 alertDialogBuilder.setTitle("Connection Error");
277 alertDialogBuilder.setTitle("Authentication failure conncetion please try again!");
278 alertDialogBuilder.setPositiveButton("ok", new DialogInterface.OnClickListener() {
279 @Override
280 public void onClick(DialogInterface dialog, int id) {
281
282 }
283 });
284 alertDialogBuilder.show();
285 //TODO
286 } else if (error instanceof ServerError) {
287 ContextThemeWrapper ctw = new ContextThemeWrapper(CreateActivity.this, R.style.Theme_AppCompat_Dialog_Alert);
288 final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(ctw);
289 alertDialogBuilder.setTitle("Connection Error");
290 alertDialogBuilder.setMessage("Connection error please try again!");
291 alertDialogBuilder.setPositiveButton("ok", new DialogInterface.OnClickListener() {
292 @Override
293 public void onClick(DialogInterface dialog, int id) {
294
295 }
296 });
297 alertDialogBuilder.show();
298 //TODO
299 } else if (error instanceof NetworkError) {
300 ContextThemeWrapper ctw = new ContextThemeWrapper(CreateActivity.this, R.style.Theme_AppCompat_Dialog_Alert);
301 final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(ctw);
302 alertDialogBuilder.setTitle("Connection Error");
303 alertDialogBuilder.setMessage("Network connection error please try again!");
304 alertDialogBuilder.setPositiveButton("ok", new DialogInterface.OnClickListener() {
305 @Override
306 public void onClick(DialogInterface dialog, int id) {
307
308 }
309 });
310 alertDialogBuilder.show();
311 //TODO
312 } else if (error instanceof ParseError) {
313 ContextThemeWrapper ctw = new ContextThemeWrapper(CreateActivity.this, R.style.Theme_AppCompat_Dialog_Alert);
314 final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(ctw);
315 alertDialogBuilder.setTitle("Error");
316 alertDialogBuilder.setMessage("Parse error");
317 alertDialogBuilder.setPositiveButton("ok", new DialogInterface.OnClickListener() {
318 @Override
319 public void onClick(DialogInterface dialog, int id) {
320
321 }
322 });
323 alertDialogBuilder.show();
324 }
325 }
326 }){
327 protected Map<String, String> getParam() throws AuthFailureError {
328 Map<String, String> map = new HashMap<String, String>();
329 map.put(KEY_User_Document1,Document_img1);
330 return map;
331 }
332 };
333
334 RequestQueue requestQueue = Volley.newRequestQueue(this);
335 stringRequest.setRetryPolicy(mRetryPolicy);
336 requestQueue.add(stringRequest);
337 }
338
339 public void aksiButton() {
340 btnSimpan.setOnClickListener(new View.OnClickListener() {
341 @Override
342 public void onClick(View v) {
343 String nim = Nim.getText().toString(); //mengambil Value Nim menjadi string
344 String nama = Nama.getText().toString(); //mengambil Value Nama menjadi string
345 String no_hp = No_Hp.getText().toString(); //mengambil Value Kelas menjadi string
346 String jurusan = Jurusan.getText().toString(); //mengambil Value Jurusan menjadi string
347 if (nim.equals("") || nama.equals("") || no_hp.equals("") || jurusan.equals("")) {
348 //memunculkan toast saat form masih ada yang kosong
349 Toast.makeText(getApplicationContext(), "Semua data harus diisi", Toast.LENGTH_SHORT).show();
350 } else {
351 tambahData(nim,nama,no_hp,jurusan); //memanggil fungsi tambahData()
352
353 Nim.setText("");
354 Nama.setText("");
355 No_Hp.setText("");
356 Jurusan.setText("");
357 }
358 }
359 });
360 }
361
362 public void tambahData(String nim, String nama, String no_hp, String jurusan) {
363
364 final JSONObject object = new JSONObject();
365 try {
366 object.put("nim", nim);
367 object.put("nama", nama);
368 object.put("no_telp", no_hp);
369 object.put("jurusan", jurusan);
370 }catch (JSONException ex){
371 ex.printStackTrace();
372 }
373
374 //koneksi ke file mahasiswaadd(golang api), jika menggunakan localhost gunakan ip sesuai dengan ip kamu
375 AndroidNetworking.post("http://192.168.43.237:83/unpam/v1/mahasiswaadd/")
376 .addHeaders("Content-Type", "application/json")
377 .addHeaders("Accept", "application/json")
378 .addJSONObjectBody(object)
379 .setPriority(Priority.MEDIUM)
380 .build()
381 .getAsJSONObject(new JSONObjectRequestListener() {
382 @Override
383 public void onResponse(JSONObject response) {
384 //Handle Response
385 Log.d(TAG, "onResponse: " + response); //untuk log pada onresponse
386 //memunculkan Toast saat data berhasil ditambahkan
387 Toast.makeText(getApplicationContext(), "Data berhasil ditambahkan", Toast.LENGTH_SHORT).show();
388
389 try {
390 JSONObject results = response.getJSONObject("results");
391
392 Log.d("BALALALA", results.getString("nim"));
393 }catch (JSONException ex){
394 ex.printStackTrace();
395 }
396 }
397
398 @Override
399 public void onError(ANError anError) {
400 //Handle Error
401 Log.d(TAG, "onError: Failed" + anError); //untuk log pada onerror
402 Log.d(TAG, "onError: Failed" + String.valueOf(anError.getErrorCode())); //untuk log pada onerror
403 Log.d(TAG, "onError: Failed" + anError.getErrorBody()); //untuk log pada onerror
404 Log.d(TAG, "onError: Failed" + anError.getErrorDetail()); //untuk log pada onerror
405 }
406 });
407 }
408
409 @Override
410 public void onClick(View v) {
411 if (Document_img1.equals("") || Document_img1.equals(null)) {
412 ContextThemeWrapper ctw = new ContextThemeWrapper(CreateActivity.this, R.style.Theme_AppCompat_Dialog_Alert);
413 final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(ctw);
414 alertDialogBuilder.setTitle("Image Can't Empty");
415 alertDialogBuilder.setMessage("Image Can't empty please select any one image");
416 alertDialogBuilder.setPositiveButton("ok", new DialogInterface.OnClickListener() {
417 @Override
418 public void onClick(DialogInterface dialog, int id) {
419
420 }
421 });
422 alertDialogBuilder.show();
423 return;
424 } else {
425 if (AppStatus.getInstance(this).isOnline()) {
426 SendDetail();
427 } else {
428 Toast.makeText(this,"You are not online!!!!",Toast.LENGTH_LONG).show();
429 Log.v("Home", "############################You are not online!!!!");
430 }
431 }
432 }
433}