* update
*/
#include <unistd.h>
+#include <cstdio>
#include <time.h>
#include <sys/stat.h>
#include <widget_install/task_database.h>
#include <dpl/log/log.h>
#include <dpl/assert.h>
#include <wrt-commons/security-origin-dao/security_origin_dao.h>
+#include <wrt-commons/widget-interface-dao/widget_interface_dao.h>
+#include <dpl/wrt-dao-ro/global_config.h>
#include <dpl/wrt-dao-ro/widget_dao_types.h>
#include <string>
#include <sstream>
AddStep(&TaskDatabase::StepWrtDBInsert);
AddStep(&TaskDatabase::StepAceDBInsert);
AddStep(&TaskDatabase::StepSecurityOriginDBInsert);
+ AddStep(&TaskDatabase::StepWidgetInterfaceDBInsert);
AddStep(&TaskDatabase::StepRemoveExternalFiles);
AddStep(&TaskDatabase::StepLiveboxDBInsert);
AddStep(&TaskDatabase::EndStep);
AddAbortStep(&TaskDatabase::StepAbortDBInsert);
AddAbortStep(&TaskDatabase::StepAbortAceDBInsert);
+ AddAbortStep(&TaskDatabase::StepAbortWidgetInterfaceDBInsert);
}
void TaskDatabase::StepWrtDBInsert()
}
}
+void TaskDatabase::StepWidgetInterfaceDBInsert()
+{
+ LogDebug("Create Widget Interface database");
+ using namespace WidgetInterfaceDB;
+ using namespace WrtDB;
+
+ DbWidgetHandle handle =
+ WidgetDAOReadOnly::getHandle(m_context.widgetConfig.tzAppid);
+
+ // backup database
+ if (m_context.isUpdateMode) {
+ std::string dbPath = WidgetInterfaceDAO::databaseFileName(handle);
+ std::string backupDbPath = dbPath;
+ backupDbPath += GlobalConfig::GetBackupDatabaseSuffix();
+ LogDebug("\"" << dbPath << "\" to \"" << backupDbPath << "\"");
+ if (0 != std::rename(dbPath.c_str(), backupDbPath.c_str())) {
+ LogError("widget interface database backup failed");
+ ThrowMsg(Exceptions::UpdateFailed,
+ "widget interface database backup failed");
+ }
+ }
+
+ Try
+ {
+ // automatically create widget interface database
+ WidgetInterfaceDAO dao(handle);
+ }
+ Catch(WidgetInterfaceDAO::Exception::DatabaseError)
+ {
+ LogError("widget interface database create failed");
+ ThrowMsg(Exceptions::UpdateFailed,
+ "widget interface database create failed");
+ }
+}
+
void TaskDatabase::StepRegisterExternalFiles()
{
WrtDB::ExternalLocationList externalLocationsUpdate =
LogDebug("Ace data inserted");
}
+void TaskDatabase::StepAbortWidgetInterfaceDBInsert()
+{
+ LogDebug("[DB Update Task] Widget interface Aborting...");
+ using namespace WidgetInterfaceDB;
+ using namespace WrtDB;
+
+ DbWidgetHandle handle =
+ WidgetDAOReadOnly::getHandle(m_context.widgetConfig.tzAppid);
+ std::string dbPath = WidgetInterfaceDAO::databaseFileName(handle);
+
+ // remove database
+ if (remove(dbPath.c_str()) != 0) {
+ LogWarning("Fail to remove");
+ }
+
+ // rollback database
+ if (m_context.isUpdateMode) {
+ std::string backupDbPath = dbPath;
+ backupDbPath += GlobalConfig::GetBackupDatabaseSuffix();
+ LogDebug("\"" << dbPath << "\" to \"" << backupDbPath << "\"");
+ if (0 != std::rename(backupDbPath.c_str(), dbPath.c_str())) {
+ LogWarning("Fail to rollback");
+ }
+ }
+}
+
void TaskDatabase::StepLiveboxDBInsert()
{
if (m_context.widgetConfig.configInfo.m_livebox.size() <= 0) {
#include <widget_install/job_widget_install.h>
#include <widget_install/widget_install_errors.h>
#include <widget_install/widget_install_context.h>
+#include <wrt-commons/widget-interface-dao/widget_interface_dao.h>
using namespace WrtDB;
AddStep(&TaskRemoveBackupFiles::StepRemoveBackupFiles);
}
AddStep(&TaskRemoveBackupFiles::StepDeleteBackupDB);
+ AddStep(&TaskRemoveBackupFiles::StepDeleteBackupWidgetInterfaceDB);
AddStep(&TaskRemoveBackupFiles::EndStep);
}
}
}
+void TaskRemoveBackupFiles::StepDeleteBackupWidgetInterfaceDB()
+{
+ LogDebug("StepDeleteBackupWidgetInterfaceDB");
+ using namespace WidgetInterfaceDB;
+ using namespace WrtDB;
+
+ DbWidgetHandle handle =
+ WidgetDAOReadOnly::getHandle(m_context.widgetConfig.tzAppid);
+ std::string backupDbPath = WidgetInterfaceDAO::databaseFileName(handle);
+ backupDbPath += GlobalConfig::GetBackupDatabaseSuffix();
+
+ // remove backup database
+ if (remove(backupDbPath.c_str()) != 0) {
+ LogWarning("Fail to remove");
+ }
+}
+
void TaskRemoveBackupFiles::StartStep()
{
LogDebug("--------- <TaskRemoveBackupFiles> : START ----------");