Release 4.0.0-preview1-00051
[platform/core/csapi/tizenfx.git] / src / Tizen.Multimedia.Util / ThumbnailExtractor / ThumbnailExtractorError.cs
1 /*
2 * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
3 *
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17 using System;
18 using System.IO;
19 using Tizen.Internals.Errors;
20
21 namespace Tizen.Multimedia.Util
22 {
23     internal enum ThumbnailExtractorError
24     {
25         None = ErrorCode.None,
26         InvalidParameter = ErrorCode.InvalidParameter,
27         OutOfMemory = ErrorCode.OutOfMemory,
28         InvalidOperation = ErrorCode.InvalidOperation,
29         FileNoSpaceOnDevice = ErrorCode.FileNoSpaceOnDevice,
30         PermissionDenied = ErrorCode.PermissionDenied,
31         TizenThumbnailUtilError = -0x02F90000,
32         UnsupportedContent = TizenThumbnailUtilError | 0x01,
33     };
34
35     internal static class ThumbnailExtractorErrorExtensions
36     {
37         internal static void ThrowIfError(this ThumbnailExtractorError errorCode, string errorMessage)
38         {
39             if (errorCode == ThumbnailExtractorError.None)
40             {
41                 return;
42             }
43
44             throw errorCode.ToException(errorMessage);
45         }
46
47         internal static Exception ToException(this ThumbnailExtractorError errorCode, string errorMessage)
48         {
49             switch (errorCode)
50             {
51                 case ThumbnailExtractorError.InvalidParameter:
52                     return new ArgumentException(errorMessage);
53
54                 case ThumbnailExtractorError.OutOfMemory:
55                     return new OutOfMemoryException(errorMessage);
56
57                 case ThumbnailExtractorError.InvalidOperation:
58                     return new InvalidOperationException(errorMessage);
59
60                 case ThumbnailExtractorError.FileNoSpaceOnDevice:
61                     return new IOException("No space to write on the device.");
62
63                 case ThumbnailExtractorError.PermissionDenied:
64                     return new UnauthorizedAccessException("[" + errorCode.ToString() + "]" + errorMessage);
65
66                 case ThumbnailExtractorError.UnsupportedContent:
67                     return new FileFormatException(errorMessage);
68             }
69
70             return new InvalidOperationException("[" + errorCode.ToString() + "]" + errorMessage);
71         }
72     }
73 }
74