diff options
Diffstat (limited to 'src/Tizen.Location.Geofence/Tizen.Location.Geofence/GeofenceErrorFactory.cs')
-rwxr-xr-x | src/Tizen.Location.Geofence/Tizen.Location.Geofence/GeofenceErrorFactory.cs | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/src/Tizen.Location.Geofence/Tizen.Location.Geofence/GeofenceErrorFactory.cs b/src/Tizen.Location.Geofence/Tizen.Location.Geofence/GeofenceErrorFactory.cs new file mode 100755 index 0000000..e9fc3ad --- /dev/null +++ b/src/Tizen.Location.Geofence/Tizen.Location.Geofence/GeofenceErrorFactory.cs @@ -0,0 +1,174 @@ +/* + * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +using System; +using Tizen; + + +namespace Tizen.Location.Geofence +{ + /// <summary> + /// Enum to give the type of error occured, if any. + /// </summary> + /// <since_tizen>3</since_tizen> + public enum GeofenceError + { + /// <summary> + /// Successful. + /// </summary> + /// <since_tizen>3</since_tizen> + None = Tizen.Internals.Errors.ErrorCode.None, + + /// <summary> + /// Out of memory. + /// </summary> + /// <since_tizen>3</since_tizen> + OutOfMemory = Tizen.Internals.Errors.ErrorCode.OutOfMemory, + + /// <summary> + /// Invalid parameter. + /// </summary> + /// <since_tizen>3</since_tizen> + InvalidParameter = Tizen.Internals.Errors.ErrorCode.InvalidParameter, + + /// <summary> + /// Permission denied. + /// </summary> + /// <since_tizen>3</since_tizen> + PermissionDenied = Tizen.Internals.Errors.ErrorCode.PermissionDenied, + + /// <summary> + /// Not Supported. + /// </summary> + /// <since_tizen>3</since_tizen> + NotSupported = Tizen.Internals.Errors.ErrorCode.NotSupported, + + /// <summary> + /// Geofence Manager is not initialized. + /// </summary> + /// <since_tizen>3</since_tizen> + NotInitialized = -0x02C00000 | 0x100 | 0x01, + + /// <summary> + /// Invalid geofence ID. + /// </summary> + /// <since_tizen>3</since_tizen> + InvalidID = -0x02C00000 | 0x100 | 0x02, + + /// <summary> + /// Exception occurs. + /// </summary> + /// <since_tizen>3</since_tizen> + Exception = -0x02C00000 | 0x100 | 0x03, + + /// <summary> + /// Geofencing is already started. + /// </summary> + /// <since_tizen>3</since_tizen> + AlreadyStarted = -0x02C00000 | 0x100 | 0x04, + + /// <summary> + /// Too many geofence. + /// </summary> + /// <since_tizen>3</since_tizen> + TooManyGeofence = -0x02C00000 | 0x100 | 0x05, + + /// <summary> + /// Error in GPS, Wi-Fi, or BT. + /// </summary> + /// <since_tizen>3</since_tizen> + IPC = -0x02C00000 | 0x100 | 0x06, + + /// <summary> + /// DB error in the server side. + /// </summary> + /// <since_tizen>3</since_tizen> + DBFailed = -0x02C00000 | 0x100 | 0x07, + + /// <summary> + /// Access to specified place is denied. + /// </summary> + /// <since_tizen>3</since_tizen> + PlaceAccessDenied = -0x02C00000 | 0x100 | 0x08, + + /// <summary> + /// Access to specified geofence is denied. + /// </summary> + /// <since_tizen>3</since_tizen> + GeofenceAccessDenied = -0x02C00000 | 0x100 | 0x09 + }; + + internal class GeofenceErrorFactory + { + internal const string LogTag = "Tizen.Location.Geofence"; + + internal static Exception CreateException(GeofenceError err, string msg) + { + Log.Info(LogTag, "Got Error " + err + " throwing Exception with msg " + msg); + Exception exp; + switch (err) + { + case GeofenceError.InvalidParameter: + { + exp = new ArgumentException(msg + " Invalid Parameters Provided"); + break; + } + + case GeofenceError.OutOfMemory: + { + exp = new OutOfMemoryException(msg + " Out Of Memory"); + break; + } + + case GeofenceError.NotInitialized: + { + exp = new InvalidOperationException(msg + " Not initializded"); + break; + } + + case GeofenceError.NotSupported: + { + exp = new NotSupportedException(msg + " Not supported"); + break; + } + + case GeofenceError.PermissionDenied: + // fall through + case GeofenceError.GeofenceAccessDenied: + //fall through + case GeofenceError.PlaceAccessDenied: + { + exp = new UnauthorizedAccessException(msg + " Permission Denied"); + break; + } + + case GeofenceError.DBFailed: + { + exp = new InvalidOperationException(msg + " DataBase Failed"); + break; + } + + default: + { + exp = new InvalidOperationException(msg); + break; + } + } + + return exp; + } + } +} |