package nursulaeman.catetduit;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.database.Cursor;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import org.json.JSONException;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class SyncronizeActivity extends BaseActivity {
TextView tv_respond;
DatabaseHelper myDB;
Cursor incomes;
ProgressDialog progressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_syncronize);
this.setTitle("Syncronized");
myDB = new DatabaseHelper(this);
incomes = myDB.listIncome();
tv_respond = (TextView) findViewById(R.id.tv_respond);
Button btn_sync = (Button) findViewById(R.id.btn_Sync);
btn_sync.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
postApi();
// if (tv_respond.getText()!="" && progressDialog.isShowing())
// progressDialog.dismiss();
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
private void postApi() throws JSONException {
int counter = 0;
progressDialog = new ProgressDialog(SyncronizeActivity.this);
progressDialog.setTitle("Syncronize on Process");
progressDialog.setMessage("Loading ...");
progressDialog.setCancelable(false);
progressDialog.setProgress(0);
progressDialog.show();
counter++;
Integer current_status = (int) ((counter / (float) incomes.getColumnCount()) * 100);
progressDialog.setProgress(current_status);
Gson gson = new GsonBuilder()
.setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
.create();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://private-fc7f8-cateduit.apiary-mock.com/")
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
IncomeTransactionApi income_api = retrofit.create(IncomeTransactionApi.class);
for (incomes.moveToFirst(); !incomes.isLast(); incomes.moveToNext()) {
// POST
IncomeTransaction incometransaction = new IncomeTransaction(incomes.getInt(0),incomes.getString(1),incomes.getString(2));
Call<IncomeTransaction> call = income_api.saveIncomeTransaction(incometransaction);
call.enqueue(new Callback<IncomeTransaction>() {
@Override
public void onResponse(Call<IncomeTransaction> call, Response<IncomeTransaction> response) {
int status = response.code();
tv_respond.setText(String.valueOf(incomes.getPosition()));
// update to tmp
DatabaseHelper myDB1 = new DatabaseHelper(SyncronizeActivity.this);
myDB1.updateIncomex(String.valueOf(incomes.getInt(0)), String.valueOf(incomes.getPosition()));
if (status == 201) {
Toast.makeText(SyncronizeActivity.this, "Sync Successd", Toast.LENGTH_SHORT).show();
} else if (status == 400) {
Toast.makeText(SyncronizeActivity.this, "Sync Failed", Toast.LENGTH_SHORT).show();
}
if (incomes.getPosition()==Integer.parseInt(String.valueOf(tv_respond.getText()))){
if (progressDialog.isShowing())
progressDialog.dismiss();
}
}
@Override
public void onFailure(Call<IncomeTransaction> call, Throwable t) {
if (progressDialog.isShowing())
progressDialog.dismiss();
AlertDialog.Builder alert = new AlertDialog.Builder(SyncronizeActivity.this);
alert.setCancelable(false).setTitle("Syncronize").setMessage("fails synchronize")
.setPositiveButton("Skip", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(SyncronizeActivity.this, "Skip.", Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
})
.setNegativeButton("Retry", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
try {
postApi();
} catch (Throwable t) {
t.printStackTrace();
}
dialog.dismiss();
Toast.makeText(SyncronizeActivity.this, "Internet Disonnect", Toast.LENGTH_SHORT).show();
}
});
alert.show();
}
});
}
}
}Add a code snippet to your website: www.paste.org