GetPackageInfoFromFileN() API is updated.
authorDuyoung Jang <duyoung.jang@samsung.com>
Wed, 20 Mar 2013 04:02:10 +0000 (13:02 +0900)
committerDuyoung Jang <duyoung.jang@samsung.com>
Wed, 20 Mar 2013 04:02:10 +0000 (13:02 +0900)
Change-Id: I95dd2f5e838bc5428b86b7a0284e9b738f5479df
Signed-off-by: Duyoung Jang <duyoung.jang@samsung.com>
src/app/package/FAppPkg_PackageManagerImpl.cpp

index b7eb50a..ec6b152 100755 (executable)
 #include <dlog.h>
 #include <unique_ptr.h>
 
-#include <FSysSystemTime.h>
+#include <package-manager-types.h>
+
 #include <FAppPkgPackageManager.h>
 #include <FAppPkgPackageAppInfo.h>
 #include <FAppPkgPackageInfo.h>
 #include <FAppPkgIPackageInstallationEventListener.h>
 #include <FAppPkgIPackageInstallationResponseListener.h>
 #include <FAppPkgIPackageUninstallationResponseListener.h>
+#include <FBaseSysLog.h>
 #include <FIo.h>
 #include <FIoRegistry.h>
-
-#include <FBaseSysLog.h>
+#include <FSysSystemTime.h>
 #include <FBase_StringConverter.h>
 
 #include "FAppPkg_PackageManagerImpl.h"
@@ -719,27 +720,52 @@ _PackageManagerImpl::GetPackageInfoFromFileN(const String& filePath) const
        std::unique_ptr<char[]> pExtension(_StringConverter::CopyToCharArrayN(extension));
        SysTryReturn(NID_APP, pExtension, null, E_OUT_OF_MEMORY, "pExtension is null.");
 
-       bool res = false;
+       std::unique_ptr< PackageInfo > pPackageInfo(new (std::nothrow) PackageInfo);
+       SysTryReturn(NID_APP, pPackageInfo, null, E_OUT_OF_MEMORY, "pPackageInfo instance must not be null.");
 
-       if ((strcasecmp(pExtension.get(), "tpk") == 0) || (strcasecmp(pExtension.get(), "wgt") == 0))
+       SysLog(NID_APP, "packagePath = [%s], extension = [%s]", pPackagePath.get(), pExtension.get());
+
+       bool res = true;
+
+       if (strcasecmp(pExtension.get(), "tpk") == 0)
        {
-               SysLog(NID_APP, "packagePath = [%s], extension = [%s]", pPackagePath.get(), pExtension.get());
-               res = true;
+               _PackageParser packageParser;
+
+               res = packageParser.Construct(pPackageInfo.get());
+               SysTryReturn(NID_APP, res, null, E_PARSING_FAILED, "Construct() is failed. [%s]", pPackagePath.get());
+
+               res = packageParser.Parse(filePath);
+               SysTryReturn(NID_APP, res, null, E_PARSING_FAILED, "Parse() is failed. [%s]", pPackagePath.get());
        }
-       SysTryReturn(NID_APP, res == true, null, E_UNSUPPORTED_FORMAT, "invalid extension! - packagePath = [%s], extension = [%s]", pPackagePath.get(), pExtension.get());
+       else if (strcasecmp(pExtension.get(), "wgt") == 0)
+       {
+               pkgmgr_info* pPkgmgrInfo = null;
 
-       _PackageParser packageParser;
+               pPkgmgrInfo = pkgmgr_client_check_pkginfo_from_file(pPackagePath.get());
+               SysTryReturn(NID_APP, pPkgmgrInfo, null, E_PARSING_FAILED, "pkgmgr_client_check_pkginfo_from_file(%s) is failed.", pPackagePath.get());
 
-       PackageInfo* pPackageInfo = new (std::nothrow) PackageInfo;
-       SysTryReturn(NID_APP, pPackageInfo, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] pPackageInfo instance must not be null.");
+               _package_manager_pkg_detail_info_t* pPkgInfo = (_package_manager_pkg_detail_info_t*) pPkgmgrInfo;
+               _PackageInfoImpl* pPackageInfoImpl = _PackageInfoImpl::GetInstance(pPackageInfo.get());
 
-       res = packageParser.Construct(pPackageInfo);
-       SysTryReturn(NID_APP, res, null, E_PARSING_FAILED, "Construct() is failed. [%s]", pPackagePath.get());
+               SysLog(NID_APP, "id(%s), version(%s), label(%s), description(%s), author(%s)", pPkgInfo->pkgid, pPkgInfo->version, pPkgInfo->label, pPkgInfo->pkg_description, pPkgInfo->author);
 
-       res = packageParser.Parse(filePath);
-       SysTryReturn(NID_APP, res, null, E_PARSING_FAILED, "Parse() is failed. [%s]", pPackagePath.get());
+               pPackageInfoImpl->SetType(PACKAGE_TYPE_WGT);
+               pPackageInfoImpl->SetId(pPkgInfo->pkgid);
+               pPackageInfoImpl->SetVersion(pPkgInfo->version);
+               pPackageInfoImpl->SetDisplayName(pPkgInfo->label);
+               pPackageInfoImpl->SetDescription(pPkgInfo->pkg_description);
+               pPackageInfoImpl->SetAuthor(pPkgInfo->author);
+               // icon
+               // privilege
 
-       return pPackageInfo;
+               pkgmgr_client_free_pkginfo(pPkgmgrInfo);
+       }
+       else
+       {
+               SysTryReturn(NID_APP, false, null, E_UNSUPPORTED_FORMAT, "invalid extension! - packagePath = [%s], extension = [%s]", pPackagePath.get(), pExtension.get());
+       }
+
+       return pPackageInfo.release();
 }
 
 IList*