-
Notifications
You must be signed in to change notification settings - Fork 2
/
CacheJobSchedulerService.java
120 lines (107 loc) · 4.17 KB
/
CacheJobSchedulerService.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
package javinator9889.bitcoinpools.BackgroundJobs;
import android.app.job.JobParameters;
import android.app.job.JobService;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Locale;
import javax.net.ssl.HttpsURLConnection;
import javinator9889.bitcoinpools.BitCoinApp;
import javinator9889.bitcoinpools.CacheManaging;
import javinator9889.bitcoinpools.Constants;
import javinator9889.bitcoinpools.JSONTools.JSONTools;
import javinator9889.bitcoinpools.NetTools.net;
/**
* Created by Javinator9889 on 04/03/2018.
*
* Controls cache
*/
public class CacheJobSchedulerService extends JobService {
private boolean jobWorking = false;
private boolean jobCancelled = false;
private Handler jobHandler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
System.out.println("Handling message");
if (!jobCancelled) {
try {
System.out.println("Updating cache");
updateCache();
System.out.println("Cache updated");
jobWorking = false;
jobFinished((JobParameters) msg.obj, false);
return false;
} catch (NullPointerException e) {
e.printStackTrace();
jobWorking = false;
jobFinished((JobParameters) msg.obj, true);
return false;
}
}
return false;
}
});
@Override
public boolean onStartJob(JobParameters params) {
jobWorking = true;
jobCancelled = false;
jobHandler.sendMessage(Message.obtain(jobHandler, 2, params));
Log.d("CACHEJOB", "Starting cache job");
return jobWorking;
}
@Override
public boolean onStopJob(JobParameters params) {
jobCancelled = true;
boolean needsReschedule = jobWorking;
jobHandler.removeMessages(2);
jobFinished(params, needsReschedule);
return needsReschedule;
}
private void updateCache() {
String date = new SimpleDateFormat("dd-MM-yyyy HH:mm", Locale.US).format(Calendar.getInstance().getTime());
CacheManaging cache = CacheManaging.newInstance(BitCoinApp.getAppContext());
try {
cache.setupFile();
net request = new net();
request.execute(Constants.STATS_URL);
HashMap<String, Float> valuesObtained = JSONTools.convert2HashMap(request.get());
HashMap<String, String> newValuesToSave = new LinkedHashMap<>();
newValuesToSave.put("date", date);
for (String key : valuesObtained.keySet()) {
newValuesToSave.put(key, String.valueOf(valuesObtained.get(key)));
System.out.println(key + " | " + valuesObtained.get(key));
}
cache.writeCache(newValuesToSave);
} catch (Exception e) {
e.printStackTrace();
throw new NullPointerException("Impossible to obtain values");
}
}
/*private JSONObject getHTTPSRequest(String requestUrl) throws Exception {
Thread httpsRequestThread = new Thread(new Runnable() {
@Override
public void run() {
StringBuilder response = new StringBuilder();
URL urlObject = new URL(requestUrl);
HttpsURLConnection connection = (HttpsURLConnection) urlObject.openConnection();
connection.setRequestMethod("GET");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while ((line = bufferedReader.readLine()) != null) {
response.append(line);
}
bufferedReader.close();
return new JSONObject(response.toString());
}
})
}*/
}