2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
18 * @file FAppPkg_PackageInfoImpl.cpp
19 * @brief This is the implementation for the _PackageInfoImpl class.
25 #include <unique_ptr.h>
27 #include <FAppPkgPackageManager.h>
28 #include <FAppPkgPackageAppInfo.h>
29 #include <FAppPkgPackageInfo.h>
30 #include <FIoDatabase.h>
31 #include <FIoDbEnumerator.h>
32 #include <FIoDbStatement.h>
33 #include <FBaseSysLog.h>
35 #include <FBase_StringConverter.h>
36 #include <FBaseUtilStringTokenizer.h>
38 #include "FAppPkg_PackageManagerImpl.h"
39 #include "FAppPkg_PackageInfoImpl.h"
40 #include "FAppPkg_PackageAppInfoImpl.h"
42 using namespace Tizen::Base;
43 using namespace Tizen::Base::Collection;
44 using namespace Tizen::Io;
45 using namespace Tizen::Base::Utility;
47 namespace Tizen { namespace App { namespace Package
51 _PackageInfoImpl::GetId(void) const
57 _PackageInfoImpl::SetId(const PackageId& id)
64 _PackageInfoImpl::GetVersion(void) const
70 _PackageInfoImpl::SetVersion(const String& version)
77 _PackageInfoImpl::GetType(void) const
83 _PackageInfoImpl::SetType(PackageType packageType)
85 __packageType = packageType;
90 _PackageInfoImpl::GetDisplayName(void) const
96 _PackageInfoImpl::SetDisplayName(const String& displayName)
98 __displayName = displayName;
103 _PackageInfoImpl::GetDescription(void) const
105 return __description;
109 _PackageInfoImpl::SetDescription(const String& description)
111 __description = description;
116 _PackageInfoImpl::GetAuthor(void) const
122 _PackageInfoImpl::SetAuthor(const String& author)
129 _PackageInfoImpl::GetUrl(void) const
135 _PackageInfoImpl::SetUrl(const String& url)
142 _PackageInfoImpl::GetInstallationTime(void) const
148 _PackageInfoImpl::SetInstallationTime(const DateTime& installationTime)
150 __dateTime = installationTime;
155 _PackageInfoImpl::IsInstalledInExternalStorage(void) const
157 return __externalStorage;
161 _PackageInfoImpl::SetInstalledInExternalStorage(bool externalStorage)
163 __externalStorage = externalStorage;
168 _PackageInfoImpl::IsUninstallable(void) const
170 return __uninstallable;
174 _PackageInfoImpl::SetUninstallable(bool uninstallable)
176 __uninstallable = uninstallable;
181 _PackageInfoImpl::IsMovable(void) const
187 _PackageInfoImpl::SetMovable(bool movable)
194 _PackageInfoImpl::IsDownloaded(void) const
200 _PackageInfoImpl::SetDownloaded(bool downloaded)
202 __downloaded = downloaded;
207 _PackageInfoImpl::GetSize(void) const
213 SysTryReturn(NID_APP, __packageInfoHandle, 0, E_SYSTEM, "[E_SYSTEM] __packageInfoHandle is null.");
215 int result = PMINFO_R_OK;
217 result = pkgmgrinfo_pkginfo_get_total_size(__packageInfoHandle, &size);
218 if (result == PMINFO_R_OK)
220 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_total_size(): size = [%d]", size);
224 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_total_size() is failed. result = [%d]", result);
229 SysLog(NID_APP, "GetSize() is not available.");
232 return (long long) size;
236 _PackageInfoImpl::GetDataSize(void) const
242 SysTryReturn(NID_APP, __packageInfoHandle, 0, E_SYSTEM, "[E_SYSTEM] __packageInfoHandle is null.");
244 int result = PMINFO_R_OK;
246 result = pkgmgrinfo_pkginfo_get_data_size(__packageInfoHandle, &dataSize);
247 if (result == PMINFO_R_OK)
249 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_data_size(): dataSize = [%d]", dataSize);
253 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_data_size() is failed. result = [%d]", result);
258 SysLog(NID_APP, "GetDataSize() is not available.");
261 return (long long) dataSize;
265 _PackageInfoImpl::GetMainAppId(void) const
271 _PackageInfoImpl::SetMainAppId(const AppId& appId)
278 _PackageInfoImpl::GetStoreClientId(void) const
280 return __storeClientId;
284 _PackageInfoImpl::SetStoreClientId(const PackageId& packageId)
286 __storeClientId = packageId;
291 _PackageInfoImpl::GetPackageAppInfoListN(void)
293 ArrayList* pList = null;
297 SysTryReturn(NID_APP, __packageInfoHandle, null, E_SYSTEM, "[E_SYSTEM] __packageInfoHandle is null.");
301 pList = new (std::nothrow) ArrayList;
302 SysTryReturn(NID_APP, pList != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Insufficient memory");
305 res = pkgmgrinfo_appinfo_get_list(__packageInfoHandle, PMINFO_UI_APP, PackageAppInfoListHandler, (void *)pList);
306 res = pkgmgrinfo_appinfo_get_list(__packageInfoHandle, PMINFO_SVC_APP, PackageAppInfoListHandler, (void *)pList);
310 SysTryReturn(NID_APP, __pPackageAppInfoList, null, E_SYSTEM, "__pPackageAppInfoList must not be null.");
312 result r = E_SUCCESS;
314 pList = new (std::nothrow) ArrayList;
315 SysTryReturn(NID_APP, pList, null, E_OUT_OF_MEMORY, "pList must not be null.");
318 for (int i = 0; i < __pPackageAppInfoList->GetCount(); i++)
320 PackageAppInfo* pPackageAppInfo = dynamic_cast <PackageAppInfo*>(__pPackageAppInfoList->GetAt(i));
323 PackageAppInfo* pInfo = new (std::nothrow) PackageAppInfo;
324 SysTryReturn(NID_APP, pInfo, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Insufficient memory");
326 _PackageAppInfoImpl* pPackageAppInfoImpl = _PackageAppInfoImpl::GetInstance(pInfo);
327 SysTryReturn(NID_APP, pPackageAppInfoImpl, null, E_SYSTEM, "pPackageAppInfoImpl is null.");
329 AppId appId = pPackageAppInfo->GetAppId();
330 String appName = pPackageAppInfo->GetAppName();
331 String appDisplayName = pPackageAppInfo->GetAppDisplayName();
332 bool menuIconVisible = pPackageAppInfo->IsMenuIconVisible();
333 bool mainApp = pPackageAppInfo->IsMainApp();
335 pPackageAppInfoImpl->SetAppId(appId);
336 pPackageAppInfoImpl->SetAppName(appName);
337 pPackageAppInfoImpl->SetAppDisplayName(appDisplayName);
338 pPackageAppInfoImpl->SetMenuIconVisible(menuIconVisible);
339 pPackageAppInfoImpl->SetMainApp(mainApp);
341 r = pList->Add(*pInfo);
350 _PackageInfoImpl::GetPackageAppInfoN(const AppId& appId) const
354 SysTryReturn(NID_APP, __packageInfoHandle, null, E_SYSTEM, "[E_SYSTEM] __packageInfoHandle is null.");
357 pkgmgrinfo_appinfo_h appInfoHandle = null;
359 std::unique_ptr<char[]> pAppId(_StringConverter::CopyToCharArrayN(appId));
360 SysTryReturn(NID_APP, pAppId, null, E_OUT_OF_MEMORY, "pAppId is null");
362 res = pkgmgrinfo_appinfo_get_appinfo(pAppId.get(), &appInfoHandle);
365 SysLog(NID_APP, "pkgmgrinfo_appinfo_get_appinfo(): appId = [%s]", pAppId.get());
367 PackageAppInfo* pPackageAppInfo = new (std::nothrow) PackageAppInfo;
368 SysTryReturn(NID_APP, pPackageAppInfo != null, 0, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Insufficient memory");
370 GetPackageAppInfo(appInfoHandle, pPackageAppInfo);
372 return pPackageAppInfo;
376 SysLog(NID_APP, "pkgmgrinfo_appinfo_get_appinfo() is failed. result = [%d]", res);
381 SysLog(NID_APP, "GetPackageAppInfoN() is not available.");
388 _PackageInfoImpl::PackageAppInfoListHandler(const pkgmgrinfo_appinfo_h handle, void* pUser_data)
390 ArrayList* pList = (ArrayList*) pUser_data;
392 PackageAppInfo* pPackageAppInfo = new (std::nothrow) PackageAppInfo;
393 SysTryReturn(NID_APP, pPackageAppInfo != null, 0, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Insufficient memory");
395 GetPackageAppInfo(handle, pPackageAppInfo);
397 pList->Add(*pPackageAppInfo);
403 _PackageInfoImpl::GetPackageAppInfo(const pkgmgrinfo_appinfo_h handle, PackageAppInfo* pPackageAppInfo)
405 SysTryReturn(NID_APP, pPackageAppInfo, false, E_INVALID_ARG, "[E_INVALID_ARG] pPackageAppInfo is null.");
410 _PackageAppInfoImpl* pPackageAppInfoImpl = _PackageAppInfoImpl::GetInstance(pPackageAppInfo);
412 res = pkgmgrinfo_appinfo_get_appid(handle, &pAppId);
415 SysLog(NID_APP, "pkgmgrinfo_appinfo_get_appid(): appId = [%s]", pAppId);
416 pPackageAppInfoImpl->Construct(pAppId);
420 SysLog(NID_APP, "pkgmgrinfo_appinfo_get_appid() is failed. result = [%d]", res);
427 _PackageInfoImpl::GetPrivilegeListN(void) const
429 SysTryReturn(NID_APP, __pPrivilegeList, null, E_SYSTEM, "__pPrivilegeList must not be null.");
431 result r = E_SUCCESS;
433 ArrayList* pPrivilegeList = new (std::nothrow) ArrayList;
434 SysTryReturn(NID_APP, pPrivilegeList, null, E_OUT_OF_MEMORY, "pPrivilegeList must not be null.");
435 pPrivilegeList->Construct();
437 for (int i = 0; i < __pPrivilegeList->GetCount(); i++)
439 String* pPrivilege = dynamic_cast <String*>(__pPrivilegeList->GetAt(i));
442 String* pPrivilegeString = new (std::nothrow) String(*pPrivilege);
443 SysTryReturn(NID_APP, pPrivilegeString, null, E_OUT_OF_MEMORY, "pPrivilegeString must not be null.");
445 r = pPrivilegeList->Add(*pPrivilegeString);
449 return pPrivilegeList;
453 _PackageInfoImpl::AddPrivilege(const String& privilege)
455 result r = E_SUCCESS;
457 r = __pPrivilegeList->Add(privilege);
458 SysTryReturnResult(NID_APP, !IsFailed(r), r, "__pPrivilegeList->Add() is failed.");
464 _PackageInfoImpl::AddPackageAppInfo(const PackageAppInfo& packageAppInfo)
466 result r = E_SUCCESS;
467 r = __pPackageAppInfoList->Add(packageAppInfo);
468 SysTryReturnResult(NID_APP, !IsFailed(r), r, "__pPackageAppInfoList->Add() is failed.");
474 _PackageInfoImpl::_PackageInfoImpl(void)
475 : __appReadOnlySize(0)
477 , __appStorageType(0)
480 , __pPrivilegeList(null)
481 , __pAppInfoImplList(null)
482 , __pPackageAppInfoList(null)
483 , __packageInfoHandle(null)
484 , __uninstallable(true)
486 , __downloaded(false)
487 , __iconAvailable(false)
488 , __externalStorage(false)
489 , __fromDatabase(false)
490 , __packageType(PACKAGE_TYPE_TPK)
491 , __pPackageInfo(null)
493 __pAppInfoImplList = new (std::nothrow) ArrayList;
494 SysTryReturnVoidResult(NID_APP, __pAppInfoImplList != null, E_OUT_OF_MEMORY, "__pAppInfoImplList instance must not be null.");
495 __pAppInfoImplList->Construct();
497 __pPackageAppInfoList = new (std::nothrow) ArrayList;
498 SysTryReturnVoidResult(NID_APP, __pPackageAppInfoList != null, E_OUT_OF_MEMORY, "__pPackageAppInfoList instance must not be null.");
499 __pPackageAppInfoList->Construct();
501 __pPrivilegeList = new (std::nothrow) ArrayList;
502 SysTryReturnVoidResult(NID_APP, __pPrivilegeList != null, E_OUT_OF_MEMORY, "__pPrivilegeList must not be null.");
503 __pPrivilegeList->Construct();
506 _PackageInfoImpl::~_PackageInfoImpl(void)
508 __pAppInfoImplList->RemoveAll(true);
509 delete __pAppInfoImplList;
511 __pPackageAppInfoList->RemoveAll(true);
512 delete __pPackageAppInfoList;
514 __pPrivilegeList->RemoveAll(true);
515 delete __pPrivilegeList;
517 if (__packageInfoHandle)
519 pkgmgrinfo_pkginfo_destroy_pkginfo(__packageInfoHandle);
524 _PackageInfoImpl::GetAppId(void) const
530 _PackageInfoImpl::SetAppId(const String& id)
537 _PackageInfoImpl::GetAppVersion(void) const
543 _PackageInfoImpl::SetAppVersion(const String& appVersion)
545 __version = appVersion;
550 _PackageInfoImpl::GetAppType(void) const
556 _PackageInfoImpl::SetAppType(const String& appType)
563 _PackageInfoImpl::GetAppMimeType(void) const
565 return __appMimeType;
569 _PackageInfoImpl::SetAppMimeType(const String& appMimeType)
571 __appMimeType = appMimeType;
576 _PackageInfoImpl::GetAppApiVersion(void) const
578 return __appApiVersion;
582 _PackageInfoImpl::SetAppApiVersion(const String& appApiVersion)
584 __appApiVersion = appApiVersion;
589 _PackageInfoImpl::GetAppName(void) const
591 return __displayName;
595 _PackageInfoImpl::SetAppName(const String& appName)
597 __displayName = appName;
602 _PackageInfoImpl::GetAppDescription(void) const
604 return __description;
608 _PackageInfoImpl::SetAppDescription(const String& appDescription)
610 __description = appDescription;
615 _PackageInfoImpl::GetAppVendor(void) const
621 _PackageInfoImpl::SetAppVendor(const String& appVendor)
623 __author = appVendor;
628 _PackageInfoImpl::GetAppUrl(void) const
634 _PackageInfoImpl::SetAppUrl(const String& appUrl)
641 _PackageInfoImpl::GetAppCid(void) const
647 _PackageInfoImpl::SetAppCid(const String& appCid)
654 _PackageInfoImpl::GetAppRootPath(void) const
656 return __appRootPath;
660 _PackageInfoImpl::SetAppRootPath(const String& appRootPath)
662 __appRootPath = appRootPath;
667 _PackageInfoImpl::GetAppStorageType(void) const
669 return __appStorageType;
673 _PackageInfoImpl::SetAppStorageType(int appStorageType)
675 __appStorageType = appStorageType;
680 _PackageInfoImpl::GetCertType(void) const
686 _PackageInfoImpl::SetCertType(int certType)
688 __certType = certType;
693 _PackageInfoImpl::GetAppInfoListN(void) const
695 result r = E_SUCCESS;
697 DbStatement* pStmt = null;
698 DbEnumerator* pEnum = null;
701 ArrayList* pList = null;
703 query.Format(1024, L"SELECT * FROM AppInfo WHERE ID = %d", GetUniqueId());
705 r = db.Construct(PACKAGE_DATABASE_FILE_NAME, "r");
706 SysTryCatch(NID_APP, r == E_SUCCESS, , r, "[%s] An error occurs while opening a database.", GetErrorMessage(r));
708 pStmt = _PackageManagerImpl::CreateStatementN(db, query);
709 SysTryCatch(NID_APP, pStmt != null, GetLastResult(), GetLastResult(), "[%s] An error occurs while creating a database statement.", GetErrorMessage(GetLastResult()));
711 pEnum = _PackageManagerImpl::ExecuteStatementN(db, pStmt);
714 pList = new (std::nothrow) ArrayList;
715 SysTryReturn(NID_APP, pList != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Insufficient memory");
718 while (pEnum->MoveNext() == E_SUCCESS)
720 _PackageAppInfoImpl* pPackageAppInfoImpl = new (std::nothrow) _PackageAppInfoImpl;
721 SysTryReturn(NID_APP, pPackageAppInfoImpl != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Insufficient memory");
731 String quickpanelIcon;
732 //String launchImageIcon;
736 pEnum->GetIntAt(0, uniqueId);
737 pEnum->GetIntAt(1, pkgId);
738 pEnum->GetStringAt(2, name);
739 pEnum->GetStringAt(3, type);
740 pEnum->GetStringAt(4, defaultapp);
741 pEnum->GetStringAt(5, mainmenuIcon);
742 pEnum->GetStringAt(6, settingIcon);
743 //pEnum->GetStringAt(7, tickerIcon);
744 pEnum->GetStringAt(8, quickpanelIcon);
745 //pEnum->GetStringAt(9, launchImageIcon);
746 pEnum->GetIntAt(10, appFeature);
747 pEnum->GetStringAt(11, packageName);
749 pPackageAppInfoImpl->SetUniqueId(uniqueId);
750 pPackageAppInfoImpl->SetPkgId(pkgId);
751 pPackageAppInfoImpl->SetName(name);
752 pPackageAppInfoImpl->SetType(type);
753 pPackageAppInfoImpl->SetDefault(defaultapp);
754 pPackageAppInfoImpl->SetMainmenuIcon(mainmenuIcon);
755 pPackageAppInfoImpl->SetSettingIcon(settingIcon);
756 //pPackageAppInfoImpl->SetTickerIcon(tickerIcon);
757 pPackageAppInfoImpl->SetQuickpanelIcon(quickpanelIcon);
758 //pPackageAppInfoImpl->SetLaunchImageIcon(launchImageIcon);
759 pPackageAppInfoImpl->SetAppFeature(appFeature);
760 pPackageAppInfoImpl->SetPackageName(packageName);
762 pList->Add(*pPackageAppInfoImpl);
774 _PackageInfoImpl::GetAppInfoList(void)
776 if (__pAppInfoImplList == null)
778 __pAppInfoImplList = GetAppInfoListN();
781 return __pAppInfoImplList;
785 _PackageInfoImpl::AddAppInfo(const _PackageAppInfoImpl& appInfoImpl)
787 result r = E_SUCCESS;
788 r = __pAppInfoImplList->Add(appInfoImpl);
789 SysTryReturnResult(NID_APP, !IsFailed(r), r, "__pAppInfoImplList->Add() is failed.");
795 _PackageInfoImpl::GetPrivileges(String& privileges, String& hmacPrivileges, ArrayList& privilegeList)
797 result r = E_SUCCESS;
799 DbStatement* pStmt = null;
800 DbEnumerator* pEnum = null;
803 String privilegeListString;
805 String privilegeToken;
808 query.Format(1024, L"SELECT * FROM PkgPrivileges WHERE ID = %d", GetUniqueId());
810 r = db.Construct(PACKAGE_DATABASE_FILE_NAME, "r");
811 SysTryCatch(NID_APP, r == E_SUCCESS, , r, "[%s] An error occurs while opening a database.", GetErrorMessage(r));
813 pStmt = _PackageManagerImpl::CreateStatementN(db, query);
814 SysTryCatch(NID_APP, pStmt != null, GetLastResult(), GetLastResult(), "[%s] An error occurs while creating a database statement.", GetErrorMessage(GetLastResult()));
816 pEnum = _PackageManagerImpl::ExecuteStatementN(db, pStmt);
819 if (pEnum->MoveNext() == E_SUCCESS)
821 pEnum->GetStringAt(1, privileges);
822 pEnum->GetStringAt(2, hmacPrivileges);
823 pEnum->GetStringAt(4, privilegeListString);
826 StringTokenizer strTok(privilegeListString, delim);
828 while (strTok.HasMoreTokens())
830 strTok.GetNextToken(privilegeToken);
831 privilegeList.Add(new String(privilegeToken));
845 _PackageInfoImpl::GetPrivilegesValue(String& privileges, String& hmacPrivileges) const
847 privileges = __privileges;
848 hmacPrivileges = __hmacPrivileges;
854 _PackageInfoImpl::SetPrivilegesValue(const String& privileges, const String& hmacPrivileges)
856 __privileges = privileges;
857 __hmacPrivileges = hmacPrivileges;
863 _PackageInfoImpl::GetApiVisibility() const
865 result r = E_SUCCESS;
866 int apiVisibility = 0;
868 DbStatement* pStmt = null;
869 DbEnumerator* pEnum = null;
872 query.Format(1024, L"SELECT CERTIFICATE_TYPE FROM PkgPrivileges WHERE ID = %d", GetUniqueId());
874 r = db.Construct(PACKAGE_DATABASE_FILE_NAME, "r");
875 SysTryCatch(NID_APP, r == E_SUCCESS, apiVisibility = -1, r, "[%s] An error occurs while opening a database.", GetErrorMessage(r));
877 pStmt = _PackageManagerImpl::CreateStatementN(db, query);
878 SysTryCatch(NID_APP, pStmt != null, apiVisibility = -1, GetLastResult(), "[%s] An error occurs while creating a database statement.", GetErrorMessage(GetLastResult()));
880 pEnum = _PackageManagerImpl::ExecuteStatementN(db, pStmt);
883 if (pEnum->MoveNext() == E_SUCCESS)
885 if (pEnum->GetColumnType(0) != DB_COLUMNTYPE_NULL)
887 r = pEnum->GetIntAt(0, apiVisibility);
888 SysTryCatch(NID_APP, r == E_SUCCESS, apiVisibility = -1, r, "[%s] GetIntAt() is failed.", GetErrorMessage(r));
899 return apiVisibility;
903 _PackageInfoImpl::GetAppIconPath(void) const
905 return __appIconPath;
909 _PackageInfoImpl::SetAppIconPath(const Tizen::Base::String& appIconPath)
911 __appIconPath = appIconPath;
917 _PackageInfoImpl::GetAppInstallationTime(void) const
923 _PackageInfoImpl::SetAppInstallationTime(const DateTime& installationTime)
925 __dateTime = installationTime;
931 _PackageInfoImpl::Construct(const PackageId& packageId)
933 result r = E_SUCCESS;
935 char* pPackage = null;
936 char* pVersion = null;
938 char* pIconPath = null;
940 char* pDescription = null;
941 char* pAuthor = null;
943 char* pMainAppId = null;
944 char* pStoreClientId = null;
945 int installedTime = 0;
946 pkgmgrinfo_installed_storage storage = PMINFO_INTERNAL_STORAGE;
947 bool removable = true;
951 DbStatement* pStmt = null;
952 DbEnumerator* pEnum = null;
955 std::unique_ptr<char[]> pPackageId(_StringConverter::CopyToCharArrayN(packageId));
956 SysTryReturnResult(NID_APP, pPackageId, E_OUT_OF_MEMORY, "pPackageId is null");
958 result = pkgmgrinfo_pkginfo_get_pkginfo(pPackageId.get(), &__packageInfoHandle);
959 SysTryReturnResult(NID_APP, result == PMINFO_R_OK, E_PKG_NOT_INSTALLED, "pkgmgrinfo_pkginfo_get_pkginfo() is failed. result=[%d], packageId=[%s]", result, pPackageId.get());
961 __fromDatabase = true;
963 result = pkgmgrinfo_pkginfo_get_pkgname(__packageInfoHandle, &pPackage);
964 if (result == PMINFO_R_OK)
966 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_pkgname(): package = [%s]", pPackage);
967 String package(pPackage);
972 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_pkgname() is failed. result = [%d]", result);
975 result = pkgmgrinfo_pkginfo_get_version(__packageInfoHandle, &pVersion);
976 if (result == PMINFO_R_OK)
978 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_version(): version = [%s]", pVersion);
979 String version(pVersion);
984 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_version() is failed. result = [%d]", result);
987 result = pkgmgrinfo_pkginfo_get_type(__packageInfoHandle, &pType);
988 if (result == PMINFO_R_OK)
990 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_type(): type = [%s]", pType);
996 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_type() is failed. result = [%d]", result);
999 result = pkgmgrinfo_pkginfo_get_label(__packageInfoHandle, &pName);
1000 if (result == PMINFO_R_OK)
1002 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_label(): name = [%s]", pName);
1004 __displayName = Name;
1008 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_label() is failed. result = [%d]", result);
1011 result = pkgmgrinfo_pkginfo_get_icon(__packageInfoHandle, &pIconPath);
1012 if (result == PMINFO_R_OK)
1014 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_icon(): iconpath = [%s]", pIconPath);
1015 String path(pIconPath);
1016 __appIconPath = path;
1020 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_icon() is failed. result = [%d]", result);
1023 result = pkgmgrinfo_pkginfo_is_removable(__packageInfoHandle, &removable);
1024 if (result == PMINFO_R_OK)
1026 SysLog(NID_APP, "pkgmgrinfo_pkginfo_is_removable(): removable = [%d]", removable);
1028 if (removable == false)
1030 __uninstallable = false;
1035 SysLog(NID_APP, "pkgmgrinfo_pkginfo_is_removable() is failed. result = [%d]", result);
1038 result = pkgmgrinfo_pkginfo_get_description(__packageInfoHandle, &pDescription);
1039 if (result == PMINFO_R_OK)
1041 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_description(): description = [%s]", pDescription);
1042 String description(pDescription);
1043 __description = description;
1047 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_description() is failed. result = [%d]", result);
1050 result = pkgmgrinfo_pkginfo_get_author_name(__packageInfoHandle, &pAuthor);
1051 if (result == PMINFO_R_OK)
1053 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_author_name(): author = [%s]", pAuthor);
1054 String author(pAuthor);
1059 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_author_name() is failed. result = [%d]", result);
1062 result = pkgmgrinfo_pkginfo_get_installed_time(__packageInfoHandle, &installedTime);
1063 if (result == PMINFO_R_OK)
1065 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_installed_time(): installedTime = [%d]", installedTime);
1067 time_t dateTime = (time_t) installedTime;
1068 struct tm* pGmTime = null;
1070 pGmTime = gmtime(&dateTime);
1074 tempTime.SetValue(pGmTime->tm_year + 1900, pGmTime->tm_mon + 1, pGmTime->tm_mday, pGmTime->tm_hour, pGmTime->tm_min, pGmTime->tm_sec);
1075 __dateTime = tempTime;
1076 SysLog(NID_APP, "Time %d %d/%d, %d:%d:%d", tempTime.GetYear(), tempTime.GetMonth(), tempTime.GetDay(), tempTime.GetHour(), tempTime.GetMinute(), tempTime.GetSecond());
1081 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_installed_time() is failed. result = [%d]", result);
1084 result = pkgmgrinfo_pkginfo_get_installed_storage(__packageInfoHandle, &storage);
1085 if (result == PMINFO_R_OK)
1087 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_installed_storage(): storage = [%d]", storage);
1088 if (storage == PMINFO_EXTERNAL_STORAGE)
1090 __externalStorage = true;
1095 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_installed_storage() is failed. result = [%d]", result);
1098 result = pkgmgrinfo_pkginfo_get_url(__packageInfoHandle, &pUrl);
1099 if (result == PMINFO_R_OK)
1101 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_url(): url = [%s]", pUrl);
1107 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_url() is failed. result = [%d]", result);
1110 result = pkgmgrinfo_pkginfo_get_mainappid(__packageInfoHandle, &pMainAppId);
1111 if (result == PMINFO_R_OK)
1113 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_mainappid(): mainAppId = [%s]", pMainAppId);
1114 AppId mainAppId(pMainAppId);
1115 __mainAppId = mainAppId;
1119 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_mainappid() is failed. result = [%d]", result);
1122 result = pkgmgrinfo_pkginfo_get_storeclientid(__packageInfoHandle, &pStoreClientId);
1123 if (result == PMINFO_R_OK)
1125 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_storeclientid(): storeClientId = [%s]", pStoreClientId);
1126 String storeClientId(pStoreClientId);
1127 __storeClientId = storeClientId;
1131 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_storeclientid() is failed. result = [%d]", result);
1135 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());
1137 r = db.Construct(PACKAGE_DATABASE_FILE_NAME, "r");
1138 SysTryCatch(NID_APP, r == E_SUCCESS, , r, "[%s] An error occurs while opening a database.", GetErrorMessage(r));
1140 pStmt = _PackageManagerImpl::CreateStatementN(db, query);
1141 SysTryCatch(NID_APP, pStmt != null, GetLastResult(), GetLastResult(), "[%s] An error occurs while creating a database statement.", GetErrorMessage(GetLastResult()));
1143 pEnum = _PackageManagerImpl::ExecuteStatementN(db, pStmt);
1146 if (pEnum->MoveNext() == E_SUCCESS)
1149 int storageType = 0;
1151 if (pEnum->GetColumnType(16) != DB_COLUMNTYPE_NULL)
1153 pEnum->GetStringAt(16, rootPath);
1155 if (pEnum->GetColumnType(17) != DB_COLUMNTYPE_NULL)
1157 pEnum->GetIntAt(17, storageType);
1160 SetAppRootPath(rootPath);
1161 SetAppStorageType(storageType);
1173 _PackageInfoImpl::GetUniqueId(void) const
1175 result r = E_SUCCESS;
1177 DbStatement* pStmt = null;
1178 DbEnumerator* pEnum = null;
1182 query.Format(1024, L"SELECT UNIQUE_ID FROM PkgInfo WHERE PKG_ID = '%ls'", __id.GetPointer());
1184 r = db.Construct(PACKAGE_DATABASE_FILE_NAME, "r");
1185 SysTryCatch(NID_APP, r == E_SUCCESS, , r, "[%s] An error occurs while opening a database.", GetErrorMessage(r));
1187 pStmt = _PackageManagerImpl::CreateStatementN(db, query);
1188 SysTryCatch(NID_APP, pStmt != null, GetLastResult(), GetLastResult(), "[%s] An error occurs while creating a database statement.", GetErrorMessage(GetLastResult()));
1190 pEnum = _PackageManagerImpl::ExecuteStatementN(db, pStmt);
1193 if (pEnum->MoveNext() == E_SUCCESS)
1195 pEnum->GetIntAt(0, uniqueId);
1202 r = E_OBJ_NOT_FOUND;
1212 _PackageInfoImpl::GetUiScalabilityInfo(String& baseScreenSize, String& coordinateSystem, String& logicalCoordinate) const
1214 result r = E_SUCCESS;
1216 DbStatement* pStmt = null;
1217 DbEnumerator* pEnum = null;
1221 L"SELECT AppFeature.NAME, AppFeature.VALUE FROM AppFeature, AppInfo WHERE AppFeature.ID = AppInfo.UNIQUE_ID and AppInfo.APP_DEFAULT = 'True' and AppInfo.ID = %d", GetUniqueId());
1223 r = db.Construct(PACKAGE_DATABASE_FILE_NAME, "r");
1224 SysTryCatch(NID_APP, r == E_SUCCESS, , r, "[%s] An error occurs while opening a database.", GetErrorMessage(r));
1226 pStmt = _PackageManagerImpl::CreateStatementN(db, query);
1227 SysTryCatch(NID_APP, pStmt != null, GetLastResult(),
1228 GetLastResult(), "[%s] An error occurs while creating a database statement.", GetErrorMessage(GetLastResult()));
1230 pEnum = _PackageManagerImpl::ExecuteStatementN(db, pStmt);
1233 while (pEnum->MoveNext() == E_SUCCESS)
1238 pEnum->GetStringAt(0, name);
1239 pEnum->GetStringAt(1, value);
1241 if (name == L"CoordinateSystem")
1243 coordinateSystem = value;
1245 else if (name == L"BaseScreenSize")
1247 baseScreenSize = value;
1249 else if (name == L"LogicalCoordinate")
1251 logicalCoordinate = value;
1258 r = E_OBJ_NOT_FOUND;
1270 _PackageInfoImpl::GetAppPackageName(void)
1272 if (__appPackageName.IsEmpty() == false)
1274 return __appPackageName;
1277 result r = E_SUCCESS;
1279 DbStatement* pStmt = null;
1280 DbEnumerator* pEnum = null;
1283 query.Format(1024, L"SELECT AppInfo.PACKAGE_NAME FROM AppInfo WHERE AppInfo.APP_DEFAULT = 'True' and ID = %d", GetUniqueId());
1285 r = db.Construct(PACKAGE_DATABASE_FILE_NAME, "r");
1286 SysTryCatch(NID_APP, r == E_SUCCESS, , r, "[%s] An error occurs while opening a database.", GetErrorMessage(r));
1288 pStmt = _PackageManagerImpl::CreateStatementN(db, query);
1289 SysTryCatch(NID_APP, pStmt != null, GetLastResult(), GetLastResult(), "[%s] An error occurs while creating a database statement.", GetErrorMessage(GetLastResult()));
1291 pEnum = _PackageManagerImpl::ExecuteStatementN(db, pStmt);
1294 if (pEnum->MoveNext() == E_SUCCESS)
1296 pEnum->GetStringAt(0, __appPackageName);
1307 return __appPackageName;
1311 _PackageInfoImpl::GetApiVersion(void) const
1313 return __appApiVersion;
1317 _PackageInfoImpl::GetName(void) const
1319 return __displayName;
1323 _PackageInfoImpl::GetInstance(PackageInfo* pPackageInfo)
1327 return pPackageInfo->__pPackageInfoImpl;
1333 const _PackageInfoImpl*
1334 _PackageInfoImpl::GetInstance(const PackageInfo* pPackageInfo)
1338 return pPackageInfo->__pPackageInfoImpl;
1344 } } } // Tizen::App::Package