Fix prevent issue for package manager
[platform/framework/native/appfw.git] / src / app / package / FAppPkg_PackageInfoImpl.cpp
index 4151206..4750878 100755 (executable)
@@ -322,10 +322,10 @@ _PackageInfoImpl::GetPackageAppInfoListN(void)
                        PackageAppInfo* pPackageAppInfo = dynamic_cast <PackageAppInfo*>(__pPackageAppInfoList->GetAt(i));
                        if (pPackageAppInfo)
                        {
-                               PackageAppInfo* pInfo = new (std::nothrow) PackageAppInfo;
+                               std::unique_ptr< PackageAppInfo > pInfo(new (std::nothrow) PackageAppInfo);
                                SysTryReturn(NID_APP, pInfo, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Insufficient memory");
 
-                               _PackageAppInfoImpl* pPackageAppInfoImpl = _PackageAppInfoImpl::GetInstance(pInfo);
+                               _PackageAppInfoImpl* pPackageAppInfoImpl = _PackageAppInfoImpl::GetInstance(pInfo.get());
                                SysTryReturn(NID_APP, pPackageAppInfoImpl, null, E_SYSTEM, "pPackageAppInfoImpl is null.");
 
                                AppId appId = pPackageAppInfo->GetAppId();
@@ -340,7 +340,7 @@ _PackageInfoImpl::GetPackageAppInfoListN(void)
                                pPackageAppInfoImpl->SetMenuIconVisible(menuIconVisible);
                                pPackageAppInfoImpl->SetMainApp(mainApp);
 
-                               r = pList->Add(*pInfo);
+                               r = pList->Add(*pInfo.release());
                        }
                 }
        }
@@ -382,8 +382,6 @@ _PackageInfoImpl::GetPackageAppInfoN(const AppId& appId) const
        {
                SysTryReturn(NID_APP, __pPackageAppInfoList, null, E_SYSTEM, "__pPackageAppInfoList must not be null.");
 
-               result r = E_SUCCESS;
-
                for (int i = 0; i < __pPackageAppInfoList->GetCount(); i++)
                {
                        PackageAppInfo* pPackageAppInfo = dynamic_cast < PackageAppInfo* >(__pPackageAppInfoList->GetAt(i));
@@ -394,24 +392,29 @@ _PackageInfoImpl::GetPackageAppInfoN(const AppId& appId) const
                                        continue;
                                }
 
-                               PackageAppInfo* pInfo = new (std::nothrow) PackageAppInfo;
+                               _PackageAppInfoImpl* pPackageAppInfoImpl = _PackageAppInfoImpl::GetInstance(pPackageAppInfo);
+                               SysTryReturn(NID_APP, pPackageAppInfoImpl, null, E_SYSTEM, "pPackageAppInfoImpl is null.");
+
+                               std::unique_ptr< PackageAppInfo > pInfo(new (std::nothrow) PackageAppInfo);
                                SysTryReturn(NID_APP, pInfo, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Insufficient memory");
 
-                               _PackageAppInfoImpl* pPackageAppInfoImpl = _PackageAppInfoImpl::GetInstance(pInfo);
-                               SysTryReturn(NID_APP, pPackageAppInfoImpl, null, E_SYSTEM, "pPackageAppInfoImpl is null.");
+                               _PackageAppInfoImpl* pImpl = _PackageAppInfoImpl::GetInstance(pInfo.get());
+                               SysTryReturn(NID_APP, pImpl, null, E_SYSTEM, "pImpl is null.");
 
                                String appName = pPackageAppInfo->GetAppName();
                                String appDisplayName = pPackageAppInfo->GetAppDisplayName();
                                bool menuIconVisible = pPackageAppInfo->IsMenuIconVisible();
                                bool mainApp = pPackageAppInfo->IsMainApp();
+                               String tempIconPath = pPackageAppInfoImpl->GetAppTempIconPath();
 
-                               pPackageAppInfoImpl->SetAppId(appId);
-                               pPackageAppInfoImpl->SetAppName(appName);
-                               pPackageAppInfoImpl->SetAppDisplayName(appDisplayName);
-                               pPackageAppInfoImpl->SetMenuIconVisible(menuIconVisible);
-                               pPackageAppInfoImpl->SetMainApp(mainApp);
+                               pImpl->SetAppId(appId);
+                               pImpl->SetAppName(appName);
+                               pImpl->SetAppDisplayName(appDisplayName);
+                               pImpl->SetMenuIconVisible(menuIconVisible);
+                               pImpl->SetMainApp(mainApp);
+                               pImpl->SetAppTempIconPath(tempIconPath);
 
-                               return pInfo;
+                               return pInfo.release();
                        }
                 }
        }
