diff options
10 files changed, 64 insertions, 72 deletions
diff --git a/src/de/danoeh/antennapod/activity/AddFeedActivity.java b/src/de/danoeh/antennapod/activity/AddFeedActivity.java index 7e702f28b..545b53494 100644 --- a/src/de/danoeh/antennapod/activity/AddFeedActivity.java +++ b/src/de/danoeh/antennapod/activity/AddFeedActivity.java @@ -161,7 +161,7 @@ public class AddFeedActivity extends SherlockActivity { } @Override - public void onConnectionFailure(int reason) { + public void onConnectionFailure(DownloadError reason) { handleDownloadError(reason); } }); @@ -177,11 +177,11 @@ public class AddFeedActivity extends SherlockActivity { progDialog.setMessage(getString(R.string.loading_label)); } - private void handleDownloadError(int reason) { + private void handleDownloadError(DownloadError reason) { final AlertDialog errorDialog = new AlertDialog.Builder(this).create(); errorDialog.setTitle(R.string.error_label); errorDialog.setMessage(getString(R.string.error_msg_prefix) + " " - + DownloadError.getErrorString(this, reason)); + + reason.getErrorString(this)); errorDialog.setButton(getString(android.R.string.ok), new DialogInterface.OnClickListener() { @Override diff --git a/src/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java b/src/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java index d6ff537a3..612c45e64 100644 --- a/src/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java +++ b/src/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java @@ -88,9 +88,8 @@ public abstract class OnlineFeedViewActivity extends SherlockFragmentActivity { if (status.isSuccessful()) { parseFeed(); } else { - String errorMsg = DownloadError.getErrorString( - OnlineFeedViewActivity.this, - status.getReason()); + String errorMsg = status.getReason().getErrorString( + OnlineFeedViewActivity.this); if (errorMsg != null && status.getReasonDetailed() != null) { errorMsg += " (" @@ -187,9 +186,9 @@ public abstract class OnlineFeedViewActivity extends SherlockFragmentActivity { } }); } else { - final String errorMsg = DownloadError.getErrorString( - OnlineFeedViewActivity.this, - DownloadError.ERROR_PARSER_EXCEPTION) + final String errorMsg = + DownloadError.ERROR_PARSER_EXCEPTION.getErrorString( + OnlineFeedViewActivity.this) + " (" + reasonDetailed + ")"; runOnUiThread(new Runnable() { diff --git a/src/de/danoeh/antennapod/adapter/DownloadLogAdapter.java b/src/de/danoeh/antennapod/adapter/DownloadLogAdapter.java index f97210cf3..99a30401e 100644 --- a/src/de/danoeh/antennapod/adapter/DownloadLogAdapter.java +++ b/src/de/danoeh/antennapod/adapter/DownloadLogAdapter.java @@ -70,8 +70,7 @@ public class DownloadLogAdapter extends BaseAdapter { holder.successful.setTextColor(convertView.getResources().getColor( R.color.download_failed_red)); holder.successful.setText(R.string.download_failed); - String reasonText = DownloadError.getErrorString(context, - status.getReason()); + String reasonText = status.getReason().getErrorString(context); if (status.getReasonDetailed() != null) { reasonText += ": " + status.getReasonDetailed(); } diff --git a/src/de/danoeh/antennapod/asynctask/DownloadStatus.java b/src/de/danoeh/antennapod/asynctask/DownloadStatus.java index e9225d33b..86bcb6814 100644 --- a/src/de/danoeh/antennapod/asynctask/DownloadStatus.java +++ b/src/de/danoeh/antennapod/asynctask/DownloadStatus.java @@ -3,6 +3,7 @@ package de.danoeh.antennapod.asynctask; import java.util.Date; import de.danoeh.antennapod.feed.FeedFile; +import de.danoeh.antennapod.util.DownloadError; /** Contains status attributes for one download */ public class DownloadStatus { @@ -25,7 +26,7 @@ public class DownloadStatus { * URL if the download has no other title. */ protected String title; - protected int reason; + protected DownloadError reason; /** * A message which can be presented to the user to give more information. * Should be null if Download was successful. @@ -59,7 +60,7 @@ public class DownloadStatus { /** Constructor for restoring Download status entries from DB. */ public DownloadStatus(long id, String title, FeedFile feedfile, - int feedfileType, boolean successful, int reason, + int feedfileType, boolean successful, DownloadError reason, Date completionDate, String reasonDetailed) { progressPercent = 100; soFar = 0; @@ -77,7 +78,7 @@ public class DownloadStatus { } /** Constructor for creating new completed downloads. */ - public DownloadStatus(FeedFile feedfile, String title, int reason, + public DownloadStatus(FeedFile feedfile, String title, DownloadError reason, boolean successful, String reasonDetailed) { this(0, title, feedfile, feedfile.getTypeAsInt(), successful, reason, new Date(), reasonDetailed); @@ -115,7 +116,7 @@ public class DownloadStatus { return statusMsg; } - public int getReason() { + public DownloadError getReason() { return reason; } @@ -151,7 +152,7 @@ public class DownloadStatus { this.statusMsg = statusMsg; } - public void setReason(int reason) { + public void setReason(DownloadError reason) { this.reason = reason; } @@ -195,4 +196,4 @@ public class DownloadStatus { this.cancelled = cancelled; } -}
\ No newline at end of file +} diff --git a/src/de/danoeh/antennapod/feed/FeedManager.java b/src/de/danoeh/antennapod/feed/FeedManager.java index a1a8c6c32..5adca403b 100644 --- a/src/de/danoeh/antennapod/feed/FeedManager.java +++ b/src/de/danoeh/antennapod/feed/FeedManager.java @@ -1637,7 +1637,8 @@ public class FeedManager { } boolean successful = logCursor .getInt(PodDBAdapter.KEY_SUCCESSFUL_INDEX) > 0; - int reason = logCursor.getInt(PodDBAdapter.KEY_REASON_INDEX); + DownloadError reason = DownloadError.fromCode( + logCursor.getInt(PodDBAdapter.KEY_REASON_INDEX)); String reasonDetailed = logCursor .getString(PodDBAdapter.KEY_REASON_DETAILED_INDEX); String title = logCursor diff --git a/src/de/danoeh/antennapod/service/download/DownloadService.java b/src/de/danoeh/antennapod/service/download/DownloadService.java index e1230e170..d6701c129 100644 --- a/src/de/danoeh/antennapod/service/download/DownloadService.java +++ b/src/de/danoeh/antennapod/service/download/DownloadService.java @@ -612,7 +612,7 @@ public class DownloadService extends Service { private Feed feed; private DownloadStatus status; - private int reason; + private DownloadError reason; private boolean successful; public FeedSyncThread(DownloadStatus status) { @@ -622,7 +622,7 @@ public class DownloadService extends Service { public void run() { Feed savedFeed = null; - reason = 0; + reason = DownloadError.SUCCESS; String reasonDetailed = null; successful = true; final FeedManager manager = FeedManager.getInstance(); diff --git a/src/de/danoeh/antennapod/service/download/HttpDownloader.java b/src/de/danoeh/antennapod/service/download/HttpDownloader.java index f8f26f6fd..6b081a96d 100644 --- a/src/de/danoeh/antennapod/service/download/HttpDownloader.java +++ b/src/de/danoeh/antennapod/service/download/HttpDownloader.java @@ -162,7 +162,7 @@ public class HttpDownloader extends Downloader { status.setDone(true); } - private void onFail(int reason, String reasonDetailed) { + private void onFail(DownloadError reason, String reasonDetailed) { if (AppConfig.DEBUG) { Log.d(TAG, "Download failed"); } diff --git a/src/de/danoeh/antennapod/storage/PodDBAdapter.java b/src/de/danoeh/antennapod/storage/PodDBAdapter.java index 420264840..3d3d23de1 100644 --- a/src/de/danoeh/antennapod/storage/PodDBAdapter.java +++ b/src/de/danoeh/antennapod/storage/PodDBAdapter.java @@ -424,7 +424,7 @@ public class PodDBAdapter { values.put(KEY_FEEDFILETYPE, FeedMedia.FEEDFILETYPE_FEEDMEDIA); } } - values.put(KEY_REASON, status.getReason()); + values.put(KEY_REASON, status.getReason().getCode()); values.put(KEY_SUCCESSFUL, status.isSuccessful()); values.put(KEY_COMPLETION_DATE, status.getCompletionDate().getTime()); values.put(KEY_REASON_DETAILED, status.getReasonDetailed()); diff --git a/src/de/danoeh/antennapod/util/ConnectionTester.java b/src/de/danoeh/antennapod/util/ConnectionTester.java index 2fd22d356..5d940d9e1 100644 --- a/src/de/danoeh/antennapod/util/ConnectionTester.java +++ b/src/de/danoeh/antennapod/util/ConnectionTester.java @@ -14,7 +14,7 @@ public class ConnectionTester implements Runnable { private static final String TAG = "ConnectionTester"; private String strUrl; private Callback callback; - private int reason; + private DownloadError reason; private Handler handler; @@ -68,10 +68,10 @@ public class ConnectionTester implements Runnable { public static abstract class Callback { public abstract void onConnectionSuccessful(); - public abstract void onConnectionFailure(int reason); + public abstract void onConnectionFailure(DownloadError reason); } - public int getReason() { + public DownloadError getReason() { return reason; } diff --git a/src/de/danoeh/antennapod/util/DownloadError.java b/src/de/danoeh/antennapod/util/DownloadError.java index 4723a521c..c37a14584 100644 --- a/src/de/danoeh/antennapod/util/DownloadError.java +++ b/src/de/danoeh/antennapod/util/DownloadError.java @@ -4,54 +4,46 @@ import android.content.Context; import de.danoeh.antennapod.R; /** Utility class for Download Errors. */ -public class DownloadError { - public static final int ERROR_PARSER_EXCEPTION = 1; - public static final int ERROR_UNSUPPORTED_TYPE = 2; - public static final int ERROR_CONNECTION_ERROR = 3; - public static final int ERROR_MALFORMED_URL = 4; - public static final int ERROR_IO_ERROR = 5; - public static final int ERROR_FILE_EXISTS = 6; - public static final int ERROR_DOWNLOAD_CANCELLED = 7; - public static final int ERROR_DEVICE_NOT_FOUND = 8; - public static final int ERROR_HTTP_DATA_ERROR = 9; - public static final int ERROR_NOT_ENOUGH_SPACE = 10; - public static final int ERROR_UNKNOWN_HOST = 11; - public static final int ERROR_REQUEST_ERROR = 12; - - /** Get a human-readable string for a specific error code. */ - public static String getErrorString(Context context, int code) { - int resId; - switch(code) { - case ERROR_NOT_ENOUGH_SPACE: - resId = R.string.download_error_insufficient_space; - break; - case ERROR_DEVICE_NOT_FOUND: - resId = R.string.download_error_device_not_found; - break; - case ERROR_IO_ERROR: - resId = R.string.download_error_io_error; - break; - case ERROR_HTTP_DATA_ERROR: - resId = R.string.download_error_http_data_error; - break; - case ERROR_PARSER_EXCEPTION: - resId = R.string.download_error_parser_exception; - break; - case ERROR_UNSUPPORTED_TYPE: - resId = R.string.download_error_unsupported_type; - break; - case ERROR_CONNECTION_ERROR: - resId = R.string.download_error_connection_error; - break; - case ERROR_UNKNOWN_HOST: - resId = R.string.download_error_unknown_host; - break; - case ERROR_REQUEST_ERROR: - resId = R.string.download_error_request_error; - break; - default: - resId = R.string.download_error_error_unknown; +public enum DownloadError { + SUCCESS(0, R.string.download_successful), + ERROR_PARSER_EXCEPTION(1, R.string.download_error_parser_exception), + ERROR_UNSUPPORTED_TYPE(2, R.string.download_error_unsupported_type), + ERROR_CONNECTION_ERROR(3, R.string.download_error_connection_error), + ERROR_MALFORMED_URL(4, R.string.download_error_error_unknown), + ERROR_IO_ERROR(5, R.string.download_error_io_error), + ERROR_FILE_EXISTS(6, R.string.download_error_error_unknown), + ERROR_DOWNLOAD_CANCELLED(7, R.string.download_error_error_unknown), + ERROR_DEVICE_NOT_FOUND(8, R.string.download_error_device_not_found), + ERROR_HTTP_DATA_ERROR(9, R.string.download_error_http_data_error), + ERROR_NOT_ENOUGH_SPACE(10, R.string.download_error_insufficient_space), + ERROR_UNKNOWN_HOST(11, R.string.download_error_unknown_host), + ERROR_REQUEST_ERROR(12, R.string.download_error_request_error); + + private final int code; + private final int resId; + + private DownloadError(int code, int resId) { + this.code = code; + this.resId = resId; + } + + /** Return DownloadError from its associated code. */ + public static DownloadError fromCode(int code) { + for (DownloadError reason : values()) { + if (reason.getCode() == code) { + return reason; + } } + throw new IllegalArgumentException("unknown code: " + code); + } + + /** Get machine-readable code. */ + public int getCode() { + return code; + } + + /** Get a human-readable string. */ + public String getErrorString(Context context) { return context.getString(resId); } |