mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-28 14:57:12 +00:00
TRACKING APP: wip changing network code
This commit is contained in:
1 parent
98d0c0344c
commit
59097ac63c
2 files changed
+74
-41
No files matched your search
+27
-16
@@ -1,5 +1,7 @@
|
||||
package com.sap.sailing.android.tracking.app.services;
|
||||
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@@ -17,18 +19,18 @@ import android.os.BatteryManager;
|
||||
import android.os.Binder;
|
||||
import android.os.IBinder;
|
||||
|
||||
import com.android.volley.Response.ErrorListener;
|
||||
import com.android.volley.Response.Listener;
|
||||
import com.android.volley.VolleyError;
|
||||
import com.sap.sailing.android.shared.data.http.HttpJsonPostRequest;
|
||||
import com.sap.sailing.android.shared.logging.ExLog;
|
||||
import com.sap.sailing.android.tracking.app.BuildConfig;
|
||||
import com.sap.sailing.android.tracking.app.R;
|
||||
import com.sap.sailing.android.tracking.app.services.sending.ConnectivityChangedReceiver;
|
||||
import com.sap.sailing.android.tracking.app.utils.AppPreferences;
|
||||
import com.sap.sailing.android.tracking.app.utils.DatabaseHelper;
|
||||
import com.sap.sailing.android.tracking.app.utils.JsonObjectOrStatusOnlyRequest;
|
||||
import com.sap.sailing.android.tracking.app.utils.NetworkHelper;
|
||||
import com.sap.sailing.android.tracking.app.utils.NetworkHelper.NetworkHelperError;
|
||||
import com.sap.sailing.android.tracking.app.utils.NetworkHelper.NetworkHelperFailureListener;
|
||||
import com.sap.sailing.android.tracking.app.utils.NetworkHelper.NetworkHelperSuccessListener;
|
||||
import com.sap.sailing.android.tracking.app.utils.UniqueDeviceUuid;
|
||||
import com.sap.sailing.android.tracking.app.utils.VolleyHelper;
|
||||
import com.sap.sailing.android.tracking.app.valueobjects.GpsFix;
|
||||
|
||||
/**
|
||||
@@ -324,11 +326,22 @@ public class TransmittingService extends Service {
|
||||
{
|
||||
currentlySending = true;
|
||||
sendingAttempted = true; // will be set to false in the listeners
|
||||
VolleyHelper.getInstance(this).enqueueRequest(host
|
||||
+ prefs.getServerGpsFixesPostPath(),
|
||||
requestObject,
|
||||
new FixSubmitListener(ids.toArray(idsArr)),
|
||||
new FixSubmitErrorListener(host, getTrackingServiceIsCurrentlyTracking(), failedHosts));
|
||||
|
||||
HttpJsonPostRequest request;
|
||||
try {
|
||||
request = new HttpJsonPostRequest(new URL(host
|
||||
+ prefs.getServerGpsFixesPostPath()), requestObject.toString(), this);
|
||||
|
||||
|
||||
NetworkHelper.getInstance(this).executeHttpJsonRequestAsnchronously(
|
||||
request,
|
||||
new FixSubmitListener(ids.toArray(idsArr)),
|
||||
new FixSubmitErrorListener(host,
|
||||
getTrackingServiceIsCurrentlyTracking(), failedHosts));
|
||||
|
||||
} catch (MalformedURLException e) {
|
||||
ExLog.w(this, TAG, "Warning, can't send fixes, MalformedURLException: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ExLog.w(this, TAG, "Warning, can't send fixes, host is null!");
|
||||
@@ -432,8 +445,7 @@ public class TransmittingService extends Service {
|
||||
// }
|
||||
// }
|
||||
|
||||
private class FixSubmitListener implements Listener<JSONObject> {
|
||||
|
||||
private class FixSubmitListener implements NetworkHelperSuccessListener {
|
||||
private String[] ids;
|
||||
|
||||
public FixSubmitListener(String[] ids) {
|
||||
@@ -441,14 +453,13 @@ public class TransmittingService extends Service {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResponse(JSONObject response) {
|
||||
public void performAction(JSONObject response) {
|
||||
deleteSynced(ids);
|
||||
markSuccessfulTransmission();
|
||||
// markAsSynced(ids);
|
||||
}
|
||||
}
|
||||
|
||||
private class FixSubmitErrorListener implements ErrorListener {
|
||||
private class FixSubmitErrorListener implements NetworkHelperFailureListener {
|
||||
private String host;
|
||||
private List<String> failedHosts;
|
||||
private boolean currentlyTracking = false;
|
||||
@@ -461,7 +472,7 @@ public class TransmittingService extends Service {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onErrorResponse(VolleyError error) {
|
||||
public void performAction(NetworkHelperError error) {
|
||||
markFailedTransmission();
|
||||
ExLog.e(TransmittingService.this, TAG,
|
||||
"Error while sending GPS fix " + error.getMessage());
|
||||
|
||||
+47
-25
@@ -34,17 +34,10 @@ public class NetworkHelper {
|
||||
super();
|
||||
}
|
||||
|
||||
public void executeHttpRequestAsnchronously(HttpRequest request,
|
||||
NetworkHelperSuccessListener successListener, NetworkHelperFailureListener failureListener) {
|
||||
|
||||
NetworkRequestTask task = new NetworkRequestTask(successListener, failureListener, false);
|
||||
task.execute(request);
|
||||
}
|
||||
|
||||
public void executeHttpJsonRequestAsnchronously(HttpRequest request,
|
||||
NetworkHelperSuccessListener successListener, NetworkHelperFailureListener failureListener) {
|
||||
|
||||
NetworkRequestTask task = new NetworkRequestTask(successListener, failureListener, true);
|
||||
NetworkRequestTask task = new NetworkRequestTask(successListener, failureListener);
|
||||
task.execute(request);
|
||||
}
|
||||
|
||||
@@ -52,13 +45,15 @@ public class NetworkHelper {
|
||||
{
|
||||
private NetworkHelperSuccessListener successListener;
|
||||
private NetworkHelperFailureListener failureListener;
|
||||
private boolean expectingJsonObject;
|
||||
|
||||
private JSONObject response;
|
||||
private boolean isSuccess = false;
|
||||
private NetworkHelperError error;
|
||||
|
||||
public NetworkRequestTask(NetworkHelperSuccessListener successListener,
|
||||
NetworkHelperFailureListener failureListener, boolean expectingJsonObject) {
|
||||
NetworkHelperFailureListener failureListener) {
|
||||
this.successListener = successListener;
|
||||
this.failureListener = failureListener;
|
||||
this.expectingJsonObject = expectingJsonObject;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -67,27 +62,37 @@ public class NetworkHelper {
|
||||
HttpRequest request = params[0];
|
||||
try {
|
||||
stream = request.execute();
|
||||
String response = readStream(stream);
|
||||
String responseStr = readStream(stream);
|
||||
|
||||
response = null;
|
||||
|
||||
if (responseStr.length() > 0) {
|
||||
response = new JSONObject(responseStr);
|
||||
}
|
||||
|
||||
if (expectingJsonObject)
|
||||
{
|
||||
JSONObject jsonObject = new JSONObject(response);
|
||||
successListener.performAction(jsonObject);
|
||||
}
|
||||
else
|
||||
{
|
||||
successListener.performAction(response);
|
||||
}
|
||||
isSuccess = true;
|
||||
} catch (IOException e) {
|
||||
failureListener.performAction();
|
||||
error = new NetworkHelperError(e.getMessage());
|
||||
} catch (JSONException e) {
|
||||
error = new NetworkHelperError(e.getMessage());
|
||||
ExLog.e(mContext, TAG, "Failed to parse JSON: " + e.getMessage());
|
||||
failureListener.performAction();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Void result) {
|
||||
if (isSuccess)
|
||||
{
|
||||
successListener.performAction(response);
|
||||
}
|
||||
else
|
||||
{
|
||||
failureListener.performAction(error);
|
||||
}
|
||||
}
|
||||
|
||||
private String readStream(InputStream inputStream) throws IOException {
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
byte[] buffer = new byte[1024];
|
||||
@@ -99,6 +104,23 @@ public class NetworkHelper {
|
||||
}
|
||||
}
|
||||
|
||||
public interface NetworkHelperSuccessListener { public void performAction(Object response); }
|
||||
public interface NetworkHelperFailureListener { public void performAction(); }
|
||||
/**
|
||||
* perfomAction called in case of network request success
|
||||
*/
|
||||
public interface NetworkHelperSuccessListener { public void performAction(JSONObject response); }
|
||||
|
||||
/**
|
||||
* perfomAction called in case of network request failure
|
||||
*/
|
||||
public interface NetworkHelperFailureListener { public void performAction(NetworkHelperError e); }
|
||||
|
||||
/**
|
||||
* Error class for NetworkHelper
|
||||
*
|
||||
*/
|
||||
public class NetworkHelperError {
|
||||
String message;
|
||||
public NetworkHelperError(String message) { this.message = message; }
|
||||
public String getMessage() { return message; }
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user