Task database fix - TC11
[framework/web/wrt-installer.git] / src / jobs / widget_install / task_database.cpp
index ee543c8..78c06ef 100644 (file)
@@ -70,9 +70,17 @@ void TaskDatabase::StepWrtDBInsert()
 
         if (m_context.existingWidgetInfo.isExist) //update
         {
-            m_handleToRemove = WidgetDAOReadOnly::getHandle(
-                m_context.locations->getPkgname());
             LogInfo("Registering widget... (update)");
+            Try
+            {
+                m_handleToRemove = WidgetDAOReadOnly::getHandle(
+                    m_context.locations->getPkgname());
+            }
+            Catch(WidgetDAOReadOnly::Exception::WidgetNotExist)
+            {
+                LogError("Given tizenId not found for update installation (Same GUID?)");
+                ThrowMsg(Exceptions::InvalidPackage, "Given tizenId not found for update installation");
+            }
             WidgetDAO::registerOrUpdateWidget(
                     m_context.locations->getPkgname(),
                     m_context.widgetConfig,
@@ -126,7 +134,7 @@ void TaskDatabase::StepAceDBInsert()
                                   m_context.wacSecurity.getCertificateList()))
     {
         LogError("ace database insert failed");
-        ThrowMsg(Exceptions::NotAllowed, "Update failure. ace_register_widget failed");
+        ThrowMsg(Exceptions::UpdateFailed, "Update failure. ace_register_widget failed");
     }
     LogDebug("Ace data inserted");
 
@@ -140,15 +148,23 @@ void TaskDatabase::StepRegisterExternalFiles()
     WrtDB::ExternalLocationList externalLocationsUpdate = m_context.locations->listExternalLocations();
     if (m_context.existingWidgetInfo.isExist) //update
     {
-        WidgetDAO dao(m_context.locations->getPkgname());
-        WrtDB::ExternalLocationList externalLocationsDB = dao.getWidgetExternalLocations();
-        FOREACH(file, externalLocationsDB)
+        Try
         {
-            if(std::find(externalLocationsUpdate.begin(), externalLocationsUpdate.end(), *file) == externalLocationsUpdate.end())
+            WidgetDAO dao(m_context.locations->getPkgname());
+            WrtDB::ExternalLocationList externalLocationsDB = dao.getWidgetExternalLocations();
+            FOREACH(file, externalLocationsDB)
             {
-                m_externalLocationsToRemove.push_back(*file);
+                if(std::find(externalLocationsUpdate.begin(), externalLocationsUpdate.end(), *file) == externalLocationsUpdate.end())
+                {
+                    m_externalLocationsToRemove.push_back(*file);
+                }
             }
         }
+        Catch(WidgetDAOReadOnly::Exception::WidgetNotExist)
+        {
+            LogError("Given tizenId not found for update installation (Same GUID?)");
+            ThrowMsg(Exceptions::UpdateFailed, "Given tizenId not found for update installation");
+        }
     }
     LogDebug("Registering external files:");
     FOREACH(file, externalLocationsUpdate)