9256900363c1bda14f53b7798b969aff1efa734a
[platform/core/csapi/tizenfx.git] / src / Tizen.Multimedia.Metadata / MetadataEditor / MetadataEditorError.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
22 {
23     /// <summary>
24     /// Enumeration for the metadata extractor's error codes.
25     /// </summary>
26     internal enum MetadataEditorError
27     {
28         None = ErrorCode.None,
29         InvalidParameter = ErrorCode.InvalidParameter,
30         OutOfMemory = ErrorCode.OutOfMemory,
31         FileNotExists = ErrorCode.FileExists,
32         PermissionDenied = ErrorCode.PermissionDenied,
33         NotSupported = ErrorCode.NotSupported,
34         TizenMetadataEditorError = -0x019C0000,
35         OperationFailed = TizenMetadataEditorError | 0x01,
36         UpdateNotPossible = TizenMetadataEditorError | 0x02
37     }
38
39     internal static class MetadataEditorErrorExtensions
40     {
41         internal static void ThrowIfError(this MetadataEditorError errorCode, string errorMessage)
42         {
43             if (errorCode == MetadataEditorError.None)
44             {
45                 return;
46             }
47
48             var errorMessages = $"{errorCode.ToString()} : {errorMessage}";
49
50             switch (errorCode)
51             {
52                 case MetadataEditorError.InvalidParameter:
53                     throw new ArgumentException(errorMessages);
54
55                 case MetadataEditorError.OutOfMemory:
56                     throw new OutOfMemoryException(errorMessages);
57
58                 case MetadataEditorError.FileNotExists:
59                     throw new FileNotFoundException(errorMessages);
60
61                 case MetadataEditorError.PermissionDenied:
62                     throw new UnauthorizedAccessException(errorMessages);
63
64                 case MetadataEditorError.NotSupported:
65                     throw new FileFormatException(errorMessages);
66
67                 case MetadataEditorError.OperationFailed:
68                 case MetadataEditorError.UpdateNotPossible:
69                     throw new InvalidOperationException(errorMessages);
70             }
71         }
72     }
73 }