package org.intermine.app.net; /* * Copyright (C) 2015 InterMine * * This code may be freely distributed and modified under the * terms of the GNU Lesser General Public Licence. This should * be distributed with the code. See the LICENSE file for more * information or http://www.gnu.org/copyleft/lesser.html. * */ import android.util.Log; import com.octo.android.robospice.exception.NoNetworkException; import com.octo.android.robospice.exception.RequestCancelledException; import com.octo.android.robospice.persistence.exception.SpiceException; import org.intermine.app.R; import org.intermine.app.activity.BaseActivity; import org.intermine.app.storage.Storage; import org.intermine.app.util.Strs; import org.springframework.http.HttpStatus; import static org.springframework.http.HttpStatus.UNAUTHORIZED; public class ResponseHelper { public static final String TAG = ResponseHelper.class.getSimpleName(); public static final int DIALOG_CODE_NETWORK = 0x3433; public static void handleSpiceException(SpiceException ex, BaseActivity atv, String mineName, int dialogCode) { if (ex instanceof RequestCancelledException) { return; } if (ex instanceof NoNetworkException) { atv.showStandardAlert(R.string.no_network_error_message, DIALOG_CODE_NETWORK); return; } HttpNetworkException networkException; try { networkException = (HttpNetworkException) ex.getCause(); if (null == networkException) { throw new ClassCastException(); } } catch (ClassCastException e) { atv.showStandardAlert(R.string.unknown_error_message, dialogCode); return; } HttpStatus code = networkException.getStatusCode(); String message = networkException.getErrorMessage(); // Handle unauthorized if (UNAUTHORIZED == code) { Storage storage = atv.getStorage(); storage.setUserToken(mineName, null); atv.showStandardAlert(R.string.unauthorized_error_message, BaseActivity.UNAUTHORIZED_CODE); return; } if (Strs.isNullOrEmpty(message)) { atv.showStandardAlert(R.string.unknown_error_message, dialogCode); } else { atv.showStandardAlert(message, dialogCode); } Log.e(TAG, ex.toString()); } public static void handleSpiceException(SpiceException ex, BaseActivity atv, String mineName) { handleSpiceException(ex, atv, mineName, DIALOG_CODE_NETWORK); } }