GetAppFeature() is added.
[platform/framework/native/appfw.git] / src / app / package / FAppPkg_PackageInfoImpl.cpp
index fd97e11..47478e4 100755 (executable)
@@ -380,7 +380,38 @@ _PackageInfoImpl::GetPackageAppInfoN(const AppId& appId) const
        }
        else
        {
-               SysLog(NID_APP, "GetPackageAppInfoN() is not available.");
+               SysTryReturn(NID_APP, __pPackageAppInfoList, null, E_SYSTEM, "__pPackageAppInfoList must not be null.");
+
+               for (int i = 0; i < __pPackageAppInfoList->GetCount(); i++)
+               {
+                       PackageAppInfo* pPackageAppInfo = dynamic_cast < PackageAppInfo* >(__pPackageAppInfoList->GetAt(i));
+                       if (pPackageAppInfo)
+                       {
+                               if (appId != pPackageAppInfo->GetAppId())
+                               {
+                                       continue;
+                               }
+
+                               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.");
+
+                               String appName = pPackageAppInfo->GetAppName();
+                               String appDisplayName = pPackageAppInfo->GetAppDisplayName();
+                               bool menuIconVisible = pPackageAppInfo->IsMenuIconVisible();
+                               bool mainApp = pPackageAppInfo->IsMainApp();
+
+                               pPackageAppInfoImpl->SetAppId(appId);
+                               pPackageAppInfoImpl->SetAppName(appName);
+                               pPackageAppInfoImpl->SetAppDisplayName(appDisplayName);
+                               pPackageAppInfoImpl->SetMenuIconVisible(menuIconVisible);
+                               pPackageAppInfoImpl->SetMainApp(mainApp);
+
+                               return pInfo;
+                       }
+                }
        }
 
        return null;
@@ -946,16 +977,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");
 
@@ -1135,41 +1161,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;
 }