From: masensio Date: Mon, 26 May 2014 12:56:51 +0000 (+0200) Subject: Use ErrorMessageAdapter to access the error string when an error in a finished foregr... X-Git-Tag: oc-android-1.7.0_signed~303^2 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/bcab40c5351fdb50230cfbebfd110b889f32e141?ds=inline;hp=--cc Use ErrorMessageAdapter to access the error string when an error in a finished foreground operation occurs --- bcab40c5351fdb50230cfbebfd110b889f32e141 diff --git a/res/values/strings.xml b/res/values/strings.xml index 23a001a3..ea584f07 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -278,7 +278,7 @@ An error occurred while connecting with the server. An error occurred while waiting for the server, the operation couldn\'t have been done An error occurred while waiting for the server, the operation couldn\'t have been done - Unexpected exception + The operation couldn\'t be completed, server is unavaliable diff --git a/src/com/owncloud/android/ui/activity/FileActivity.java b/src/com/owncloud/android/ui/activity/FileActivity.java index f9d8bb1f..02025226 100644 --- a/src/com/owncloud/android/ui/activity/FileActivity.java +++ b/src/com/owncloud/android/ui/activity/FileActivity.java @@ -58,6 +58,7 @@ import com.owncloud.android.operations.UnshareLinkOperation; import com.owncloud.android.services.OperationsService; import com.owncloud.android.services.OperationsService.OperationsServiceBinder; import com.owncloud.android.ui.dialog.LoadingDialog; +import com.owncloud.android.utils.ErrorMessageAdapter; import com.owncloud.android.utils.Log_OC; @@ -475,14 +476,11 @@ implements OnRemoteOperationListener, ComponentsGetter { Intent sendIntent = operation.getSendIntent(); startActivity(sendIntent); - } else if (result.getCode() == ResultCode.SHARE_NOT_FOUND) { // Error --> SHARE_NOT_FOUND - Toast t = Toast.makeText(this, getString(R.string.share_link_file_no_exist), Toast.LENGTH_LONG); - t.show(); - } else { // Generic error - // Show a Message, operation finished without success - Toast t = Toast.makeText(this, getString(R.string.share_link_file_error), Toast.LENGTH_LONG); + } else { + Toast t = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), + Toast.LENGTH_LONG); t.show(); - } + } } @@ -492,15 +490,11 @@ implements OnRemoteOperationListener, ComponentsGetter { if (result.isSuccess()){ updateFileFromDB(); - } else if (result.getCode() == ResultCode.SHARE_NOT_FOUND) { // Error --> SHARE_NOT_FOUND - Toast t = Toast.makeText(this, getString(R.string.unshare_link_file_no_exist), Toast.LENGTH_LONG); - t.show(); - } else { // Generic error - // Show a Message, operation finished without success - Toast t = Toast.makeText(this, getString(R.string.unshare_link_file_error), Toast.LENGTH_LONG); + } else { + Toast t = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), + Toast.LENGTH_LONG); t.show(); - } - + } } diff --git a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java index b5e8ac0f..04d28134 100644 --- a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -90,6 +90,7 @@ import com.owncloud.android.ui.preview.PreviewImageFragment; import com.owncloud.android.ui.preview.PreviewMediaFragment; import com.owncloud.android.ui.preview.PreviewVideoActivity; import com.owncloud.android.utils.DisplayUtils; +import com.owncloud.android.utils.ErrorMessageAdapter; import com.owncloud.android.utils.Log_OC; @@ -1299,9 +1300,12 @@ FileFragment.ContainerActivity, OnNavigationListener, OnSslUntrustedCertListener */ private void onRemoveFileOperationFinish(RemoveFileOperation operation, RemoteOperationResult result) { dismissLoadingDialog(); + + Toast msg = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), + Toast.LENGTH_LONG); + msg.show(); + if (result.isSuccess()) { - Toast msg = Toast.makeText(this, R.string.remove_success_msg, Toast.LENGTH_LONG); - msg.show(); OCFile removedFile = operation.getFile(); FileFragment second = getSecondFragment(); if (second != null && removedFile.equals(second.getFile())) { @@ -1316,8 +1320,6 @@ FileFragment.ContainerActivity, OnNavigationListener, OnSslUntrustedCertListener } invalidateOptionsMenu(); } else { - Toast msg = Toast.makeText(this, R.string.remove_fail_msg, Toast.LENGTH_LONG); - msg.show(); if (result.isSslRecoverableException()) { mLastSslUntrustedServerResult = result; showUntrustedCertDialog(mLastSslUntrustedServerResult); @@ -1338,17 +1340,15 @@ FileFragment.ContainerActivity, OnNavigationListener, OnSslUntrustedCertListener refreshListOfFilesFragment(); } else { dismissLoadingDialog(); - if (result.getCode() == ResultCode.INVALID_CHARACTER_IN_NAME) { - Toast.makeText(FileDisplayActivity.this, R.string.filename_forbidden_characters, Toast.LENGTH_LONG).show(); - } else { try { - Toast msg = Toast.makeText(FileDisplayActivity.this, R.string.create_dir_fail_msg, Toast.LENGTH_LONG); + Toast msg = Toast.makeText(FileDisplayActivity.this, + ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), + Toast.LENGTH_LONG); msg.show(); } catch (NotFoundException e) { Log_OC.e(TAG, "Error while trying to show fail message " , e); } - } } } @@ -1386,20 +1386,13 @@ FileFragment.ContainerActivity, OnNavigationListener, OnSslUntrustedCertListener } } else { - if (result.getCode().equals(ResultCode.INVALID_LOCAL_FILE_NAME)) { - Toast msg = Toast.makeText(this, R.string.rename_local_fail_msg, Toast.LENGTH_LONG); - msg.show(); - // TODO throw again the new rename dialog - } if (result.getCode().equals(ResultCode.INVALID_CHARACTER_IN_NAME)) { - Toast msg = Toast.makeText(this, R.string.filename_forbidden_characters, Toast.LENGTH_LONG); - msg.show(); - } else { - Toast msg = Toast.makeText(this, R.string.rename_server_fail_msg, Toast.LENGTH_LONG); - msg.show(); - if (result.isSslRecoverableException()) { - mLastSslUntrustedServerResult = result; - showUntrustedCertDialog(mLastSslUntrustedServerResult); - } + Toast msg = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), + Toast.LENGTH_LONG); + msg.show(); + + if (result.isSslRecoverableException()) { + mLastSslUntrustedServerResult = result; + showUntrustedCertDialog(mLastSslUntrustedServerResult); } } } @@ -1421,7 +1414,8 @@ FileFragment.ContainerActivity, OnNavigationListener, OnSslUntrustedCertListener onTransferStateChanged(syncedFile, true, true); } else { - Toast msg = Toast.makeText(this, R.string.sync_file_nothing_to_do_msg, Toast.LENGTH_LONG); + Toast msg = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), + Toast.LENGTH_LONG); msg.show(); } } diff --git a/src/com/owncloud/android/utils/ErrorMessageAdapter.java b/src/com/owncloud/android/utils/ErrorMessageAdapter.java index 411ade56..c5bda8ce 100644 --- a/src/com/owncloud/android/utils/ErrorMessageAdapter.java +++ b/src/com/owncloud/android/utils/ErrorMessageAdapter.java @@ -27,7 +27,13 @@ import com.owncloud.android.R; import com.owncloud.android.lib.common.operations.RemoteOperation; import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode; +import com.owncloud.android.operations.CreateFolderOperation; +import com.owncloud.android.operations.CreateShareOperation; import com.owncloud.android.operations.DownloadFileOperation; +import com.owncloud.android.operations.RemoveFileOperation; +import com.owncloud.android.operations.RenameFileOperation; +import com.owncloud.android.operations.SynchronizeFileOperation; +import com.owncloud.android.operations.UnshareLinkOperation; import com.owncloud.android.operations.UploadFileOperation; /** @@ -57,8 +63,10 @@ public class ErrorMessageAdapter { || result.getCode() == ResultCode.LOCAL_STORAGE_NOT_COPIED) { message = String.format(res.getString(R.string.error__upload__local_file_not_copied), ((UploadFileOperation) operation).getFileName()); + } else if (result.getCode() == ResultCode.QUOTA_EXCEEDED) { message = res.getString(R.string.failed_upload_quota_exceeded_text); + } else { message = String.format(res.getString(R.string.uploader_upload_failed_content_single), ((UploadFileOperation) operation).getFileName()); @@ -70,41 +78,116 @@ public class ErrorMessageAdapter { if (result.isSuccess()) { message = String.format(res.getString(R.string.downloader_download_succeeded_content), new File(((DownloadFileOperation) operation).getSavePath()).getName()); + } else { message = String.format(res.getString(R.string.downloader_download_failed_content), new File(((DownloadFileOperation) operation).getSavePath()).getName()); } - } + + } else if (operation instanceof RemoveFileOperation) { + if (result.isSuccess()) { + message = res.getString(R.string.remove_success_msg); + + } else { + if (isNetworkError(result.getCode())) { + message = getErrorMessage(result, res); + + } else { + message = res.getString(R.string.remove_fail_msg); + } + } + + } else if (operation instanceof RenameFileOperation) { + if (result.getCode().equals(ResultCode.INVALID_LOCAL_FILE_NAME)) { + message = res.getString(R.string.rename_local_fail_msg); + + } if (result.getCode().equals(ResultCode.INVALID_CHARACTER_IN_NAME)) { + message = res.getString(R.string.filename_forbidden_characters); + + } else if (isNetworkError(result.getCode())) { + message = getErrorMessage(result, res); + + } else { + message = res.getString(R.string.rename_server_fail_msg); + } + + } else if (operation instanceof SynchronizeFileOperation) { + if (!((SynchronizeFileOperation) operation).transferWasRequested()) { + message = res.getString(R.string.sync_file_nothing_to_do_msg); + } + + } else if (operation instanceof CreateFolderOperation) { + if (result.getCode() == ResultCode.INVALID_CHARACTER_IN_NAME) { + message = res.getString(R.string.filename_forbidden_characters); + + } else if (isNetworkError(result.getCode())) { + message = getErrorMessage(result, res); + + } else { + message = res.getString(R.string.create_dir_fail_msg); + } + } else if (operation instanceof CreateShareOperation) { + if (result.getCode() == ResultCode.SHARE_NOT_FOUND) { // Error --> SHARE_NOT_FOUND + message = res.getString(R.string.share_link_file_no_exist); + + } else if (isNetworkError(result.getCode())) { + message = getErrorMessage(result, res); + + } else { // Generic error + // Show a Message, operation finished without success + message = res.getString(R.string.share_link_file_error); + } + + } else if (operation instanceof UnshareLinkOperation) { + if (result.getCode() == ResultCode.SHARE_NOT_FOUND) { // Error --> SHARE_NOT_FOUND + message = res.getString(R.string.unshare_link_file_no_exist); + + } else if (isNetworkError(result.getCode())) { + message = getErrorMessage(result, res); + + } else { // Generic error + // Show a Message, operation finished without success + message = res.getString(R.string.unshare_link_file_error); + } + } return message; } - public static String getErrorMessage(RemoteOperationResult result , Resources res) { + private static String getErrorMessage(RemoteOperationResult result , Resources res) { String message = null; if (!result.isSuccess()) { - switch (result.getCode()) { - case WRONG_CONNECTION: + if (result.getCode() == ResultCode.WRONG_CONNECTION) { + message = res.getString(R.string.network_error_socket_exception); + + } else if (result.getCode() == ResultCode.TIMEOUT) { message = res.getString(R.string.network_error_socket_exception); - break; - case TIMEOUT: if (result.getException() instanceof SocketTimeoutException) { message = res.getString(R.string.network_error_socket_timeout_exception); } else if(result.getException() instanceof ConnectTimeoutException) { message = res.getString(R.string.network_error_connect_timeout_exception); } - break; - default: - message = res.getString(R.string.unexpected_exception); - break; + } else if (result.getCode() == ResultCode.HOST_NOT_AVAILABLE) { + message = res.getString(R.string.network_host_not_available); } } return message; } + + private static boolean isNetworkError(RemoteOperationResult.ResultCode code) { + if (code == ResultCode.WRONG_CONNECTION || + code == ResultCode.TIMEOUT || + code == ResultCode.HOST_NOT_AVAILABLE) { + return true; + } + else + return false; + } }