TRACKING APP: wip changing network code

This commit is contained in:
Lukas Zielinski committed 2014-12-18 17:19:55 +01:00
1 parent 98d0c0344c
commit 59097ac63c
2 files changed
+74 -41

No files matched your search

@@ -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());
@@ -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; }
}
}