Add shared directory
authorSoyoung Kim <sy037.kim@samsung.com>
Tue, 7 May 2013 06:25:58 +0000 (15:25 +0900)
committerGerrit Code Review <gerrit2@kim11>
Wed, 8 May 2013 04:31:41 +0000 (13:31 +0900)
[Issue#] N/A
[Problem] N/A
[Cause] N/A
[Solution] add shared directory
[SCMRequest] N/A

src/jobs/widget_install/task_file_manipulation.cpp
src/jobs/widget_install/task_file_manipulation.h
src/misc/widget_location.cpp
src/misc/widget_location.h

index e32607b..b1629de 100644 (file)
@@ -157,12 +157,14 @@ TaskFileManipulation::TaskFileManipulation(InstallerContext& context) :
             AddAbortStep(&TaskFileManipulation::StepAbortRenamePath);
         }
         AddStep(&TaskFileManipulation::StepCreatePrivateStorageDir);
+        AddStep(&TaskFileManipulation::StepCreateSharedFolder);
         AddStep(&TaskFileManipulation::StepLinkForPreload);
 
     } else {
         AddStep(&TaskFileManipulation::StepPrepareExternalDir);
         AddStep(&TaskFileManipulation::StepInstallToExternal);
         AddStep(&TaskFileManipulation::StepCreatePrivateStorageDir);
+        AddStep(&TaskFileManipulation::StepCreateSharedFolder);
 
         AddAbortStep(&TaskFileManipulation::StepAbortCreateExternalDir);
     }
@@ -406,5 +408,29 @@ void TaskFileManipulation::StepAbortCreateExternalDir()
     }
     WidgetInstallToExtSingleton::Instance().deinitialize();
 }
+
+void TaskFileManipulation::StepCreateSharedFolder()
+{
+    LogDebug("StepCreateSharedFolder");
+    std::string sharedPath = m_context.locations->getSharedRootDir();
+    LogDebug("Create shared directory : " <<
+            m_context.locations->getSharedRootDir());
+
+    WrtUtilMakeDir(sharedPath);
+
+    if (m_context.isUpdateMode) { //update
+        std::string backData = m_context.locations->getBackupSharedDir();
+        LogDebug("copy shared storage " << backData << " to " << sharedPath);
+        if (!DirectoryApi::DirectoryCopy(backData, sharedPath)) {
+            LogError("Failed to rename " << backData << " to " << sharedPath);
+            ThrowMsg(Exceptions::BackupFailed,
+                    "Error occurs copy shared strage files");
+        }
+    } else {
+        WrtUtilMakeDir(m_context.locations->getSharedResourceDir());
+        WrtUtilMakeDir(m_context.locations->getSharedDataDir());
+        WrtUtilMakeDir(m_context.locations->getSharedTrustedDir());
+    }
+}
 } //namespace WidgetInstall
 } //namespace Jobs
index 44b20f5..fc1d9ff 100644 (file)
@@ -39,6 +39,7 @@ class TaskFileManipulation :
     void StepCreateDirs();
     void StepRenamePath();
     void StepCreatePrivateStorageDir();
+    void StepCreateSharedFolder();
 
     void StepAbortRenamePath();
     void StepLinkForPreload();
index adfbd44..a2905aa 100644 (file)
@@ -240,3 +240,29 @@ void WidgetLocation::registerAppid(const std::string & appid)
 {
     m_appid = appid;
 }
+
+std::string WidgetLocation::getSharedRootDir() const
+{
+    /* TODO : add wrt-commons*/
+    return getUserDataRootDir() + "/shared";
+}
+
+std::string WidgetLocation::getSharedResourceDir() const
+{
+    return getSharedRootDir() + "/res";
+}
+
+std::string WidgetLocation::getSharedDataDir() const
+{
+    return getSharedRootDir() + "/data";
+}
+
+std::string WidgetLocation::getSharedTrustedDir() const
+{
+    return getSharedRootDir() + "/trusted";
+}
+
+std::string WidgetLocation::getBackupSharedDir() const
+{
+    return getBackupDir() + "/shared";
+}
index 0cdcbdd..ad73d80 100644 (file)
@@ -124,6 +124,11 @@ class WidgetLocation
     std::string getBackupPrivateDir() const;  // /opt/apps/[pkg].backup/data
     std::string getUserDataRootDir() const; // /opt/usr/apps/[package]
     std::string getPrivateStorageDir() const; // /opt/usr/apps/[package]/data
+    std::string getSharedRootDir() const; // /opt/usr/apps/[package]/shared
+    std::string getSharedResourceDir() const; // /opt/usr/apps/[package]/shared/res
+    std::string getSharedDataDir() const; // /opt/usr/apps/[package]/shared/data
+    std::string getSharedTrustedDir() const; // /opt/usr/apps/[package]/shared/trusted
+    std::string getBackupSharedDir() const; // /opt/usr/apps/[package].backup/shared
 
     // Temporary paths
     /**