[Release] wrt-installer_0.1.53
[framework/web/wrt-installer.git] / src / misc / widget_location.cpp
index 31b5d17..adfbd44 100644 (file)
 #include <dpl/log/log.h>
 #include <dpl/sstream.h>
 #include <dpl/localization/localization_utils.h>
-
 #include <widget_install/task_commons.h>
 
+WidgetLocation::DirectoryDeletor::DirectoryDeletor(bool isReadOnly) :
+    m_dirpath(Jobs::WidgetInstall::createTempPath(isReadOnly))
+{}
 
-WidgetLocation::DirectoryDeletor::DirectoryDeletor()
-{
-    m_dirpath = Jobs::WidgetInstall::createTempPath();
-}
-
-WidgetLocation::DirectoryDeletor::DirectoryDeletor(std::string tempPath)
-{
-    m_dirpath = tempPath;
-}
+WidgetLocation::DirectoryDeletor::DirectoryDeletor(std::string tempPath) :
+        m_dirpath(tempPath)
+{}
 
 WidgetLocation::DirectoryDeletor::~DirectoryDeletor()
 {
-    LogDebug("Removing widget installation temporary directory: " << m_dirpath.c_str());
-    if(!WrtUtilRemove(m_dirpath)){
-        LogError("Fail at removing directory: " << m_dirpath.c_str());
+    LogDebug(
+        "Removing widget installation temporary directory: " << m_dirpath.c_str());
+    if (!WrtUtilRemove(m_dirpath)) {
+        LogWarning("Fail at removing directory: " << m_dirpath.c_str());
     }
 }
 
@@ -53,31 +50,33 @@ std::string WidgetLocation::DirectoryDeletor::getTempPath() const
 }
 
 WidgetLocation::WidgetLocation()
-{
-}
+{}
 
 WidgetLocation::WidgetLocation(const std::string & widgetname) :
-                                        m_pkgname(widgetname)
-{
-}
+    m_pkgid(widgetname)
+{}
 
 WidgetLocation::~WidgetLocation()
