Installer errors handling clean up
[framework/web/wrt-installer.git] / src / wrt-installer / installer_callbacks_translate.cpp
1 /*
2  * Copyright (c) 2011 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  * @file    api_callbacks_translate.h
18  * @author  Pawel Sikorski (p.sikorski@samsung.com)
19  * @version 1.0
20  * @brief   Source file for api callbacks translate functions
21  */
22
23 #include <installer_callbacks_translate.h>
24 #include <dpl/log/log.h>
25
26 namespace InstallerCallbacksTranslate {
27
28 // callback for finished install
29 void installFinishedCallback(void *userParam,
30                              std::string tizenId,
31                              Jobs::WidgetInstall::Exceptions::Type status)
32 {
33     Assert(userParam != NULL);
34
35     StatusCallbackStruct *apiStr =
36         static_cast<StatusCallbackStruct*>(userParam);
37
38     if (apiStr->status_callback) {
39         // Translate error
40         WrtErrStatus errorStatus;
41
42         switch (status) {
43         case Jobs::WidgetInstall::Exceptions::Success:
44             errorStatus = WRT_SUCCESS;
45             break;
46
47         case Jobs::WidgetInstall::Exceptions::ErrorWidgetDoesNotExist:
48             errorStatus = WRT_INSTALLER_ERROR_WIDGET_DOES_NOT_EXIST;
49             break;
50
51         case Jobs::WidgetInstall::Exceptions::ErrorAreadyUninstalling:
52             errorStatus = WRT_INSTALLER_ERROR_ALREADY_UNINSTALLING;
53             break;
54
55         case Jobs::WidgetInstall::Exceptions::ErrorInvalidPackage:
56             errorStatus = WRT_INSTALLER_ERROR_INVALID_CERTIFICATE;
57             break;
58
59         case Jobs::WidgetInstall::Exceptions::ErrorInternal:
60             errorStatus = WRT_INSTALLER_ERROR_INTERNAL;
61             break;
62
63         case Jobs::WidgetInstall::Exceptions::ErrorNotAllowed:
64             errorStatus = WRT_INSTALLER_ERROR_NOT_ALLOWED;
65             break;
66
67         case Jobs::WidgetInstall::Exceptions::ErrorDeferred:
68             errorStatus = WRT_INSTALLER_ERROR_DEFERRED;
69             break;
70
71         case Jobs::WidgetInstall::Exceptions::ErrorDatabaseFailure:
72             errorStatus = WRT_INSTALLER_ERROR_DATABASE_FAILURE;
73             break;
74
75         case Jobs::WidgetInstall::Exceptions::ErrorInstallOspServcie:
76             errorStatus = WRT_INSTALLER_ERROR_OSPSVC;
77             break;
78
79         case Jobs::WidgetInstall::Exceptions::ErrorUnknown:
80             errorStatus = WRT_INSTALLER_ERROR_UNKNOWN;
81             break;
82
83         default:
84             errorStatus = WRT_INSTALLER_ERROR_UNKNOWN;
85             break;
86         }
87
88         // Callback
89         apiStr->status_callback(tizenId, errorStatus, apiStr->userdata);
90     } else {
91         LogInfo("installFinishedCallback: No callback");
92     }
93 }
94
95 // callback for finished install
96 void uninstallFinishedCallback(void *userParam,
97                                std::string tizenId,
98                                Jobs::WidgetUninstall::Exceptions::Type status)
99 {
100     Assert(userParam != NULL);
101
102     StatusCallbackStruct *apiStr =
103         static_cast<StatusCallbackStruct*>(userParam);
104
105     if (apiStr->status_callback) {
106         // Translate error
107         WrtErrStatus errorStatus;
108
109         switch (status) {
110         case Jobs::WidgetUninstall::Exceptions::Success:
111             errorStatus = WRT_SUCCESS;
112             break;
113
114         case Jobs::WidgetUninstall::Exceptions::ErrorAlreadyUninstalling:
115             errorStatus = WRT_INSTALLER_ERROR_ALREADY_UNINSTALLING;
116             break;
117
118         case Jobs::WidgetUninstall::Exceptions::ErrorWidgetDoesNotExist:
119             errorStatus = WRT_INSTALLER_ERROR_WIDGET_DOES_NOT_EXIST;
120             break;
121
122         case Jobs::WidgetUninstall::Exceptions::ErrorDatabaseFailure:
123             errorStatus = WRT_INSTALLER_ERROR_DATABASE_FAILURE;
124             break;
125
126         case Jobs::WidgetUninstall::Exceptions::ErrorUninstallOspSvcFailed:
127             errorStatus = WRT_INSTALLER_ERROR_OSPSVC;
128             break;
129
130         case Jobs::WidgetUninstall::Exceptions::ErrorUnknown:
131             errorStatus = WRT_INSTALLER_ERROR_UNKNOWN;
132             break;
133
134         default:
135             errorStatus = WRT_INSTALLER_ERROR_UNKNOWN;
136             break;
137         }
138
139         // Callback
140         apiStr->status_callback(tizenId, errorStatus, apiStr->userdata);
141     } else {
142         LogInfo("uninstallFinishedCallback: No callback");
143     }
144 }
145
146 void pluginInstallFinishedCallback(void *userParam,
147                                    Jobs::PluginInstall::Exceptions::Type status)
148 {
149     Assert(userParam);
150
151     PluginStatusCallbackStruct *apiStr =
152         static_cast<PluginStatusCallbackStruct*>(userParam);
153
154     if (apiStr->statusCallback) {
155         // Translate error
156         WrtErrStatus errorStatus;
157
158         switch (status) {
159         case Jobs::PluginInstall::Exceptions::Success:
160             errorStatus = WRT_SUCCESS;
161             break;
162         case Jobs::PluginInstall::Exceptions::WrongPluginPath:
163             errorStatus = WRT_PLUGIN_INSTALLER_ERROR_WRONG_PATH;
164             break;
165         case Jobs::PluginInstall::Exceptions::MetafileError:
166             errorStatus = WRT_PLUGIN_INSTALLER_ERROR_METAFILE;
167             break;
168         case Jobs::PluginInstall::Exceptions::AlreadyInstalled:
169             errorStatus = WRT_PLUGIN_INSTALLER_ERROR_ALREADY_INSTALLED;
170             break;
171         case Jobs::PluginInstall::Exceptions::LoadingLibraryError:
172             errorStatus = WRT_PLUGIN_INSTALLER_ERROR_LIBRARY_ERROR;
173             break;
174         case Jobs::PluginInstall::Exceptions::InstallationWaiting:
175             errorStatus = WRT_PLUGIN_INSTALLER_ERROR_WAITING;
176             break;
177         default:
178             errorStatus = WRT_INSTALLER_ERROR_UNKNOWN;
179             break;
180         }
181
182         apiStr->statusCallback(errorStatus, apiStr->userdata);
183     } else {
184         LogInfo("PluginInstallFinishedCallback: No callback");
185     }
186
187     delete apiStr;
188 }
189
190 // callback for progress of install OR uninstall
191 void installProgressCallback(void *userParam,
192                              ProgressPercent percent,
193                              const ProgressDescription &description)
194 {
195     Assert(userParam != NULL);
196
197     StatusCallbackStruct *apiStr =
198         static_cast<StatusCallbackStruct*>(userParam);
199
200     if (apiStr->progress_callback) {
201         //CALLBACK EXEC
202         LogInfo("Entered " << percent << "% " << description);
203         apiStr->progress_callback(static_cast<float>(percent),
204                                   description.c_str(),
205                                   apiStr->userdata);
206     } else {
207         LogInfo("installProgressCallback: ignoring NULL callback pointer");
208     }
209 }
210 } //namespace
211