@@ -979,16 +982,11 @@ _PackageInfoImpl::Construct(const PackageId& packageId)
        char* pUrl = null;
        char* pMainAppId = null;
        char* pStoreClientId = null;
+       char* pRootPath = null;
        int installedTime = 0;
        pkgmgrinfo_installed_storage storage = PMINFO_INTERNAL_STORAGE;
        bool removable = true;
 
-       // temp
-       Database db;
-       DbStatement* pStmt = null;
-       DbEnumerator* pEnum = null;
-       String query;
-
        std::unique_ptr<char[]> pPackageId(_StringConverter::CopyToCharArrayN(packageId));
        SysTryReturnResult(NID_APP, pPackageId, E_OUT_OF_MEMORY, "pPackageId is null");
 
@@ -1168,41 +1166,18 @@ _PackageInfoImpl::Construct(const PackageId& packageId)
                SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_storeclientid() is failed. result = [%d]", result);
        }
 
-       // temp
-       query.Format(1024, L"SELECT PkgInfo.*, AppInfo.APP_MAINMENU_ICON FROM AppInfo, PkgInfo WHERE AppInfo.ID = PkgInfo.UNIQUE_ID and AppInfo.APP_DEFAULT = 'True' and PkgInfo.PKG_ID = '%ls'", packageId.GetPointer());
-
-       r = db.Construct(PACKAGE_DATABASE_FILE_NAME, "r");
-       SysTryCatch(NID_APP, r == E_SUCCESS, , r, "[%s] An error occurs while opening a database.", GetErrorMessage(r));
-
-       pStmt = _PackageManagerImpl::CreateStatementN(db, query);
-       SysTryCatch(NID_APP, pStmt != null, GetLastResult(), GetLastResult(), "[%s] An error occurs while creating a database statement.", GetErrorMessage(GetLastResult()));
-
-       pEnum = _PackageManagerImpl::ExecuteStatementN(db, pStmt);
-       if (pEnum != null)
+       result = pkgmgrinfo_pkginfo_get_root_path(__packageInfoHandle, &pRootPath);
+       if (result == PMINFO_R_OK)
        {
-               if (pEnum->MoveNext() == E_SUCCESS)
-               {
-                       String rootPath;
-                       int storageType = 0;
-
-                       if (pEnum->GetColumnType(16) != DB_COLUMNTYPE_NULL)
-                       {
-                               pEnum->GetStringAt(16, rootPath);
-                       }
-                       if (pEnum->GetColumnType(17) != DB_COLUMNTYPE_NULL)
-                       {
-                               pEnum->GetIntAt(17, storageType);
-                       }
-
-                       SetAppRootPath(rootPath);
-                       SetAppStorageType(storageType);
-               }
-
-               delete pEnum;
+               SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_root_path(): rootPath = [%s]", pRootPath);
+               String rootPath(pRootPath);
+               __appRootPath = rootPath;
+       }
+       else
+       {
+               SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_root_path() is failed. result = [%d]", result);
        }
 
-CATCH:
-       delete pStmt;
        return r;
 }