导航菜单

页面标题

页面副标题

Harvest v2.32 - SendingDataSchedulerService.java 源代码

正在查看: Harvest v2.32 应用的 SendingDataSchedulerService.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package com.ufields.tracking.Services;

import android.app.job.JobInfo;
import android.app.job.JobParameters;
import android.app.job.JobScheduler;
import android.app.job.JobService;
import android.content.ComponentName;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.os.Build;
import android.util.Log;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import com.ufields.tracking.App.EndPoints;
import com.ufields.tracking.App.MyApplication;
import com.ufields.tracking.Databases.PendingTracking;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.List;
import java.util.TimeZone;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicHeader;
import org.apache.http.params.HttpConnectionParams;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class SendingDataSchedulerService extends JobService {
    static final String UPDATE_ACTION = "UPDATE_ACTION";
    private JobParameters params;
    private List<String> pending;
    private PendingTracking pendingTracking;

    @Override
    public int onStartCommand(Intent intent, int i, int i2) {
        return 1;
    }

    @Override
    public boolean onStopJob(JobParameters jobParameters) {
        return false;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        this.pendingTracking = MyApplication.getInstance().getPendingTracking();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
    }

    @Override
    public boolean onStartJob(JobParameters jobParameters) {
        this.params = jobParameters;
        this.pending = this.pendingTracking.getAllTracking();
        if (isNetworkAvailable() && !this.pendingTracking.getLockMode()) {
            if (this.pendingTracking.rowCount() > 0) {
                try {
                    JSONObject jSONObject = new JSONObject();
                    JSONArray jSONArray = new JSONArray();
                    for (int i = 0; i < this.pending.size(); i++) {
                        jSONArray.put(new JSONObject(this.pendingTracking.getTracking(this.pending.get(i))));
                    }
                    jSONObject.put("harvestDetails", jSONArray);
                    new AddHarvestDetail().execute(jSONObject.toString());
                } catch (JSONException unused) {
                    jobFinished(jobParameters, false);
                }
            } else {
                jobFinished(jobParameters, false);
            }
        } else {
            jobFinished(jobParameters, false);
        }
        return true;
    }

    private void refreshJob() {
        if (Build.VERSION.SDK_INT >= 24) {
            ((JobScheduler) getSystemService("jobscheduler")).schedule(new JobInfo.Builder(0, new ComponentName(this, (Class<?>) SendingDataSchedulerService.class)).setMinimumLatency(60000L).setRequiredNetworkType(1).build());
        }
    }

    public boolean isNetworkAvailable() {
        NetworkInfo activeNetworkInfo = ((ConnectivityManager) getSystemService("connectivity")).getActiveNetworkInfo();
        return activeNetworkInfo != null && activeNetworkInfo.isConnected();
    }

    public String getCurrentDate() {
        return new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime());
    }

    public String convertStreamToString(InputStream inputStream) {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
        StringBuilder sb = new StringBuilder();
        while (true) {
            try {
                try {
                    try {
                        String readLine = bufferedReader.readLine();
                        if (readLine == null) {
                            break;
                        }
                        sb.append(readLine);
                        sb.append('\n');
                    } catch (IOException e) {
                        e.printStackTrace();
                        inputStream.close();
                    }
                } catch (Throwable th) {
                    try {
                        inputStream.close();
                    } catch (IOException e2) {
                        e2.printStackTrace();
                    }
                    throw th;
                }
            } catch (IOException e3) {
                e3.printStackTrace();
            }
        }
        inputStream.close();
        return sb.toString();
    }

    public class AddHarvestDetail extends AsyncTask<String, Void, String> {
        public AddHarvestDetail() {
        }

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        public String doInBackground(String... strArr) {
            DefaultHttpClient defaultHttpClient = new DefaultHttpClient();
            HttpConnectionParams.setConnectionTimeout(defaultHttpClient.getParams(), 1000);
            HttpPost httpPost = new HttpPost(EndPoints.ADD_MULTIPLE_HARVEST_DETAIL);
            InputStream inputStream = null;
            try {
                StringEntity stringEntity = new StringEntity(strArr[0]);
                stringEntity.setContentType(new BasicHeader("Content-Type", "application/json"));
                httpPost.setEntity(stringEntity);
                HttpResponse execute = defaultHttpClient.execute(httpPost);
                if (execute != null) {
                    inputStream = execute.getEntity().getContent();
                }
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (ClientProtocolException e2) {
                e2.printStackTrace();
            } catch (IOException e3) {
                e3.printStackTrace();
            }
            return inputStream != null ? SendingDataSchedulerService.this.convertStreamToString(inputStream) : "";
        }

        @Override
        public void onPostExecute(String str) {
            if (str.equals("")) {
                if (SendingDataSchedulerService.this.isNetworkAvailable()) {
                    SendingDataSchedulerService.this.new GetHarvestList().execute(new String[0]);
                    return;
                } else {
                    SendingDataSchedulerService sendingDataSchedulerService = SendingDataSchedulerService.this;
                    sendingDataSchedulerService.jobFinished(sendingDataSchedulerService.params, false);
                    return;
                }
            }
            try {
                if (new JSONObject(str).getBoolean("success")) {
                    for (int i = 0; i < SendingDataSchedulerService.this.pending.size(); i++) {
                        SendingDataSchedulerService.this.pendingTracking.deleteTracking((String) SendingDataSchedulerService.this.pending.get(i));
                    }
                    SendingDataSchedulerService.this.pending.clear();
                    SendingDataSchedulerService sendingDataSchedulerService2 = SendingDataSchedulerService.this;
                    sendingDataSchedulerService2.pending = sendingDataSchedulerService2.pendingTracking.getAllTracking();
                    if (SendingDataSchedulerService.this.isNetworkAvailable()) {
                        SendingDataSchedulerService.this.new GetHarvestList().execute(new String[0]);
                    } else {
                        SendingDataSchedulerService sendingDataSchedulerService3 = SendingDataSchedulerService.this;
                        sendingDataSchedulerService3.jobFinished(sendingDataSchedulerService3.params, false);
                    }
                }
            } catch (JSONException unused) {
                if (SendingDataSchedulerService.this.isNetworkAvailable()) {
                    SendingDataSchedulerService.this.new GetHarvestList().execute(new String[0]);
                } else {
                    SendingDataSchedulerService sendingDataSchedulerService4 = SendingDataSchedulerService.this;
                    sendingDataSchedulerService4.jobFinished(sendingDataSchedulerService4.params, false);
                }
            }
        }
    }

    public class GetHarvestList extends AsyncTask<String, Void, String> {
        String organizationId = "";
        String currentDate = "";

        public GetHarvestList() {
        }

        @Override
        protected void onPreExecute() {
            try {
                this.organizationId = new JSONObject(MyApplication.getInstance().getPrefManager().getOrganizationEmployee().getOrganizationInfo()).getString("_id");
            } catch (NullPointerException e) {
                e.printStackTrace();
            } catch (JSONException e2) {
                e2.printStackTrace();
            }
            this.currentDate = new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime());
        }

        @Override
        public String doInBackground(String... strArr) {
            DefaultHttpClient defaultHttpClient = new DefaultHttpClient();
            HttpConnectionParams.setConnectionTimeout(defaultHttpClient.getParams(), 1000);
            HttpGet httpGet = new HttpGet(EndPoints.GET_HARVEST + this.currentDate + "&organizationId=" + this.organizationId);
            httpGet.setHeader("timezone", TimeZone.getDefault().getID());
            InputStream inputStream = null;
            try {
                HttpResponse execute = defaultHttpClient.execute(httpGet);
                if (execute != null) {
                    inputStream = execute.getEntity().getContent();
                }
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (ClientProtocolException e2) {
                e2.printStackTrace();
            } catch (IOException e3) {
                e3.printStackTrace();
            }
            return inputStream != null ? SendingDataSchedulerService.this.convertStreamToString(inputStream) : "";
        }

        @Override
        public void onPostExecute(String str) {
            if (!str.equals("")) {
                try {
                    JSONObject jSONObject = new JSONObject(str);
                    JsonElement parseString = JsonParser.parseString(String.valueOf(jSONObject.getJSONObject("data").getJSONArray("harvests")));
                    MyApplication.getInstance().getPrefManager().storeHarvestList(this.organizationId, SendingDataSchedulerService.this.getCurrentDate(), new Gson().toJson(parseString));
                    JSONArray jSONArray = jSONObject.getJSONObject("data").getJSONArray("harvests");
                    if (jSONArray.length() != 0) {
                        for (int i = 0; i < jSONArray.length(); i++) {
                            JSONObject jSONObject2 = jSONArray.getJSONObject(i);
                            MyApplication.getInstance().getPrefManager().storeHarvest(this.organizationId, jSONObject2.getString("_id").trim(), jSONObject2.toString());
                            JsonElement parseString2 = JsonParser.parseString(String.valueOf(jSONObject2.getJSONArray("scans")));
                            MyApplication.getInstance().getPrefManager().storeHarvestTrackingDetail(jSONObject2.getString("_id"), SendingDataSchedulerService.this.getCurrentDate(), new Gson().toJson(parseString2));
                            if (jSONObject2.has("cropDetail")) {
                                JsonElement parseString3 = JsonParser.parseString(String.valueOf(jSONObject2.getJSONObject("cropDetail").getJSONArray("packages")));
                                MyApplication.getInstance().getPrefManager().storeCropPackage(jSONObject2.getJSONObject("cropDetail").getString("_id"), new Gson().toJson(parseString3));
                            }
                        }
                        MyApplication.getInstance().getPrefManager().storeSyncDateTime(new SimpleDateFormat("yyyy/MM/dd @ kk:mm").format(Calendar.getInstance().getTime()).replace(":", "h"));
                        Intent intent = new Intent();
                        intent.setAction(SendingDataSchedulerService.UPDATE_ACTION);
                        intent.putExtra("dataUpdated", true);
                        LocalBroadcastManager.getInstance(SendingDataSchedulerService.this).sendBroadcast(intent);
                    }
                } catch (JSONException unused) {
                    Log.e("Error", "Something went wrong");
                }
            }
            SendingDataSchedulerService sendingDataSchedulerService = SendingDataSchedulerService.this;
            sendingDataSchedulerService.jobFinished(sendingDataSchedulerService.params, false);
        }
    }
}