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>
37 #include "FAppPkg_PackageManagerImpl.h"
38 #include "FAppPkg_PackageInfoImpl.h"
39 #include "FAppPkg_PackageAppInfoImpl.h"
41 using namespace Tizen::Base;
42 using namespace Tizen::Base::Collection;
43 using namespace Tizen::Io;
45 namespace Tizen { namespace App { namespace Package
49 _PackageInfoImpl::GetId(void) const
55 _PackageInfoImpl::SetId(const PackageId& id)
62 _PackageInfoImpl::GetVersion(void) const
68 _PackageInfoImpl::SetVersion(const String& version)
75 _PackageInfoImpl::GetType(void) const
81 _PackageInfoImpl::SetType(PackageType packageType)
83 __packageType = packageType;
88 _PackageInfoImpl::GetDisplayName(void) const
94 _PackageInfoImpl::SetDisplayName(const String& displayName)
96 __displayName = displayName;
101 _PackageInfoImpl::GetDescription(void) const
103 return __description;
107 _PackageInfoImpl::SetDescription(const String& description)
109 __description = description;
114 _PackageInfoImpl::GetAuthor(void) const
120 _PackageInfoImpl::SetAuthor(const String& author)
127 _PackageInfoImpl::GetUrl(void) const
133 _PackageInfoImpl::SetUrl(const String& url)
140 _PackageInfoImpl::GetInstallationTime(void) const
146 _PackageInfoImpl::SetInstallationTime(const DateTime& installationTime)
148 __dateTime = installationTime;
153 _PackageInfoImpl::IsInstalledInExternalStorage(void) const
155 return __externalStorage;
159 _PackageInfoImpl::SetInstalledInExternalStorage(bool externalStorage)
161 __externalStorage = externalStorage;
166 _PackageInfoImpl::IsUninstallable(void) const
168 return __uninstallable;
172 _PackageInfoImpl::SetUninstallable(bool uninstallable)
174 __uninstallable = uninstallable;
179 _PackageInfoImpl::IsMovable(void) const
185 _PackageInfoImpl::SetMovable(bool movable)
192 _PackageInfoImpl::IsDownloaded(void) const
198 _PackageInfoImpl::SetDownloaded(bool downloaded)
200 __downloaded = downloaded;
205 _PackageInfoImpl::GetSize(void) const
207 SysTryReturn(NID_APP, __packageInfoHandle, 0, E_SYSTEM, "[E_SYSTEM] __packageInfoHandle is null.");
209 int result = PMINFO_R_OK;
212 result = pkgmgrinfo_pkginfo_get_total_size(__packageInfoHandle, &size);
213 if (result == PMINFO_R_OK)
215 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_total_size(): size = [%d]", size);
219 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_total_size() is failed. result = [%d]", result);
222 return (long long) size;
226 _PackageInfoImpl::GetDataSize(void) const
228 SysTryReturn(NID_APP, __packageInfoHandle, 0, E_SYSTEM, "[E_SYSTEM] __packageInfoHandle is null.");
230 int result = PMINFO_R_OK;
233 result = pkgmgrinfo_pkginfo_get_data_size(__packageInfoHandle, &dataSize);
234 if (result == PMINFO_R_OK)
236 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_data_size(): dataSize = [%d]", dataSize);
240 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_data_size() is failed. result = [%d]", result);
243 return (long long) dataSize;
247 _PackageInfoImpl::GetMainAppId(void) const
253 _PackageInfoImpl::SetMainAppId(const AppId& appId)
260 _PackageInfoImpl::GetStoreClientId(void) const
262 return __storeClientId;
266 _PackageInfoImpl::SetStoreClientId(const PackageId& packageId)
268 __storeClientId = packageId;
273 _PackageInfoImpl::GetPackageAppInfoListN(void) const
275 SysTryReturn(NID_APP, __packageInfoHandle, null, E_SYSTEM, "[E_SYSTEM] __packageInfoHandle is null.");
278 ArrayList* pList = null;
280 pList = new (std::nothrow) ArrayList;
281 SysTryReturn(NID_APP, pList != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Insufficient memory");
285 res = pkgmgrinfo_appinfo_get_list(__packageInfoHandle, PMINFO_UI_APP, PackageAppInfoListHandler, (void *)pList);
286 res = pkgmgrinfo_appinfo_get_list(__packageInfoHandle, PMINFO_SVC_APP, PackageAppInfoListHandler, (void *)pList);
292 _PackageInfoImpl::GetPackageAppInfoN(const AppId& appId) const
294 SysTryReturn(NID_APP, __packageInfoHandle, null, E_SYSTEM, "[E_SYSTEM] __packageInfoHandle is null.");
297 pkgmgrinfo_appinfo_h appInfoHandle = null;
299 std::unique_ptr<char[]> pAppId(_StringConverter::CopyToCharArrayN(appId));
300 SysTryReturn(NID_APP, pAppId, null, E_OUT_OF_MEMORY, "pAppId is null");
302 res = pkgmgrinfo_appinfo_get_appinfo(pAppId.get(), &appInfoHandle);
305 SysLog(NID_APP, "pkgmgrinfo_appinfo_get_appinfo(): appId = [%s]", pAppId.get());
307 PackageAppInfo* pPackageAppInfo = new (std::nothrow) PackageAppInfo;
308 SysTryReturn(NID_APP, pPackageAppInfo != null, 0, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Insufficient memory");
310 GetPackageAppInfo(appInfoHandle, pPackageAppInfo);
312 return pPackageAppInfo;
316 SysLog(NID_APP, "pkgmgrinfo_appinfo_get_appinfo() is failed. result = [%d]", res);
323 _PackageInfoImpl::PackageAppInfoListHandler(const pkgmgrinfo_appinfo_h handle, void* pUser_data)
325 ArrayList* pList = (ArrayList*) pUser_data;
327 PackageAppInfo* pPackageAppInfo = new (std::nothrow) PackageAppInfo;
328 SysTryReturn(NID_APP, pPackageAppInfo != null, 0, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Insufficient memory");
330 GetPackageAppInfo(handle, pPackageAppInfo);
332 pList->Add(*pPackageAppInfo);
338 _PackageInfoImpl::GetPackageAppInfo(const pkgmgrinfo_appinfo_h handle, PackageAppInfo* pPackageAppInfo)
340 SysTryReturn(NID_APP, pPackageAppInfo, false, E_INVALID_ARG, "[E_INVALID_ARG] pPackageAppInfo is null.");
345 _PackageAppInfoImpl* pPackageAppInfoImpl = _PackageAppInfoImpl::GetInstance(pPackageAppInfo);
347 res = pkgmgrinfo_appinfo_get_appid(handle, &pAppId);
350 SysLog(NID_APP, "pkgmgrinfo_appinfo_get_appid(): appId = [%s]", pAppId);
351 pPackageAppInfoImpl->Construct(pAppId);
355 SysLog(NID_APP, "pkgmgrinfo_appinfo_get_appid() is failed. result = [%d]", res);
362 _PackageInfoImpl::_PackageInfoImpl(void)
363 : __appReadOnlySize(0)
365 , __appStorageType(0)
368 , __pAppInfoImplList(null)
369 , __packageInfoHandle(null)
370 , __uninstallable(true)
372 , __downloaded(false)
373 , __iconAvailable(false)
374 , __externalStorage(false)
375 , __packageType(PACKAGE_TYPE_TPK)
376 , __pPackageInfo(null)
378 __pAppInfoImplList = new (std::nothrow) ArrayList;
379 SysTryReturnVoidResult(NID_APP, __pAppInfoImplList != null, E_OUT_OF_MEMORY, "__pAppInfoImplList instance must not be null.");
380 __pAppInfoImplList->Construct();
383 _PackageInfoImpl::~_PackageInfoImpl(void)
385 __pAppInfoImplList->RemoveAll(true);
386 delete __pAppInfoImplList;
388 if (__packageInfoHandle)
390 pkgmgr_pkginfo_destroy_pkginfo(__packageInfoHandle);
395 _PackageInfoImpl::GetAppId(void) const
401 _PackageInfoImpl::SetAppId(const String& id)
408 _PackageInfoImpl::GetAppVersion(void) const
414 _PackageInfoImpl::SetAppVersion(const String& appVersion)
416 __version = appVersion;
421 _PackageInfoImpl::GetAppType(void) const
427 _PackageInfoImpl::SetAppType(const String& appType)
434 _PackageInfoImpl::GetAppMimeType(void) const
436 return __appMimeType;
440 _PackageInfoImpl::SetAppMimeType(const String& appMimeType)
442 __appMimeType = appMimeType;
447 _PackageInfoImpl::GetAppApiVersion(void) const
449 return __appApiVersion;
453 _PackageInfoImpl::SetAppApiVersion(const String& appApiVersion)
455 __appApiVersion = appApiVersion;
460 _PackageInfoImpl::GetAppName(void) const
462 return __displayName;
466 _PackageInfoImpl::SetAppName(const String& appName)
468 __displayName = appName;
473 _PackageInfoImpl::GetAppDescription(void) const
475 return __description;
479 _PackageInfoImpl::SetAppDescription(const String& appDescription)
481 __description = appDescription;
486 _PackageInfoImpl::GetAppVendor(void) const
492 _PackageInfoImpl::SetAppVendor(const String& appVendor)
494 __author = appVendor;
499 _PackageInfoImpl::GetAppUrl(void) const
505 _PackageInfoImpl::SetAppUrl(const String& appUrl)
512 _PackageInfoImpl::GetAppCid(void) const
518 _PackageInfoImpl::SetAppCid(const String& appCid)
525 _PackageInfoImpl::GetAppRootPath(void) const
527 return __appRootPath;
531 _PackageInfoImpl::SetAppRootPath(const String& appRootPath)
533 __appRootPath = appRootPath;
538 _PackageInfoImpl::GetAppStorageType(void) const
540 return __appStorageType;
544 _PackageInfoImpl::SetAppStorageType(int appStorageType)
546 __appStorageType = appStorageType;
551 _PackageInfoImpl::GetCertType(void) const
557 _PackageInfoImpl::SetCertType(int certType)
559 __certType = certType;
564 _PackageInfoImpl::GetAppInfoListN(void) const
566 result r = E_SUCCESS;
568 DbStatement* pStmt = null;
569 DbEnumerator* pEnum = null;
572 ArrayList* pList = null;
574 query.Format(1024, L"SELECT * FROM AppInfo WHERE ID = %d", GetUniqueId());
576 r = db.Construct(PACKAGE_DATABASE_FILE_NAME, false);
577 SysTryCatch(NID_APP, r == E_SUCCESS, , r, "[%s] An error occurs while opening a database.", GetErrorMessage(r));
579 pStmt = _PackageManagerImpl::CreateStatementN(db, query);
580 SysTryCatch(NID_APP, pStmt != null, GetLastResult(), GetLastResult(), "[%s] An error occurs while creating a database statement.", GetErrorMessage(GetLastResult()));
582 pEnum = _PackageManagerImpl::ExecuteStatementN(db, pStmt);
585 pList = new (std::nothrow) ArrayList;
586 SysTryReturn(NID_APP, pList != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Insufficient memory");
589 while (pEnum->MoveNext() == E_SUCCESS)
591 _PackageAppInfoImpl* pPackageAppInfoImpl = new (std::nothrow) _PackageAppInfoImpl;
592 SysTryReturn(NID_APP, pPackageAppInfoImpl != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Insufficient memory");
602 String quickpanelIcon;
603 //String launchImageIcon;
607 pEnum->GetIntAt(0, uniqueId);
608 pEnum->GetIntAt(1, pkgId);
609 pEnum->GetStringAt(2, name);
610 pEnum->GetStringAt(3, type);
611 pEnum->GetStringAt(4, defaultapp);
612 pEnum->GetStringAt(5, mainmenuIcon);
613 pEnum->GetStringAt(6, settingIcon);
614 //pEnum->GetStringAt(7, tickerIcon);
615 pEnum->GetStringAt(8, quickpanelIcon);
616 //pEnum->GetStringAt(9, launchImageIcon);
617 pEnum->GetIntAt(10, appFeature);
618 pEnum->GetStringAt(11, packageName);
620 pPackageAppInfoImpl->SetUniqueId(uniqueId);
621 pPackageAppInfoImpl->SetPkgId(pkgId);
622 pPackageAppInfoImpl->SetName(name);
623 pPackageAppInfoImpl->SetType(type);
624 pPackageAppInfoImpl->SetDefault(defaultapp);
625 pPackageAppInfoImpl->SetMainmenuIcon(mainmenuIcon);
626 pPackageAppInfoImpl->SetSettingIcon(settingIcon);
627 //pPackageAppInfoImpl->SetTickerIcon(tickerIcon);
628 pPackageAppInfoImpl->SetQuickpanelIcon(quickpanelIcon);
629 //pPackageAppInfoImpl->SetLaunchImageIcon(launchImageIcon);
630 pPackageAppInfoImpl->SetAppFeature(appFeature);
631 pPackageAppInfoImpl->SetPackageName(packageName);
633 pList->Add(*pPackageAppInfoImpl);
645 _PackageInfoImpl::GetAppInfoList(void)
647 if (__pAppInfoImplList == null)
649 __pAppInfoImplList = GetAppInfoListN();
652 return __pAppInfoImplList;
656 _PackageInfoImpl::AddAppInfo(const _PackageAppInfoImpl& appInfoImpl)
658 result r = E_SUCCESS;
659 r = __pAppInfoImplList->Add(appInfoImpl);
660 SysTryReturnResult(NID_APP, !IsFailed(r), r, "__pAppInfoImplList->Add() is failed.");
666 _PackageInfoImpl::GetPrivileges(String& privileges, String& hmacPrivileges)
668 result r = E_SUCCESS;
670 DbStatement* pStmt = null;
671 DbEnumerator* pEnum = null;
674 query.Format(1024, L"SELECT * FROM PkgPrivileges WHERE ID = %d", GetUniqueId());
676 r = db.Construct(PACKAGE_DATABASE_FILE_NAME, false);
677 SysTryCatch(NID_APP, r == E_SUCCESS, , r, "[%s] An error occurs while opening a database.", GetErrorMessage(r));
679 pStmt = _PackageManagerImpl::CreateStatementN(db, query);
680 SysTryCatch(NID_APP, pStmt != null, GetLastResult(), GetLastResult(), "[%s] An error occurs while creating a database statement.", GetErrorMessage(GetLastResult()));
682 pEnum = _PackageManagerImpl::ExecuteStatementN(db, pStmt);
685 if (pEnum->MoveNext() == E_SUCCESS)
687 pEnum->GetStringAt(1, privileges);
688 pEnum->GetStringAt(2, hmacPrivileges);
702 _PackageInfoImpl::GetPrivilegesValue(String& privileges, String& hmacPrivileges) const
704 privileges = __privileges;
705 hmacPrivileges = __hmacPrivileges;
711 _PackageInfoImpl::SetPrivilegesValue(const String& privileges, const String& hmacPrivileges)
713 __privileges = privileges;
714 __hmacPrivileges = hmacPrivileges;
720 _PackageInfoImpl::GetApiVisibility() const
722 result r = E_SUCCESS;
723 int apiVisibility = 0;
725 DbStatement* pStmt = null;
726 DbEnumerator* pEnum = null;
729 query.Format(1024, L"SELECT CERTIFICATE_TYPE FROM PkgPrivileges WHERE ID = %d", GetUniqueId());
731 r = db.Construct(PACKAGE_DATABASE_FILE_NAME, "r");
732 SysTryCatch(NID_APP, r == E_SUCCESS, apiVisibility = -1, r, "[%s] An error occurs while opening a database.", GetErrorMessage(r));
734 pStmt = _PackageManagerImpl::CreateStatementN(db, query);
735 SysTryCatch(NID_APP, pStmt != null, apiVisibility = -1, GetLastResult(), "[%s] An error occurs while creating a database statement.", GetErrorMessage(GetLastResult()));
737 pEnum = _PackageManagerImpl::ExecuteStatementN(db, pStmt);
740 if (pEnum->MoveNext() == E_SUCCESS)
742 if (pEnum->GetColumnType(0) != DB_COLUMNTYPE_NULL)
744 r = pEnum->GetIntAt(0, apiVisibility);
745 SysTryCatch(NID_APP, r == E_SUCCESS, apiVisibility = -1, r, "[%s] GetIntAt() is failed.", GetErrorMessage(r));
756 return apiVisibility;
760 _PackageInfoImpl::GetAppIconPath(void) const
762 return __appIconPath;
766 _PackageInfoImpl::SetAppIconPath(const Tizen::Base::String& appIconPath)
768 __appIconPath = appIconPath;
774 _PackageInfoImpl::GetAppInstallationTime(void) const
780 _PackageInfoImpl::SetAppInstallationTime(const DateTime& installationTime)
782 __dateTime = installationTime;
788 _PackageInfoImpl::Construct(const PackageId& packageId)
790 result r = E_SUCCESS;
792 char* pPackage = null;
793 char* pVersion = null;
795 char* pIconPath = null;
797 char* pDescription = null;
798 char* pAuthor = null;
800 char* pMainAppId = null;
801 char* pStoreClientId = null;
802 int installedTime = 0;
803 pkgmgrinfo_installed_storage storage = PMINFO_INTERNAL_STORAGE;
804 bool removable = true;
808 DbStatement* pStmt = null;
809 DbEnumerator* pEnum = null;
812 std::unique_ptr<char[]> pPackageId(_StringConverter::CopyToCharArrayN(packageId));
813 SysTryReturnResult(NID_APP, pPackageId, E_OUT_OF_MEMORY, "pPackageId is null");
815 result = pkgmgrinfo_pkginfo_get_pkginfo(pPackageId.get(), &__packageInfoHandle);
816 SysTryReturnResult(NID_APP, result == PMINFO_R_OK, E_PKG_NOT_INSTALLED, "pkgmgrinfo_pkginfo_get_pkginfo() is failed. result=[%d], packageId=[%s]", result, pPackageId.get());
818 result = pkgmgrinfo_pkginfo_get_pkgname(__packageInfoHandle, &pPackage);
819 if (result == PMINFO_R_OK)
821 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_pkgname(): package = [%s]", pPackage);
822 String package(pPackage);
827 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_pkgname() is failed. result = [%d]", result);
830 result = pkgmgrinfo_pkginfo_get_version(__packageInfoHandle, &pVersion);
831 if (result == PMINFO_R_OK)
833 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_version(): version = [%s]", pVersion);
834 String version(pVersion);
839 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_version() is failed. result = [%d]", result);
842 result = pkgmgrinfo_pkginfo_get_type(__packageInfoHandle, &pType);
843 if (result == PMINFO_R_OK)
845 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_type(): type = [%s]", pType);
851 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_type() is failed. result = [%d]", result);
854 result = pkgmgrinfo_pkginfo_get_label(__packageInfoHandle, &pName);
855 if (result == PMINFO_R_OK)
857 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_label(): name = [%s]", pName);
859 __displayName = Name;
863 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_label() is failed. result = [%d]", result);
866 result = pkgmgrinfo_pkginfo_get_icon(__packageInfoHandle, &pIconPath);
867 if (result == PMINFO_R_OK)
869 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_icon(): iconpath = [%s]", pIconPath);
870 String path(pIconPath);
871 __appIconPath = path;
875 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_icon() is failed. result = [%d]", result);
878 result = pkgmgrinfo_pkginfo_is_removable(__packageInfoHandle, &removable);
879 if (result == PMINFO_R_OK)
881 SysLog(NID_APP, "pkgmgrinfo_pkginfo_is_removable(): removable = [%d]", removable);
883 if (removable == false)
885 __uninstallable = false;
890 SysLog(NID_APP, "pkgmgrinfo_pkginfo_is_removable() is failed. result = [%d]", result);
893 result = pkgmgrinfo_pkginfo_get_description(__packageInfoHandle, &pDescription);
894 if (result == PMINFO_R_OK)
896 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_description(): description = [%s]", pDescription);
897 String description(pDescription);
898 __description = description;
902 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_description() is failed. result = [%d]", result);
905 result = pkgmgrinfo_pkginfo_get_author_name(__packageInfoHandle, &pAuthor);
906 if (result == PMINFO_R_OK)
908 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_author_name(): author = [%s]", pAuthor);
909 String author(pAuthor);
914 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_author_name() is failed. result = [%d]", result);
917 result = pkgmgrinfo_pkginfo_get_installed_time(__packageInfoHandle, &installedTime);
918 if (result == PMINFO_R_OK)
920 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_installed_time(): installedTime = [%d]", installedTime);
922 time_t dateTime = (time_t) installedTime;
923 struct tm* pGmTime = null;
925 pGmTime = gmtime(&dateTime);
929 tempTime.SetValue(pGmTime->tm_year + 1900, pGmTime->tm_mon + 1, pGmTime->tm_mday, pGmTime->tm_hour, pGmTime->tm_min, pGmTime->tm_sec);
930 __dateTime = tempTime;
931 SysLog(NID_APP, "Time %d %d/%d, %d:%d:%d", tempTime.GetYear(), tempTime.GetMonth(), tempTime.GetDay(), tempTime.GetHour(), tempTime.GetMinute(), tempTime.GetSecond());
936 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_installed_time() is failed. result = [%d]", result);
939 result = pkgmgrinfo_pkginfo_get_installed_storage(__packageInfoHandle, &storage);
940 if (result == PMINFO_R_OK)
942 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_installed_storage(): storage = [%d]", storage);
943 if (storage == PMINFO_EXTERNAL_STORAGE)
945 __externalStorage = true;
950 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_installed_storage() is failed. result = [%d]", result);
953 result = pkgmgrinfo_pkginfo_get_url(__packageInfoHandle, &pUrl);
954 if (result == PMINFO_R_OK)
956 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_url(): url = [%s]", pUrl);
962 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_url() is failed. result = [%d]", result);
965 result = pkgmgrinfo_pkginfo_get_mainappid(__packageInfoHandle, &pMainAppId);
966 if (result == PMINFO_R_OK)
968 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_mainappid(): mainAppId = [%s]", pMainAppId);
969 AppId mainAppId(pMainAppId);
970 __mainAppId = mainAppId;
974 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_mainappid() is failed. result = [%d]", result);
977 result = pkgmgrinfo_pkginfo_get_storeclientid(__packageInfoHandle, &pStoreClientId);
978 if (result == PMINFO_R_OK)
980 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_storeclientid(): storeClientId = [%s]", pStoreClientId);
981 String storeClientId(pStoreClientId);
982 __storeClientId = storeClientId;
986 SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_storeclientid() is failed. result = [%d]", result);
990 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());
992 r = db.Construct(PACKAGE_DATABASE_FILE_NAME, false);
993 SysTryCatch(NID_APP, r == E_SUCCESS, , r, "[%s] An error occurs while opening a database.", GetErrorMessage(r));
995 pStmt = _PackageManagerImpl::CreateStatementN(db, query);
996 SysTryCatch(NID_APP, pStmt != null, GetLastResult(), GetLastResult(), "[%s] An error occurs while creating a database statement.", GetErrorMessage(GetLastResult()));
998 pEnum = _PackageManagerImpl::ExecuteStatementN(db, pStmt);
1001 if (pEnum->MoveNext() == E_SUCCESS)
1006 pEnum->GetStringAt(16, rootPath);
1007 pEnum->GetIntAt(17, storageType);
1009 SetAppRootPath(rootPath);
1010 SetAppStorageType(storageType);
1022 _PackageInfoImpl::GetUniqueId(void) const
1024 result r = E_SUCCESS;
1026 DbStatement* pStmt = null;
1027 DbEnumerator* pEnum = null;
1031 query.Format(1024, L"SELECT UNIQUE_ID FROM PkgInfo WHERE PKG_ID = '%ls'", __id.GetPointer());
1033 r = db.Construct(PACKAGE_DATABASE_FILE_NAME, false);
1034 SysTryCatch(NID_APP, r == E_SUCCESS, , r, "[%s] An error occurs while opening a database.", GetErrorMessage(r));
1036 pStmt = _PackageManagerImpl::CreateStatementN(db, query);
1037 SysTryCatch(NID_APP, pStmt != null, GetLastResult(), GetLastResult(), "[%s] An error occurs while creating a database statement.", GetErrorMessage(GetLastResult()));
1039 pEnum = _PackageManagerImpl::ExecuteStatementN(db, pStmt);
1042 if (pEnum->MoveNext() == E_SUCCESS)
1044 pEnum->GetIntAt(0, uniqueId);
1051 r = E_OBJ_NOT_FOUND;
1061 _PackageInfoImpl::GetUiScalabilityInfo(String& baseScreenSize, String& coordinateSystem, String& logicalCoordinate) const
1063 result r = E_SUCCESS;
1065 DbStatement* pStmt = null;
1066 DbEnumerator* pEnum = null;
1070 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());
1072 r = db.Construct(PACKAGE_DATABASE_FILE_NAME, false);
1073 SysTryCatch(NID_APP, r == E_SUCCESS, , r, "[%s] An error occurs while opening a database.", GetErrorMessage(r));
1075 pStmt = _PackageManagerImpl::CreateStatementN(db, query);
1076 SysTryCatch(NID_APP, pStmt != null, GetLastResult(),
1077 GetLastResult(), "[%s] An error occurs while creating a database statement.", GetErrorMessage(GetLastResult()));
1079 pEnum = _PackageManagerImpl::ExecuteStatementN(db, pStmt);
1082 while (pEnum->MoveNext() == E_SUCCESS)
1087 pEnum->GetStringAt(0, name);
1088 pEnum->GetStringAt(1, value);
1090 if (name == L"CoordinateSystem")
1092 coordinateSystem = value;
1094 else if (name == L"BaseScreenSize")
1096 baseScreenSize = value;
1098 else if (name == L"LogicalCoordinate")
1100 logicalCoordinate = value;
1107 r = E_OBJ_NOT_FOUND;
1119 _PackageInfoImpl::GetAppPackageName(void)
1121 if (__appPackageName.IsEmpty() == false)
1123 return __appPackageName;
1126 result r = E_SUCCESS;
1128 DbStatement* pStmt = null;
1129 DbEnumerator* pEnum = null;
1132 query.Format(1024, L"SELECT AppInfo.PACKAGE_NAME FROM AppInfo WHERE AppInfo.APP_DEFAULT = 'True' and ID = %d", GetUniqueId());
1134 r = db.Construct(PACKAGE_DATABASE_FILE_NAME, false);
1135 SysTryCatch(NID_APP, r == E_SUCCESS, , r, "[%s] An error occurs while opening a database.", GetErrorMessage(r));
1137 pStmt = _PackageManagerImpl::CreateStatementN(db, query);
1138 SysTryCatch(NID_APP, pStmt != null, GetLastResult(), GetLastResult(), "[%s] An error occurs while creating a database statement.", GetErrorMessage(GetLastResult()));
1140 pEnum = _PackageManagerImpl::ExecuteStatementN(db, pStmt);
1143 if (pEnum->MoveNext() == E_SUCCESS)
1145 pEnum->GetStringAt(0, __appPackageName);
1156 return __appPackageName;
1160 _PackageInfoImpl::GetApiVersion(void) const
1162 return __appApiVersion;
1166 _PackageInfoImpl::GetName(void) const
1168 return __displayName;
1172 _PackageInfoImpl::GetInstance(PackageInfo* pPackageInfo)
1176 return pPackageInfo->__pPackageInfoImpl;
1182 const _PackageInfoImpl*
1183 _PackageInfoImpl::GetInstance(const PackageInfo* pPackageInfo)
1187 return pPackageInfo->__pPackageInfoImpl;
1193 } } } // Tizen::App::Package