AddStep(&TaskDatabase::StepRegisterExternalFiles);
AddStep(&TaskDatabase::StepWrtDBInsert);
AddStep(&TaskDatabase::StepAceDBInsert);
+ AddStep(&TaskDatabase::StepRemoveExternalFiles);
AddAbortStep(&TaskDatabase::StepAbortDBInsert);
}
{
WidgetDAO dao(m_context.locations->getPkgname());
WrtDB::ExternalLocationList externalLocationsDB = dao.getWidgetExternalLocations();
- LogDebug("Removing external files:");
FOREACH(file, externalLocationsDB)
{
if(std::find(externalLocationsUpdate.begin(), externalLocationsUpdate.end(), *file) == externalLocationsUpdate.end())
{
- if(WrtUtilFileExists(*file))
- {
- LogDebug(" -> " << *file);
- remove(file->c_str());
- }
- else if(WrtUtilDirExists(*file))
- {
- LogDebug(" -> " << *file);
- if(!WrtUtilRemove(*file)){
- ThrowMsg(Exceptions::RemovingFolderFailure,
- "Failed to remove external directory");
- }
- }
- else
- {
- LogWarning(" -> " << *file << "(no such a path)");
- }
+ m_externalLocationsToRemove.push_back(*file);
}
}
}
LogDebug(" -> " << *file);
}
- //set external lcoations to be registered
+ //set external locations to be registered
m_context.widgetConfig.externalLocations = externalLocationsUpdate;
}
+void TaskDatabase::StepRemoveExternalFiles()
+{
+ if(!m_externalLocationsToRemove.empty())
+ {
+ LogDebug("Removing external files:");
+ }
+
+ FOREACH(file, m_externalLocationsToRemove)
+ {
+ if(WrtUtilFileExists(*file))
+ {
+ LogDebug(" -> " << *file);
+ remove(file->c_str());
+ }
+ else if(WrtUtilDirExists(*file))
+ {
+ LogDebug(" -> " << *file);
+ if(!WrtUtilRemove(*file)){
+ ThrowMsg(Exceptions::RemovingFolderFailure,
+ "Failed to remove external directory");
+ }
+ }
+ else
+ {
+ LogWarning(" -> " << *file << "(no such a path)");
+ }
+ }
+}
+
void TaskDatabase::StepAbortDBInsert()
{
LogWarning("[DB Update Task] Aborting... (DB Clean)");