Extract checkout logic to checkout helper

This commit is contained in:
Bennet Brunsen committed 2016-07-05 15:39:43 +02:00
1 parent 5674a1538f
commit a39152b1cd
2 files changed
+69 -45

No files matched your search

@@ -20,7 +20,6 @@ import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
@@ -40,7 +39,6 @@ import com.sap.sailing.android.shared.data.BaseCheckinData;
import com.sap.sailing.android.shared.data.CheckinUrlInfo;
import com.sap.sailing.android.shared.data.LeaderboardInfo;
import com.sap.sailing.android.shared.data.http.HttpGetRequest;
import com.sap.sailing.android.shared.data.http.HttpJsonPostRequest;
import com.sap.sailing.android.shared.logging.ExLog;
import com.sap.sailing.android.shared.ui.activities.AbstractRegattaActivity;
import com.sap.sailing.android.shared.util.BitmapHelper;
@@ -48,7 +46,6 @@ import com.sap.sailing.android.shared.util.NetworkHelper;
import com.sap.sailing.android.shared.util.NetworkHelper.NetworkHelperError;
import com.sap.sailing.android.shared.util.NetworkHelper.NetworkHelperFailureListener;
import com.sap.sailing.android.shared.util.NetworkHelper.NetworkHelperSuccessListener;
import com.sap.sailing.android.shared.util.UniqueDeviceUuid;
import com.sap.sailing.android.tracking.app.BuildConfig;
import com.sap.sailing.android.tracking.app.R;
import com.sap.sailing.android.tracking.app.ui.fragments.RegattaFragment;
@@ -58,6 +55,7 @@ import com.sap.sailing.android.tracking.app.upload.UploadTeamImageTask;
import com.sap.sailing.android.tracking.app.utils.AboutHelper;
import com.sap.sailing.android.tracking.app.utils.AppPreferences;
import com.sap.sailing.android.tracking.app.utils.CheckinManager;
import com.sap.sailing.android.tracking.app.utils.CheckoutHelper;
import com.sap.sailing.android.tracking.app.utils.DatabaseHelper;
import com.sap.sailing.android.tracking.app.valueobjects.CheckinData;
import com.sap.sailing.android.tracking.app.valueobjects.CompetitorCheckinData;
@@ -469,48 +467,23 @@ public class RegattaActivity extends AbstractRegattaActivity
* Check out from regatta;
*/
public void checkout() {
final String checkoutURLStr = event.server
+ prefs.getServerCheckoutPath().replace("{leaderboard-name}", Uri.encode(leaderboard.name));
showProgressDialog(R.string.please_wait, R.string.checking_out);
JSONObject checkoutData = new JSONObject();
try {
checkoutData.put("competitorId", competitor.id);
checkoutData.put("deviceUuid", UniqueDeviceUuid.getUniqueId(this));
checkoutData.put("toMillis", System.currentTimeMillis());
} catch (JSONException e) {
showErrorPopup(R.string.error, R.string.error_could_not_complete_operation_on_server_try_again);
ExLog.e(this, TAG, "Error populating checkout-data: " + e.getMessage());
return;
}
try {
HttpJsonPostRequest request = new HttpJsonPostRequest(this, new URL(checkoutURLStr), checkoutData.toString());
NetworkHelper.getInstance(this).executeHttpJsonRequestAsync(request,
new NetworkHelperSuccessListener() {
@Override
public void performAction(JSONObject response) {
DatabaseHelper.getInstance().deleteRegattaFromDatabase(RegattaActivity.this,
event.checkinDigest);
deleteImageFile(getLeaderboardImageFileName(leaderboard.name));
dismissProgressDialog();
finish();
}
}, new NetworkHelperFailureListener() {
@Override
public void performAction(NetworkHelperError e) {
dismissProgressDialog();
showErrorPopup(R.string.error,
R.string.error_could_not_complete_operation_on_server_try_again);
}
});
} catch (MalformedURLException e) {
ExLog.w(this, TAG, "Error, can't check out, MalformedURLException: " + e.getMessage());
}
CheckoutHelper checkoutHelper = new CheckoutHelper();
checkoutHelper.checkoutCompetitor(this, leaderboard.name, event.server, competitor.id, new NetworkHelperSuccessListener() {
@Override
public void performAction(JSONObject response) {
DatabaseHelper.getInstance().deleteRegattaFromDatabase(RegattaActivity.this, event.checkinDigest);
deleteImageFile(getLeaderboardImageFileName(leaderboard.name));
dismissProgressDialog();
finish();
}
}, new NetworkHelperFailureListener() {
@Override
public void performAction(NetworkHelperError e) {
dismissProgressDialog();
showErrorPopup(R.string.error,
R.string.error_could_not_complete_operation_on_server_try_again);
}
});
}
@Override
@@ -0,0 +1,51 @@
package com.sap.sailing.android.tracking.app.utils;
import java.net.MalformedURLException;
import java.net.URL;
import org.json.JSONException;
import org.json.JSONObject;
import android.net.Uri;
import com.sap.sailing.android.shared.data.http.HttpJsonPostRequest;
import com.sap.sailing.android.shared.logging.ExLog;
import com.sap.sailing.android.shared.ui.activities.AbstractBaseActivity;
import com.sap.sailing.android.shared.util.NetworkHelper;
import com.sap.sailing.android.shared.util.UniqueDeviceUuid;
import com.sap.sailing.android.tracking.app.R;
import com.sap.sailing.domain.common.racelog.tracking.DeviceMappingConstants;
public class CheckoutHelper {
private static String TAG = CheckoutHelper.class.getName();
public void checkoutCompetitor(AbstractBaseActivity activity, String leaderboardName, String eventServer, String competitorId,
NetworkHelper.NetworkHelperSuccessListener successListener, NetworkHelper.NetworkHelperFailureListener failureListener) {
AppPreferences prefs = new AppPreferences(activity);
final String checkoutURLStr = eventServer
+ prefs.getServerCheckoutPath().replace("{leaderboard-name}", Uri.encode(leaderboardName));
activity.showProgressDialog(R.string.please_wait, R.string.checking_out);
JSONObject checkoutData = new JSONObject();
try {
checkoutData.put(DeviceMappingConstants.JSON_COMPETITOR_ID_AS_STRING, competitorId);
checkoutData.put(DeviceMappingConstants.JSON_DEVICE_UUID, UniqueDeviceUuid.getUniqueId(activity));
checkoutData.put(DeviceMappingConstants.JSON_TO_MILLIS, System.currentTimeMillis());
} catch (JSONException e) {
activity.dismissProgressDialog();
activity.showErrorPopup(R.string.error, R.string.error_could_not_complete_operation_on_server_try_again);
ExLog.e(activity, TAG, "Error populating checkout-data: " + e.getMessage());
return;
}
try {
HttpJsonPostRequest request = new HttpJsonPostRequest(activity, new URL(checkoutURLStr), checkoutData.toString());
com.sap.sailing.android.shared.util.NetworkHelper.getInstance(activity).executeHttpJsonRequestAsync(request,
successListener, failureListener);
} catch (MalformedURLException e) {
ExLog.w(activity, TAG, "Error, can't check out, MalformedURLException: " + e.getMessage());
}
}
}