mirror of
https://github.com/freeedcom/ai-codereviewer.git
synced 2025-06-30 21:04:16 +00:00
add project adins
This commit is contained in:
parent
ad06ac5505
commit
f8f85d679d
5299 changed files with 625430 additions and 0 deletions
|
@ -0,0 +1,734 @@
|
|||
package com.services;
|
||||
|
||||
import android.app.Notification;
|
||||
import android.app.NotificationChannel;
|
||||
import android.app.NotificationManager;
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.util.Log;
|
||||
|
||||
import com.adins.mss.base.Backup;
|
||||
import com.adins.mss.base.GlobalData;
|
||||
import com.adins.mss.base.NewMainActivity;
|
||||
import com.adins.mss.base.R;
|
||||
import com.adins.mss.base.crashlytics.FireCrash;
|
||||
import com.adins.mss.base.dynamicform.JsonRequestSubmitTask;
|
||||
import com.adins.mss.base.dynamicform.JsonResponseSubmitTask;
|
||||
import com.adins.mss.base.dynamicform.TaskManager;
|
||||
import com.adins.mss.base.timeline.NewTimelineFragment;
|
||||
import com.adins.mss.base.timeline.TimelineManager;
|
||||
import com.adins.mss.base.todolist.ToDoList;
|
||||
import com.adins.mss.base.todolist.form.StatusTabFragment;
|
||||
import com.adins.mss.base.util.GsonHelper;
|
||||
import com.adins.mss.base.util.Utility;
|
||||
import com.adins.mss.constant.Global;
|
||||
import com.adins.mss.dao.GeneralParameter;
|
||||
import com.adins.mss.dao.TaskD;
|
||||
import com.adins.mss.dao.TaskH;
|
||||
import com.adins.mss.foundation.camerainapp.helper.Logger;
|
||||
import com.adins.mss.foundation.db.dataaccess.GeneralParameterDataAccess;
|
||||
import com.adins.mss.foundation.db.dataaccess.PlanTaskDataAccess;
|
||||
import com.adins.mss.foundation.db.dataaccess.TaskDDataAccess;
|
||||
import com.adins.mss.foundation.db.dataaccess.TaskHDataAccess;
|
||||
import com.adins.mss.foundation.formatter.Tool;
|
||||
import com.adins.mss.foundation.http.HttpConnectionResult;
|
||||
import com.adins.mss.foundation.http.HttpCryptedConnection;
|
||||
import com.google.firebase.perf.FirebasePerformance;
|
||||
import com.google.firebase.perf.metrics.HttpMetric;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
public class AutoSendImageThread extends Thread {
|
||||
private static String TAG = "AUTOSENDIMAGE";
|
||||
private static int countFalseSent = 0;
|
||||
public Notification.BigTextStyle inboxStyle;
|
||||
int totalPending = 0;
|
||||
int totalimage = 0;
|
||||
private Context context;
|
||||
private int interval;
|
||||
private volatile boolean keepRunning = true;
|
||||
private volatile boolean isWait = false;
|
||||
private String taskId;
|
||||
private NotificationManager mNotifyManager;
|
||||
private Notification.Builder mBuilder;
|
||||
private String errMessage = "";
|
||||
public static final String NOTIFICATION_CHANNEL_ID = "10001";
|
||||
private static List listTaskUploadManual = new ArrayList<>();
|
||||
private final Object threadMonitor;
|
||||
|
||||
public AutoSendImageThread(Context context,Object threadMonitor) {
|
||||
this.threadMonitor = threadMonitor;
|
||||
this.context = context;
|
||||
String uuid_user = "";
|
||||
try {
|
||||
try {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
|
||||
mNotifyManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
mBuilder = new Notification.Builder(context);
|
||||
mBuilder.setContentTitle(context.getString(R.string.uploading_image))
|
||||
.setContentText(context.getString(R.string.progress_uploading))
|
||||
.setSmallIcon(getNotificationUploadingIcon());
|
||||
inboxStyle = new Notification.BigTextStyle();
|
||||
inboxStyle.setBigContentTitle(context.getString(R.string.uploading_image));
|
||||
inboxStyle.bigText(context.getString(R.string.progress_uploading));
|
||||
mBuilder.setStyle(inboxStyle);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
FireCrash.log(e);
|
||||
|
||||
}
|
||||
|
||||
uuid_user = GlobalData.getSharedGlobalData().getUser().getUuid_user();
|
||||
if (uuid_user == null)
|
||||
uuid_user = Global.user.getUuid_user();
|
||||
|
||||
GeneralParameter gp = GeneralParameterDataAccess.getOne(context,
|
||||
uuid_user,
|
||||
Global.GS_INTERVAL_AUTOSEND);
|
||||
GeneralParameter gp2 = GeneralParameterDataAccess.getOne(context,
|
||||
uuid_user,
|
||||
Global.GS_PARTIAL_SENT);
|
||||
if (gp != null) {
|
||||
this.interval = Global.SECOND * Integer.parseInt(gp.getGs_value());
|
||||
}
|
||||
if (gp2 != null) {
|
||||
if (gp2.getGs_value().equals("0")) {
|
||||
requestStop();
|
||||
}
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
FireCrash.log(e);
|
||||
this.interval = 0;
|
||||
try {
|
||||
requestStop();
|
||||
} catch (Exception e2) {
|
||||
FireCrash.log(e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static boolean checkFinal(int count) {
|
||||
return count <= 1;
|
||||
}
|
||||
|
||||
public static int countTotalImageTask(Context context, String uuid_task_h) {
|
||||
List<TaskD> totalImageTask = TaskDDataAccess
|
||||
.getTaskDWithImageByUuidTaskH(context, uuid_task_h);
|
||||
return totalImageTask.size();
|
||||
}
|
||||
|
||||
public static int countPendingImageUpload(Context context,
|
||||
String uuid_task_h) {
|
||||
List<TaskD> sendImage = TaskDDataAccess.getUnsentImageByUuidTaskH(
|
||||
context, GlobalData.getSharedGlobalData().getUser()
|
||||
.getUuid_user(), uuid_task_h);
|
||||
return sendImage.size();
|
||||
}
|
||||
|
||||
public static int countPendingImageBeforeUpload(Context context,
|
||||
String uuid_task_h) {
|
||||
List<TaskD> sendImage = TaskDDataAccess.getPendingImageByUuidTaskH(
|
||||
context, GlobalData.getSharedGlobalData().getUser()
|
||||
.getUuid_user(), uuid_task_h);
|
||||
return sendImage.size();
|
||||
}
|
||||
|
||||
public static int getNotificationUploadingIcon() {
|
||||
boolean useWhiteIcon = (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP);
|
||||
return useWhiteIcon ? R.drawable.ic_uploading : R.drawable.icon_notif_new;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
while (keepRunning) {
|
||||
try {
|
||||
synchronized (threadMonitor) {
|
||||
if (isWait) {
|
||||
threadMonitor.wait();
|
||||
}
|
||||
}
|
||||
try {
|
||||
String uuidUser = GlobalData.getSharedGlobalData().getUser()
|
||||
.getUuid_user();
|
||||
if (uuidUser != null) {
|
||||
GeneralParameter gp = GeneralParameterDataAccess.getOne(context, uuidUser, Global.GS_INTERVAL_AUTOSEND);
|
||||
if (gp != null && gp.getGs_value() != null
|
||||
&& !gp.getGs_value()
|
||||
.isEmpty()) {
|
||||
interval = Integer.parseInt(gp.getGs_value()) * Global.SECOND;
|
||||
}
|
||||
GeneralParameter gp2 = GeneralParameterDataAccess.getOne(context,
|
||||
uuidUser,
|
||||
Global.GS_PARTIAL_SENT);
|
||||
if (gp2 != null && gp2.getGs_value().equals("0")) {
|
||||
requestStop();
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
FireCrash.log(e);
|
||||
}
|
||||
if (interval > 0) {
|
||||
if (Tool.isInternetconnected(context) && !Global.isIsManualUploading()) {
|
||||
List<String> listKeySendImage = TaskDDataAccess.getUnsentImageListKey(context, GlobalData.getSharedGlobalData().getUser().getUuid_user());
|
||||
int count = listKeySendImage.size();
|
||||
if (count > 0) {
|
||||
Global.setIsUploading(true);
|
||||
for (int i = 0; i < count; i++) {
|
||||
TaskD taskd = TaskDDataAccess.getOneUnsentImageByUuidTaskH(context, GlobalData.getSharedGlobalData().getUser().getUuid_user(), listKeySendImage.get(i));
|
||||
try {
|
||||
String uuid_task_h = taskd.getTaskH()
|
||||
.getUuid_task_h();
|
||||
String task_id = taskd.getTaskH()
|
||||
.getTask_id();
|
||||
totalPending = countPendingImageUpload(
|
||||
context, uuid_task_h);
|
||||
totalimage = countTotalImageTask(
|
||||
context, uuid_task_h);
|
||||
boolean finale =
|
||||
checkFinal(totalPending);
|
||||
if (finale) {
|
||||
taskd.setIs_final(Global.TRUE_STRING);
|
||||
}
|
||||
|
||||
if (taskd.getCount() == null) {
|
||||
taskd.setCount(Global.FALSE_STRING);
|
||||
}
|
||||
|
||||
JsonRequestSubmitTask task = new JsonRequestSubmitTask();
|
||||
task.setAudit(GlobalData
|
||||
.getSharedGlobalData()
|
||||
.getAuditData());
|
||||
task.addImeiAndroidIdToUnstructured();
|
||||
task.setTaskH(taskd.getTaskH());
|
||||
List<TaskD> ds = new ArrayList<>();
|
||||
ds.add(taskd);
|
||||
task.setTaskD(ds);
|
||||
String json = GsonHelper.toJson(task);
|
||||
String url = GlobalData.getSharedGlobalData().getURL_SUBMITTASK();
|
||||
final TaskH taskH = taskd.getTaskH();
|
||||
try {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
|
||||
Handler handler = new Handler(Looper.getMainLooper());
|
||||
handler.post(new Runnable() {
|
||||
public void run() {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
|
||||
int uplod = totalimage - totalPending + 1;
|
||||
String counter = context.getString(R.string.uploading_image_counter, uplod, totalimage);
|
||||
String title = context.getString(R.string.uploading_image_title, taskH.getCustomer_name());
|
||||
mBuilder.setContentTitle(title);
|
||||
mBuilder.setContentText(counter)
|
||||
// Removes the progress bar
|
||||
.setProgress(0, 0, true);
|
||||
inboxStyle.setBigContentTitle(title);
|
||||
inboxStyle.bigText(counter);
|
||||
mBuilder.setStyle(inboxStyle);
|
||||
mBuilder.setOngoing(true);
|
||||
|
||||
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O)
|
||||
{
|
||||
int importance = NotificationManager.IMPORTANCE_HIGH;
|
||||
NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "NOTIFICATION_CHANNEL_NAME", importance);
|
||||
assert mNotifyManager != null;
|
||||
mBuilder.setChannelId(NOTIFICATION_CHANNEL_ID);
|
||||
mNotifyManager.createNotificationChannel(notificationChannel);
|
||||
}
|
||||
|
||||
mNotifyManager.notify(4, mBuilder.build());
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
} catch (Exception e) {
|
||||
FireCrash.log(e);
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (taskH.getIs_prepocessed() != null
|
||||
&& taskH.getIs_prepocessed()
|
||||
.equals(Global.FORM_TYPE_VERIFICATION)) {
|
||||
url = GlobalData.getSharedGlobalData().getURL_SUBMITVERIFICATIONTASK();
|
||||
} else {
|
||||
url = GlobalData.getSharedGlobalData().getURL_SUBMITTASK();
|
||||
}
|
||||
boolean encrypt = GlobalData.getSharedGlobalData().isEncrypt();
|
||||
boolean decrypt = GlobalData.getSharedGlobalData().isDecrypt();
|
||||
HttpCryptedConnection httpConn = new HttpCryptedConnection(context, encrypt, decrypt);
|
||||
HttpConnectionResult serverResult = null;
|
||||
Date startSend = Tool.getSystemDateTime();
|
||||
|
||||
//Firebase Performance Trace HTTP Request
|
||||
HttpMetric networkMetric =
|
||||
FirebasePerformance.getInstance().newHttpMetric(url, FirebasePerformance.HttpMethod.POST);
|
||||
Utility.metricStart(networkMetric, json);
|
||||
|
||||
try {
|
||||
if (!Global.isIsManualUploading()) {
|
||||
serverResult = httpConn
|
||||
.requestToServer(url, json, Global.DEFAULTCONNECTIONTIMEOUT);
|
||||
Utility.metricStop(networkMetric, serverResult);
|
||||
} else {
|
||||
errMessage = context.getString(R.string.upload_queue);
|
||||
break;
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
errMessage = context.getString(R.string.upload_failed);
|
||||
break;
|
||||
}
|
||||
if (serverResult != null && serverResult.isOK()) {
|
||||
String resultvalue = serverResult
|
||||
.getResult();
|
||||
try {
|
||||
JsonResponseSubmitTask responseSubmitTask = GsonHelper
|
||||
.fromJson(
|
||||
resultvalue,
|
||||
JsonResponseSubmitTask.class);
|
||||
|
||||
int statusCode = responseSubmitTask
|
||||
.getStatus().getCode();
|
||||
if (statusCode == 0) {
|
||||
Date finishSend = Tool
|
||||
.getSystemDateTime();
|
||||
if (Global.IS_DEV)
|
||||
Log.i(TAG, "Berhasil terkirim");
|
||||
if (finale) {
|
||||
ToDoList.removeSurveyFromList(task_id);
|
||||
if (responseSubmitTask
|
||||
.getTaskId() != null)
|
||||
taskId = responseSubmitTask
|
||||
.getTaskId().toString();
|
||||
if (taskId != null && taskId.length() > 0) {
|
||||
doAfterFinish(taskd, startSend,
|
||||
finishSend);
|
||||
if (StatusTabFragment.handler != null)
|
||||
StatusTabFragment.handler
|
||||
.sendEmptyMessage(0);
|
||||
Utility.freeMemory();
|
||||
}
|
||||
} else {
|
||||
totalPending--;
|
||||
ToDoList.updateStatusSurvey(
|
||||
task_id,
|
||||
TaskHDataAccess.STATUS_SEND_UPLOADING,
|
||||
totalPending);
|
||||
taskd.setIs_sent(Global.TRUE_STRING);
|
||||
TaskDDataAccess.addOrReplace(
|
||||
this.context, taskd);
|
||||
if (StatusTabFragment.handler != null)
|
||||
StatusTabFragment.handler
|
||||
.sendEmptyMessage(0);
|
||||
}
|
||||
}
|
||||
else if(statusCode == Global.FAILED_DRAFT_TASK_CODE){
|
||||
errMessage = responseSubmitTask.getStatus().getMessage();
|
||||
TaskManager.isSubmitFailedDraft(context, taskH, errMessage);
|
||||
errMessage = context.getString(R.string.task_failed_draft);
|
||||
}else {
|
||||
if (Global.IS_DEV)
|
||||
Log.i(TAG, "Status Auto Send Image : " + resultvalue);
|
||||
errMessage = responseSubmitTask.getStatus().getMessage();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
FireCrash.log(e);
|
||||
errMessage = context.getString(R.string.upload_queue);
|
||||
break;
|
||||
}
|
||||
|
||||
} else {
|
||||
String statusCode = String.valueOf(serverResult.getStatusCode()).trim();
|
||||
if (statusCode != null && statusCode.charAt(0) != '5') {
|
||||
//set counter for taskD
|
||||
taskd.setCount(Global.TRUE_STRING);
|
||||
taskd.setIs_sent(Global.FALSE_STRING);
|
||||
TaskDDataAccess.addOrReplace(this.context, taskd);
|
||||
}
|
||||
errMessage = context.getString(R.string.upload_queue);
|
||||
break;
|
||||
}
|
||||
|
||||
TaskHDataAccess.doBackup(context, taskH);
|
||||
|
||||
} catch (Exception ex) {
|
||||
Logger.e(TAG, Log.getStackTraceString(ex));
|
||||
ex.printStackTrace();
|
||||
if (countFalseSent >= 3) {
|
||||
countFalseSent = 0;
|
||||
// jika 3 kali gagal looping, gak usah
|
||||
// dilanjutkan kirim lg..
|
||||
break;
|
||||
} else {
|
||||
//set counter for taskD
|
||||
taskd.setCount(Global.TRUE_STRING);
|
||||
taskd.setIs_sent(Global.FALSE_STRING);
|
||||
TaskDDataAccess.addOrReplace(this.context, taskd);
|
||||
countFalseSent++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
Handler handler = new Handler(Looper.getMainLooper());
|
||||
handler.post(new Runnable() {
|
||||
public void run() {
|
||||
// UI code goes here
|
||||
try {
|
||||
try {
|
||||
NewMainActivity.setCounter();
|
||||
} catch (Exception e) {
|
||||
FireCrash.log(e);
|
||||
}
|
||||
if (NewTimelineFragment.getTimelineHandler() != null)
|
||||
NewTimelineFragment.getTimelineHandler().sendEmptyMessage(0);
|
||||
if (StatusTabFragment.handler != null)
|
||||
StatusTabFragment.handler.sendEmptyMessage(0);
|
||||
} catch (Exception e) {
|
||||
FireCrash.log(e);
|
||||
}
|
||||
}
|
||||
});
|
||||
try {
|
||||
if (errMessage == null || errMessage.length() == 0) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
|
||||
Handler handler2 = new Handler(Looper.getMainLooper());
|
||||
handler2.post(new Runnable() {
|
||||
public void run() {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
|
||||
String counter = context.getString(R.string.upload_complete);
|
||||
mBuilder.setContentText(counter)
|
||||
// Removes the progress bar
|
||||
.setProgress(0, 0, false);
|
||||
mBuilder.setOngoing(false);
|
||||
inboxStyle.bigText(counter);
|
||||
mBuilder.setStyle(inboxStyle);
|
||||
|
||||
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O)
|
||||
{
|
||||
int importance = NotificationManager.IMPORTANCE_HIGH;
|
||||
NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "NOTIFICATION_CHANNEL_NAME", importance);
|
||||
assert mNotifyManager != null;
|
||||
mBuilder.setChannelId(NOTIFICATION_CHANNEL_ID);
|
||||
mNotifyManager.createNotificationChannel(notificationChannel);
|
||||
}
|
||||
|
||||
mNotifyManager.notify(4, mBuilder.build());
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
} else {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
|
||||
Handler handler2 = new Handler(Looper.getMainLooper());
|
||||
handler2.post(new Runnable() {
|
||||
public void run() {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
|
||||
mBuilder.setContentText(errMessage)
|
||||
// Removes the progress bar
|
||||
.setProgress(0, 0, false);
|
||||
mBuilder.setOngoing(false);
|
||||
inboxStyle.bigText(errMessage);
|
||||
mBuilder.setStyle(inboxStyle);
|
||||
|
||||
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O)
|
||||
{
|
||||
int importance = NotificationManager.IMPORTANCE_HIGH;
|
||||
NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "NOTIFICATION_CHANNEL_NAME", importance);
|
||||
assert mNotifyManager != null;
|
||||
mBuilder.setChannelId(NOTIFICATION_CHANNEL_ID);
|
||||
mNotifyManager.createNotificationChannel(notificationChannel);
|
||||
}
|
||||
|
||||
mNotifyManager.notify(4, mBuilder.build());
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
FireCrash.log(e);
|
||||
|
||||
}
|
||||
}
|
||||
try{
|
||||
//select list taskH yg status masih uploding harus cari sisa image 0
|
||||
List<TaskH> taskHList = TaskHDataAccess.getAllTaskByStatus(context, GlobalData.getSharedGlobalData().getUser().getUuid_user(), TaskHDataAccess.STATUS_SEND_UPLOADING);
|
||||
if(!taskHList.isEmpty()){
|
||||
for (int i = 0; i < taskHList.size(); i++) {
|
||||
TaskH taskH = taskHList.get(i);
|
||||
int countTaskImage = countPendingImageBeforeUpload(context, taskH.getUuid_task_h());
|
||||
if(countTaskImage == 0){
|
||||
List<TaskD> taskDList = TaskDDataAccess.getAll(context, taskH.getUuid_task_h(), TaskDDataAccess.IMAGE_ONLY);
|
||||
if(!taskDList.isEmpty()){
|
||||
TaskD taskDetail = taskDList.get(0);
|
||||
sendImageTask(taskDetail);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
Global.setIsUploading(false);
|
||||
} else {
|
||||
MainServices.autoSendImageThread.requestStop();
|
||||
}
|
||||
countFalseSent = 0;
|
||||
|
||||
try {
|
||||
Thread.sleep(interval);
|
||||
} catch (Exception e) {
|
||||
FireCrash.log(e);
|
||||
e.printStackTrace();
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
Logger.e(TAG, Log.getStackTraceString(ex));
|
||||
Global.setIsUploading(false);
|
||||
ex.printStackTrace();
|
||||
try {
|
||||
Thread.sleep(interval);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
Thread.currentThread().interrupt();
|
||||
}
|
||||
}
|
||||
}
|
||||
try {
|
||||
sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
Thread.currentThread().interrupt();
|
||||
}
|
||||
}
|
||||
|
||||
public synchronized void requestWait() {
|
||||
isWait = true;
|
||||
}
|
||||
|
||||
public synchronized void stopWaiting() {
|
||||
isWait = false;
|
||||
synchronized (threadMonitor) {
|
||||
threadMonitor.notifyAll();
|
||||
}
|
||||
}
|
||||
|
||||
public synchronized void requestStop() {
|
||||
keepRunning = false;
|
||||
}
|
||||
|
||||
private void doAfterFinish(TaskD taskd, Date startSend, Date finishSend) {
|
||||
long time = finishSend.getTime() - startSend.getTime();
|
||||
int sec = (int) Math.ceil((double) time / 1000); // millisecond to second
|
||||
byte[] answer = taskd.getImage();
|
||||
int size = answer.length;
|
||||
|
||||
TaskH taskH = taskd.getTaskH();
|
||||
taskH.setStatus(TaskHDataAccess.STATUS_SEND_SENT);
|
||||
taskH.setLast_saved_question(1);
|
||||
taskH.setTask_id(taskId);
|
||||
taskH.setSubmit_date(taskH.getSubmit_date());
|
||||
taskH.setSubmit_duration(String.valueOf(sec));
|
||||
taskH.setSubmit_size(String.valueOf(size));
|
||||
boolean isRVinFront = GeneralParameterDataAccess.isRvInFrontEnable(context, GlobalData.getSharedGlobalData().getUser().getUuid_user());
|
||||
if (isRVinFront && Global.APPLICATION_COLLECTION.equalsIgnoreCase(GlobalData.getSharedGlobalData().getApplication())) {
|
||||
taskH.setStatus_rv(TaskHDataAccess.STATUS_RV_SENT);
|
||||
}
|
||||
TaskHDataAccess.addOrReplace(this.context, taskH);
|
||||
|
||||
taskd.setIs_sent(Global.TRUE_STRING);
|
||||
TaskDDataAccess.addOrReplace(this.context, taskd);
|
||||
|
||||
Handler handler = new Handler(Looper.getMainLooper());
|
||||
|
||||
//today plan repo trigger update after submit success
|
||||
if(Global.PLAN_TASK_ENABLED && Global.isPlanStarted() && taskH.getStatus().equals(TaskHDataAccess.STATUS_SEND_SENT)){
|
||||
GlobalData.getSharedGlobalData().getTodayPlanRepo().updatePlanByTaskH(taskH, PlanTaskDataAccess.STATUS_FINISH);
|
||||
}
|
||||
|
||||
handler.post(new Runnable() {
|
||||
public void run() {
|
||||
try {
|
||||
NewMainActivity.setCounter();
|
||||
} catch (Exception e) {
|
||||
FireCrash.log(e);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
TimelineManager.insertTimeline(context, taskH);
|
||||
TaskHDataAccess.doBackup(context, taskH);
|
||||
}
|
||||
|
||||
private void doAfterFinish(TaskH taskH, List<TaskD> listTaskD) {
|
||||
taskH.setStatus(TaskHDataAccess.STATUS_SEND_SENT);
|
||||
taskH.setLast_saved_question(1);
|
||||
TaskHDataAccess.addOrReplace(this.context, taskH);
|
||||
for (TaskD taskD : listTaskD) {
|
||||
taskD.setIs_sent(Global.TRUE_STRING);
|
||||
TaskDDataAccess.addOrReplace(this.context, taskD);
|
||||
}
|
||||
|
||||
try {
|
||||
NewMainActivity.setCounter();
|
||||
} catch (Exception e) {
|
||||
FireCrash.log(e);
|
||||
}
|
||||
TimelineManager.insertTimeline(context, taskH);
|
||||
TaskHDataAccess.doBackup(context, taskH);
|
||||
}
|
||||
|
||||
public void sendImageTask(TaskD taskd){
|
||||
try {
|
||||
String uuid_task_h = taskd.getTaskH()
|
||||
.getUuid_task_h();
|
||||
String task_id = taskd.getTaskH()
|
||||
.getTask_id();
|
||||
totalPending = countPendingImageUpload(
|
||||
context, uuid_task_h);
|
||||
boolean finale = checkFinal(totalPending);
|
||||
if (finale) {
|
||||
taskd.setIs_final(Global.TRUE_STRING);
|
||||
}
|
||||
|
||||
taskd.getTaskH().getUser();
|
||||
taskd.getTaskH().getScheme();
|
||||
JsonRequestSubmitTask task = new JsonRequestSubmitTask();
|
||||
task.setAudit(GlobalData
|
||||
.getSharedGlobalData()
|
||||
.getAuditData());
|
||||
task.addImeiAndroidIdToUnstructured();
|
||||
task.setTaskH(taskd.getTaskH());
|
||||
List<TaskD> ds = new ArrayList<>();
|
||||
ds.add(taskd);
|
||||
task.setTaskD(ds);
|
||||
String json = GsonHelper.toJson(task);
|
||||
String url = GlobalData.getSharedGlobalData().getURL_SUBMITTASK();
|
||||
final TaskH taskH = taskd.getTaskH();
|
||||
|
||||
if (taskH.getIs_prepocessed() != null
|
||||
&& taskH.getIs_prepocessed()
|
||||
.equals(Global.FORM_TYPE_VERIFICATION)) {
|
||||
url = GlobalData.getSharedGlobalData().getURL_SUBMITVERIFICATIONTASK();
|
||||
} else {
|
||||
url = GlobalData.getSharedGlobalData().getURL_SUBMITTASK();
|
||||
}
|
||||
|
||||
boolean encrypt = GlobalData.getSharedGlobalData().isEncrypt();
|
||||
boolean decrypt = GlobalData.getSharedGlobalData().isDecrypt();
|
||||
HttpCryptedConnection httpConn = new HttpCryptedConnection(context, encrypt, decrypt);
|
||||
HttpConnectionResult serverResult = null;
|
||||
Date startSend = Tool.getSystemDateTime();
|
||||
|
||||
//Firebase Performance Trace HTTP Request
|
||||
HttpMetric networkMetric =
|
||||
FirebasePerformance.getInstance().newHttpMetric(url, FirebasePerformance.HttpMethod.POST);
|
||||
Utility.metricStart(networkMetric, json);
|
||||
|
||||
try {
|
||||
if(!Global.isIsManualUploading()) {
|
||||
serverResult = httpConn
|
||||
.requestToServer(url, json, Global.DEFAULTCONNECTIONTIMEOUT);
|
||||
Utility.metricStop(networkMetric, serverResult);
|
||||
}
|
||||
else{
|
||||
errMessage = context.getString(R.string.upload_queue);
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
errMessage = context.getString(R.string.upload_failed);
|
||||
}
|
||||
if (serverResult != null && serverResult.isOK()) {
|
||||
String resultvalue = serverResult
|
||||
.getResult();
|
||||
try {
|
||||
JsonResponseSubmitTask responseSubmitTask = GsonHelper
|
||||
.fromJson(
|
||||
resultvalue,
|
||||
JsonResponseSubmitTask.class);
|
||||
|
||||
int statusCode = responseSubmitTask
|
||||
.getStatus().getCode();
|
||||
if (statusCode == 0) {
|
||||
Date finishSend = Tool
|
||||
.getSystemDateTime();
|
||||
if(Global.IS_DEV)
|
||||
System.out.println("Berhasil terkirim");
|
||||
if (finale) {
|
||||
ToDoList.removeSurveyFromList(task_id);
|
||||
if (responseSubmitTask
|
||||
.getTaskId() != null)
|
||||
taskId = responseSubmitTask
|
||||
.getTaskId().toString();
|
||||
if (taskId != null && taskId.length() > 0) {
|
||||
doAfterFinish(taskd, startSend,
|
||||
finishSend);
|
||||
if (StatusTabFragment.handler != null)
|
||||
StatusTabFragment.handler
|
||||
.sendEmptyMessage(0);
|
||||
Utility.freeMemory();
|
||||
}
|
||||
} else {
|
||||
ToDoList.updateStatusSurvey(
|
||||
task_id,
|
||||
TaskHDataAccess.STATUS_SEND_UPLOADING,
|
||||
totalPending);
|
||||
taskd.setIs_sent(Global.TRUE_STRING);
|
||||
TaskDDataAccess.addOrReplace(
|
||||
context, taskd);
|
||||
if (StatusTabFragment.handler != null)
|
||||
StatusTabFragment.handler
|
||||
.sendEmptyMessage(0);
|
||||
}
|
||||
} else {
|
||||
if (Global.IS_DEV) {
|
||||
Log.i(TAG, "Status Auto Send Image : " + resultvalue);
|
||||
}
|
||||
errMessage = responseSubmitTask.getStatus().getMessage();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
errMessage = context.getString(R.string.upload_queue);
|
||||
}
|
||||
} else if(serverResult != null && !serverResult.isOK()) {
|
||||
String statusCode = String.valueOf(serverResult.getStatusCode()).trim();
|
||||
if (!statusCode.isEmpty() && statusCode.charAt(0) != '5') {
|
||||
//set counter for taskD
|
||||
taskd.setCount(Global.TRUE_STRING);
|
||||
taskd.setIs_sent(Global.FALSE_STRING);
|
||||
TaskDDataAccess.addOrReplace(context, taskd);
|
||||
}
|
||||
errMessage = context.getString(R.string.upload_queue);
|
||||
}
|
||||
|
||||
} catch (Exception ex) {
|
||||
Log.e(TAG, Log.getStackTraceString(ex));
|
||||
ex.printStackTrace();
|
||||
if (countFalseSent >= 3) {
|
||||
countFalseSent = 0;
|
||||
// jika 3 kali gagal looping, gak usah
|
||||
// dilanjutkan kirim lg..
|
||||
} else {
|
||||
//set counter for taskD
|
||||
taskd.setCount(Global.TRUE_STRING);
|
||||
taskd.setIs_sent(Global.FALSE_STRING);
|
||||
TaskDDataAccess.addOrReplace(context, taskd);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void addTaskUploadManual(String uuid_task_h) {
|
||||
if(!listTaskUploadManual.contains(uuid_task_h)) {
|
||||
listTaskUploadManual.add(uuid_task_h);
|
||||
}
|
||||
}
|
||||
|
||||
public static void removeTaskUploadManual(String uuid_task_h) {
|
||||
if(listTaskUploadManual != null){
|
||||
if(listTaskUploadManual.contains(uuid_task_h)) {
|
||||
listTaskUploadManual.remove(uuid_task_h);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,135 @@
|
|||
package com.adins.mss.svy.assignment;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.ProgressDialog;
|
||||
import android.os.AsyncTask;
|
||||
import android.view.View;
|
||||
|
||||
import com.adins.mss.base.GlobalData;
|
||||
import com.adins.mss.base.R;
|
||||
import com.adins.mss.base.crashlytics.FireCrash;
|
||||
import com.adins.mss.base.dynamicform.JsonResponseSubmitTask;
|
||||
import com.adins.mss.base.mainmenu.MainMenuActivity;
|
||||
import com.adins.mss.base.util.GsonHelper;
|
||||
import com.adins.mss.base.util.Utility;
|
||||
import com.adins.mss.foundation.dialog.NiftyDialogBuilder;
|
||||
import com.adins.mss.foundation.formatter.Tool;
|
||||
import com.adins.mss.foundation.http.HttpConnectionResult;
|
||||
import com.adins.mss.foundation.http.HttpCryptedConnection;
|
||||
import com.adins.mss.svy.reassignment.JsonRequestSubmitAssign;
|
||||
import com.google.firebase.perf.FirebasePerformance;
|
||||
import com.google.firebase.perf.metrics.HttpMetric;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
public class SubmitAssignTask extends AsyncTask<Void, Void, String> {
|
||||
private ProgressDialog progressDialog;
|
||||
private String errMessage = null;
|
||||
private WeakReference<Activity> activity;
|
||||
String uuid_task_h;
|
||||
String assignId;
|
||||
String flag;
|
||||
String notes;
|
||||
public SubmitAssignTask(Activity activity, String notes, String uuid_task_h, String assignId, String flag){
|
||||
this.activity = new WeakReference<Activity>(activity);
|
||||
this.uuid_task_h= uuid_task_h;
|
||||
this.assignId= assignId;
|
||||
this.flag= flag;
|
||||
this.notes=notes;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPreExecute() {
|
||||
progressDialog = ProgressDialog.show(activity.get(), "", activity.get().getString(R.string.progressWait), true);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String doInBackground(Void... params) {
|
||||
String result = null;
|
||||
if(Tool.isInternetconnected(activity.get())){
|
||||
JsonRequestSubmitAssign request = new JsonRequestSubmitAssign();
|
||||
request.setAudit(GlobalData.getSharedGlobalData().getAuditData());
|
||||
request.setFlag(flag);
|
||||
request.setUuidUserAssign(assignId);
|
||||
request.setUuid_task_h(uuid_task_h);
|
||||
request.setNotes(notes);
|
||||
String json = GsonHelper.toJson(request);
|
||||
String url = GlobalData.getSharedGlobalData().getURL_SUBMIT_ASSIGN();
|
||||
boolean encrypt = GlobalData.getSharedGlobalData().isEncrypt();
|
||||
boolean decrypt = GlobalData.getSharedGlobalData().isDecrypt();
|
||||
HttpCryptedConnection httpConn = new HttpCryptedConnection(activity.get(), encrypt, decrypt);
|
||||
HttpConnectionResult serverResult = null;
|
||||
|
||||
//Firebase Performance Trace HTTP Request
|
||||
HttpMetric networkMetric =
|
||||
FirebasePerformance.getInstance().newHttpMetric(url, FirebasePerformance.HttpMethod.POST);
|
||||
Utility.metricStart(networkMetric, json);
|
||||
|
||||
try {
|
||||
serverResult = httpConn.requestToServer(url, json);
|
||||
Utility.metricStop(networkMetric, serverResult);
|
||||
} catch (Exception e) {
|
||||
FireCrash.log(e);
|
||||
e.printStackTrace();
|
||||
errMessage=e.getMessage();
|
||||
}
|
||||
String resp = null;
|
||||
resp = serverResult.getResult();
|
||||
JsonResponseSubmitTask response ;
|
||||
try {
|
||||
response = GsonHelper.fromJson(resp, JsonResponseSubmitTask.class);
|
||||
if(response.getStatus().getCode()==0){
|
||||
result=response.getResult();
|
||||
}else{
|
||||
errMessage=response.getStatus().getMessage();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
FireCrash.log(e);
|
||||
result=resp;
|
||||
}
|
||||
}else{
|
||||
errMessage = activity.get().getString(R.string.no_internet_connection);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(String result) {
|
||||
if (progressDialog.isShowing()){
|
||||
try {
|
||||
progressDialog.dismiss();
|
||||
} catch (Exception e) {
|
||||
FireCrash.log(e);
|
||||
}
|
||||
}
|
||||
if (errMessage != null) {
|
||||
NiftyDialogBuilder dialogBuilder = NiftyDialogBuilder.getInstance(activity.get());
|
||||
dialogBuilder.withTitle(activity.get().getString(R.string.error_capital))
|
||||
.withMessage(errMessage)
|
||||
.show();
|
||||
}
|
||||
else if (result.equals("Success")){
|
||||
NiftyDialogBuilder dialogBuilder = NiftyDialogBuilder.getInstance(activity.get());
|
||||
dialogBuilder.withTitle(activity.get().getString(R.string.success))
|
||||
.withMessage(activity.get().getString(R.string.task_submitted))
|
||||
.isCancelable(false)
|
||||
.withButton1Text(activity.get().getString(R.string.btnOk))
|
||||
.setButton1Click(new View.OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
OrderAssignmentActivity.isChange=true;
|
||||
activity.get().finish();
|
||||
}
|
||||
})
|
||||
.show();
|
||||
}
|
||||
else{
|
||||
NiftyDialogBuilder dialogBuilder = NiftyDialogBuilder.getInstance(activity.get());
|
||||
dialogBuilder.withTitle(activity.get().getString(R.string.error_capital))
|
||||
.withMessage(result)
|
||||
.show();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,90 @@
|
|||
package com.adins.mss.odr.other;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.widget.ExpandableListView;
|
||||
|
||||
import com.adins.mss.odr.R;
|
||||
|
||||
/**
|
||||
* Created by winy.firdasari on 03/02/2015.
|
||||
*/
|
||||
|
||||
public class HistoryPaymentFragment extends FragmentActivity {
|
||||
private ArrayList<String> parentItems = new ArrayList<String>();
|
||||
private ArrayList<Object> childItems = new ArrayList<Object>();
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
// this is not really necessary as ExpandableListActivity contains an ExpandableList
|
||||
setContentView(R.layout.fragment_installment_schedule);
|
||||
|
||||
ExpandableListView expandableList = (ExpandableListView) findViewById(R.id.list);
|
||||
|
||||
expandableList.setDividerHeight(2);
|
||||
expandableList.setGroupIndicator(null);
|
||||
expandableList.setClickable(true);
|
||||
|
||||
setGroupParents();
|
||||
setChildData();
|
||||
|
||||
MyExpandableAdapter adapter = new MyExpandableAdapter(parentItems, childItems);
|
||||
|
||||
adapter.setInflater((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE), this);
|
||||
expandableList.setAdapter(adapter);
|
||||
// expandableList.setOnChildClickListener();
|
||||
/* List<PaymentHistory> paymentHistories = PaymentHistoryDataAccess.getAll(this,GlobalData.getSharedGlobalData().getUser().getUuid_user());
|
||||
if(paymentHistories == null){
|
||||
|
||||
}*/
|
||||
}
|
||||
|
||||
public void setGroupParents() {
|
||||
parentItems.add("Android");
|
||||
parentItems.add("Core Java");
|
||||
parentItems.add("Desktop Java");
|
||||
parentItems.add("Enterprise Java");
|
||||
}
|
||||
|
||||
public void setChildData() {
|
||||
|
||||
// Android
|
||||
ArrayList<String> child = new ArrayList<String>();
|
||||
child.add("Core");
|
||||
child.add("Games");
|
||||
childItems.add(child);
|
||||
|
||||
// Core Java
|
||||
child = new ArrayList<String>();
|
||||
child.add("Apache");
|
||||
child.add("Applet");
|
||||
child.add("AspectJ");
|
||||
child.add("Beans");
|
||||
child.add("Crypto");
|
||||
childItems.add(child);
|
||||
|
||||
// Desktop Java
|
||||
child = new ArrayList<String>();
|
||||
child.add("Accessibility");
|
||||
child.add("AWT");
|
||||
child.add("ImageIO");
|
||||
child.add("Print");
|
||||
childItems.add(child);
|
||||
|
||||
// Enterprise Java
|
||||
child = new ArrayList<String>();
|
||||
child.add("EJB3");
|
||||
child.add("GWT");
|
||||
child.add("Hibernate");
|
||||
child.add("JSP");
|
||||
childItems.add(child);
|
||||
}
|
||||
}
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 2.8 KiB |
|
@ -0,0 +1,9 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="20dp"
|
||||
android:height="20dp"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="@color/fontColor"
|
||||
android:pathData="M18,8h-1L17,6c0,-2.76 -2.24,-5 -5,-5S7,3.24 7,6v2L6,8c-1.1,0 -2,0.9 -2,2v10c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L20,10c0,-1.1 -0.9,-2 -2,-2zM12,17c-1.1,0 -2,-0.9 -2,-2s0.9,-2 2,-2 2,0.9 2,2 -0.9,2 -2,2zM15.1,8L8.9,8L8.9,6c0,-1.71 1.39,-3.1 3.1,-3.1 1.71,0 3.1,1.39 3.1,3.1v2z"/>
|
||||
</vector>
|
|
@ -0,0 +1,23 @@
|
|||
package com.adins.mss.coll.closingtask.models;
|
||||
|
||||
import com.adins.mss.foundation.http.MssRequestType;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
/**
|
||||
* Created by angga.permadi on 3/3/2016.
|
||||
*/
|
||||
public class ClosingTaskRequest extends MssRequestType {
|
||||
public transient static final String CLOSING_TASK_LIST = "0";
|
||||
public transient static final String CLOSING_TASK = "1";
|
||||
|
||||
@SerializedName("flag")
|
||||
private String flag;
|
||||
|
||||
public String getFlag() {
|
||||
return flag;
|
||||
}
|
||||
|
||||
public void setFlag(String flag) {
|
||||
this.flag = flag;
|
||||
}
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 639 B |
|
@ -0,0 +1,56 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/bgColor"
|
||||
android:id="@+id/layout">
|
||||
|
||||
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
android:id="@+id/refreshTimeline"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/listTask"
|
||||
android:clipToPadding="false"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/addToPlanBtnCont"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<Button
|
||||
android:id="@+id/addToPlanBtn"
|
||||
android:layout_marginBottom="20dp"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginRight="@dimen/activity_horizontal_margin"
|
||||
android:layout_marginLeft="@dimen/activity_horizontal_margin"
|
||||
android:text="@string/add_todays_plan"
|
||||
android:background="@drawable/button_background"
|
||||
android:textColor="#ffffff"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txv_data_not_found"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerInParent="true"
|
||||
android:text="@string/data_not_found"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:visibility="gone" />
|
||||
</RelativeLayout>
|
Loading…
Add table
Add a link
Reference in a new issue