-{
-}
+{}
 
 WidgetLocation::WidgetLocation(const std::string & widgetname,
                                std::string sourcePath,
                                WrtDB::PackagingType t,
-                               bool preload):
-                                    m_pkgname(widgetname),
-                                    m_widgetSource(sourcePath),
-                                    m_type(t),
-                                    m_temp(new WidgetLocation::DirectoryDeletor())
-{
-    if (preload) {
-        m_installedPath += WrtDB::GlobalConfig::GetUserInstalledWidgetPath();
-    } else {
+                               bool isReadonly) :
+    m_pkgid(widgetname),
+    m_widgetSource(sourcePath),
+    m_type(t),
+    m_temp(
+        new WidgetLocation::DirectoryDeletor(isReadonly))
+{
+    if (isReadonly) {
         m_installedPath += WrtDB::GlobalConfig::GetUserPreloadedWidgetPath();
+    } else {
+        m_installedPath += WrtDB::GlobalConfig::GetUserInstalledWidgetPath();
+    }
+    // TODO clean-up
+    if (access(m_widgetSource.c_str(), F_OK) != 0) {
+        m_widgetSource = m_installedPath + "/" + m_pkgid;
     }
 }
 
@@ -85,18 +84,21 @@ WidgetLocation::WidgetLocation(const std::string & widgetname,
                                std::string sourcePath,
                                std::string dirPath,
                                WrtDB::PackagingType t,
-                               bool preload):
-                                    m_pkgname(widgetname),
-                                    m_widgetSource(sourcePath),
-                                    m_type(t),
-                                    m_temp(new
-                                            WidgetLocation::DirectoryDeletor(dirPath))
-{
-    if (preload) {
+                               bool isReadonly) :
+    m_pkgid(widgetname),
+    m_widgetSource(sourcePath),
+    m_type(t),
+    m_temp(new WidgetLocation::DirectoryDeletor(dirPath))
+{
+    if (isReadonly) {
         m_installedPath += WrtDB::GlobalConfig::GetUserPreloadedWidgetPath();
     } else {
         m_installedPath += WrtDB::GlobalConfig::GetUserInstalledWidgetPath();
     }
+    // TODO clean-up
+    if (access(m_widgetSource.c_str(), F_OK) != 0) {
+        m_widgetSource = m_installedPath + "/" + m_pkgid;
+    }
 }
 
 // TODO cache all these paths
@@ -107,29 +109,35 @@ std::string WidgetLocation::getInstallationDir() const
 
 std::string WidgetLocation::getPackageInstallationDir() const
 {
-    return m_installedPath + "/" + m_pkgname;
+    return m_installedPath + "/" + m_pkgid;
 }
 
 std::string WidgetLocation::getSourceDir() const
 {
     return m_installedPath + "/"
-            + m_pkgname + WrtDB::GlobalConfig::GetWidgetSrcPath();
+           + m_pkgid + WrtDB::GlobalConfig::GetWidgetSrcPath();
 }
 
 std::string WidgetLocation::getBinaryDir() const
 {
     return m_installedPath + "/"
-            + m_pkgname + WrtDB::GlobalConfig::GetUserWidgetExecPath();
+           + m_pkgid + WrtDB::GlobalConfig::GetUserWidgetExecPath();
+}
+
+std::string WidgetLocation::getUserBinaryDir() const
+{
+    return getUserDataRootDir() + "/"
+           + WrtDB::GlobalConfig::GetUserWidgetExecPath();
 }
 
 std::string WidgetLocation::getExecFile() const
 {
-    return getBinaryDir() + "/" + m_pkgname;
+    return getBinaryDir() + "/" + m_appid;
 }
 
 std::string WidgetLocation::getBackupDir() const
 {
-    return getPackageInstallationDir() + "/backup";
+    return getPackageInstallationDir() + ".backup";
 }
 
 std::string WidgetLocation::getBackupSourceDir() const
@@ -144,19 +152,25 @@ std::string WidgetLocation::getBackupBinaryDir() const
 
 std::string WidgetLocation::getBackupExecFile() const
 {
-    return getBackupBinaryDir() + "/" + m_pkgname;
+    return getBackupBinaryDir() + "/" + m_appid;
+}
+
+std::string WidgetLocation::getBackupPrivateDir() const
+{
+    return getBackupDir() + "/" +
+        WrtDB::GlobalConfig::GetWidgetPrivateStoragePath();
 }
 
 std::string WidgetLocation::getUserDataRootDir() const
 {
     return std::string(WrtDB::GlobalConfig::GetWidgetUserDataPath()) +
-        "/" + m_pkgname;
+           "/" + m_pkgid;
 }
 
 std::string WidgetLocation::getPrivateStorageDir() const
 {
     return getUserDataRootDir() + "/" +
-        WrtDB::GlobalConfig::GetWidgetPrivateStoragePath();
+           WrtDB::GlobalConfig::GetWidgetPrivateStoragePath();
 }
 
 std::string WidgetLocation::getTemporaryPackageDir() const
@@ -167,39 +181,34 @@ std::string WidgetLocation::getTemporaryPackageDir() const
 std::string WidgetLocation::getTemporaryRootDir() const
 {
     if (m_type == WrtDB::PKG_TYPE_DIRECTORY_WEB_APP) {
-        return getWidgetSource();
+        return getWidgetSource() + WrtDB::GlobalConfig::GetWidgetSrcPath();
     }
-    if(m_type == WrtDB::PKG_TYPE_HYBRID_WEB_APP)
-    {
+    if (m_type == WrtDB::PKG_TYPE_HYBRID_WEB_APP) {
         return getTemporaryPackageDir() + WrtDB::GlobalConfig::GetWidgetSrcPath();
-    }
-    else
-    {
+    } else {
         return getTemporaryPackageDir();
     }
 }
 
 std::string WidgetLocation::getConfigurationDir() const
 {
-    if(m_type == WrtDB::PKG_TYPE_HOSTED_WEB_APP)
-    {
+    if (m_type == WrtDB::PKG_TYPE_HOSTED_WEB_APP) {
         std::string path = ".";
-        int index = m_widgetSource.find_last_of("\\/");
-        if (index != std::string::npos)
-        {
+        std::size_t index = m_widgetSource.find_last_of("\\/");
+        if (index != std::string::npos) {
             path = m_widgetSource.substr(0, index);
         }
         return path;
-    }
-    else
-    {
+    } else if (m_type == WrtDB::PKG_TYPE_DIRECTORY_WEB_APP) {
+        return getWidgetSource() + WrtDB::GlobalConfig::GetWidgetSrcPath();
+    } else {
         return getTemporaryRootDir();
     }
 }
 
-DPL::String WidgetLocation::getPkgname() const
+DPL::String WidgetLocation::getPkgId() const
 {
-    return DPL::FromUTF8String(m_pkgname);
+    return DPL::FromUTF8String(m_pkgid);
 }
 
 std::string WidgetLocation::getInstalledIconPath() const
@@ -226,3 +235,8 @@ WrtDB::ExternalLocationList WidgetLocation::listExternalLocations() const
 {
     return m_externals;
 }
+
+void WidgetLocation::registerAppid(const std::string & appid)
+{
+    m_appid = appid;
+}