#include "FAppPkg_PackageManagerImpl.h"
#include "FAppPkg_PackageInfoImpl.h"
#include "FAppPkg_PackageAppInfoImpl.h"
+#include "FAppPkg_PackageParser.h"
#include "FApp_AppInfo.h"
#include "FApp_PackageManagerProxy.h"
Tizen::Base::Collection::HashMap _PackageManagerImpl::__installationList;
-const wchar_t PACKAGE_DATABASE_FILE_NAME[] = L"/opt/usr/dbspace/.app-package.db";
-
void
_PackageManagerEvent::FireImpl(IEventListener& listener, const IEventArg& arg)
{
SysTryReturnResult(NID_APP, packageId.IsEmpty() == false, E_INVALID_ARG, "packageId is empty");
SysTryReturnResult(NID_APP, IsPackageInstalled(packageId) == true, E_PKG_NOT_INSTALLED, "package is not installed.");
-#if defined(_OSP_EMUL_)
- SysLog(NID_APP, "MoveToExternalStorage() is unavailable on the emulator.");
- return E_SYSTEM;
-#else
int res = 0;
char* pType = null;
pkgmgrinfo_installed_storage storage = PMINFO_INTERNAL_STORAGE;
}
return E_SUCCESS;
-#endif
}
result
SysTryReturnResult(NID_APP, packageId.IsEmpty() == false, E_INVALID_ARG, "packageId is empty");
SysTryReturnResult(NID_APP, IsPackageInstalled(packageId) == true, E_PKG_NOT_INSTALLED, "package is not installed.");
-#if defined(_OSP_EMUL_)
- SysLog(NID_APP, "MoveToInternalStorage() is unavailable on the emulator.");
- return E_SYSTEM;
-#else
int res = 0;
char* pType = null;
pkgmgrinfo_installed_storage storage = PMINFO_INTERNAL_STORAGE;
}
return E_SUCCESS;
-#endif
}
int
if (pData)
{
+ IPackageInstallationResponseListener* pListener = (IPackageInstallationResponseListener*) pData;
+
if (strcmp(pKey, "end") == 0)
{
- IPackageInstallationResponseListener* pListener = (IPackageInstallationResponseListener*) pData;
-
if (strcmp(pVal, "ok") == 0)
{
pListener->OnPackageInstallationResponseReceived(pPackageId, PACKAGE_INSTALLATION_RESULT_SUCCESS);
delete pListener;
}
+ else if (strcmp(pKey, "install_percent") == 0)
+ {
+ int progress = 0;
+ sscanf(pVal, "%d", &progress);
+
+ pListener->OnPackageInstallationInProgressResponseReceived(pPackageId, progress);
+ SysLog(NID_APP, "OnPackageInstallationInProgressResponseReceived(%s, %d)", pPackageId, progress);
+ }
}
return 0;
return E_SUCCESS;
}
+PackageInfo*
+_PackageManagerImpl::GetPackageInfoFromFileN(const String& filePath) const
+{
+ SysTryReturn(NID_APP, filePath.IsEmpty() == false, null, E_INVALID_ARG, "filePath is empty.");
+ SysTryReturn(NID_APP, File::IsFileExist(filePath) == true, null, E_FILE_NOT_FOUND, "package is not existed.");
+
+ String extension = File::GetFileExtension(filePath);
+ SysTryReturn(NID_APP, extension.IsEmpty() == false, null, E_INVALID_ARG, "extension is empty.");
+
+ std::unique_ptr<char[]> pPackagePath(_StringConverter::CopyToCharArrayN(filePath));
+ SysTryReturn(NID_APP, pPackagePath, null, E_OUT_OF_MEMORY, "pPackagePath is null.");
+
+ std::unique_ptr<char[]> pExtension(_StringConverter::CopyToCharArrayN(extension));
+ SysTryReturn(NID_APP, pExtension, null, E_OUT_OF_MEMORY, "pExtension is null.");
+
+ bool res = false;
+
+ if ((strcasecmp(pExtension.get(), "tpk") == 0) || (strcasecmp(pExtension.get(), "wgt") == 0))
+ {
+ SysLog(NID_APP, "packagePath = [%s], extension = [%s]", pPackagePath.get(), pExtension.get());
+ res = true;
+ }
+ SysTryReturn(NID_APP, res == true, null, E_UNSUPPORTED_FORMAT, "invalid extension! - packagePath = [%s], extension = [%s]", pPackagePath.get(), pExtension.get());
+
+ _PackageParser packageParser;
+
+ 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.");
+
+ res = packageParser.Construct(pPackageInfo);
+ 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());
+
+ return pPackageInfo;
+}
+
+IList*
+_PackageManagerImpl::GetPackageInfoListN(const IMap& packageFilterMap) const
+{
+ SysTryReturn(NID_APP, packageFilterMap.GetCount() > 0, null, E_INVALID_ARG, "packageFilterMap.GetCount() is invalid.");
+
+ return null;
+}
+
+IList*
+_PackageManagerImpl::GetPackageAppInfoListN(const IMap& packageAppFilterMap) const
+{
+ SysTryReturn(NID_APP, packageAppFilterMap.GetCount() > 0, null, E_INVALID_ARG, "packageAppFilterMap.GetCount() is invalid.");
+
+ return null;
+}
+
+IList*
+_PackageManagerImpl::GetPackageAppInfoListN(const IMap& packageFilterMap, const IMap& packageAppFilterMap) const
+{
+ SysTryReturn(NID_APP, packageFilterMap.GetCount() > 0, null, E_INVALID_ARG, "packageFilterMap.GetCount() is invalid.");
+ SysTryReturn(NID_APP, packageAppFilterMap.GetCount() > 0, null, E_INVALID_ARG, "packageAppFilterMap.GetCount() is invalid.");
+
+ return null;
+}
+
_PackageManagerImpl::_PackageManagerImpl(void)
:__pRequestClient(null),
__pListeningClient(null),
query.Format( 1024, L"SELECT PkgInfo.*, AppInfo.APP_MAINMENU_ICON FROM AppInfo, PkgInfo WHERE AppInfo.ID = PkgInfo.UNIQUE_ID and AppInfo.PACKAGE_NAME = '%ls'", packageName.GetPointer());
- r = db.Construct(PACKAGE_DATABASE_FILE_NAME, false);
+ 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 = CreateStatementN(db, query);
query.Format(1024, L"SELECT AppInfo.PACKAGE_NAME FROM AppInfo, AppFeature WHERE AppFeature.ID = AppInfo.UNIQUE_ID and AppFeature.NAME = '%ls' and AppFeature.VALUE = '%ls' COLLATE NOCASE", feature.GetPointer(), value.GetPointer());
- r = db.Construct(PACKAGE_DATABASE_FILE_NAME, false);
+ 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 = CreateStatementN(db, query);
query.Format(1024, L"SELECT AppInfo.PACKAGE_NAME, DataControl.ACCESS FROM AppInfo, DataControl WHERE DataControl.ID = AppInfo.UNIQUE_ID and DataControl.PROVIDER_ID = '%ls' and DataControl.TYPE = '%ls' COLLATE NOCASE", providerId.GetPointer(), type.GetPointer());
- r = db.Construct(PACKAGE_DATABASE_FILE_NAME, false);
+ 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 = CreateStatementN(db, query);
query.Format(1024, L"SELECT AppFeature.NAME, AppFeature.VALUE FROM PkgInfo, AppInfo, AppFeature WHERE (AppFeature.ID = AppInfo.UNIQUE_ID and AppInfo.ID = PkgInfo.UNIQUE_ID and PkgInfo.PKG_ID = '%ls') and (AppFeature.NAME = 'SystemTheme' or AppFeature.NAME = 'UserDefinedTheme')"
, packageId.GetPointer());
- r = db.Construct(PACKAGE_DATABASE_FILE_NAME, false);
+ 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 = CreateStatementN(db, query);
query.Format(1024, L"SELECT PkgInfo.PKG_ID FROM PkgInfo, AppInfo, DataControl WHERE DataControl.PROVIDER_ID = '%ls' and DataControl.ID = AppInfo.UNIQUE_ID and AppInfo.ID = PkgInfo.UNIQUE_ID",
providerId.GetPointer());
- r = db.Construct(PACKAGE_DATABASE_FILE_NAME, false);
+ 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 = CreateStatementN(db, query);
"( ID INTEGER,"
"PRIVILEGES TEXT,"
"HMAC_PPRIVILEGES TEXT,"
- "CERTIFICATE_TYPE INTEGER )");
+ "CERTIFICATE_TYPE INTEGER,"
+ "STR_PRIVILEGES TEXT )");
r = db.ExecuteSql(createQuery, true);
SysTryReturn(NID_APP, r == E_SUCCESS, r, r, "MakePackageDb: db.ExecuteSql is failed. [%s]", GetErrorMessage(r));
createQuery.Clear();
"GROUP BY AppInfoID"
, providerId.GetPointer(), operationId.GetPointer());
- r = db.Construct(PACKAGE_DATABASE_FILE_NAME, false);
+ 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 = CreateStatementN(db, query);
query.Format(1024, L"SELECT * FROM AppInfo WHERE UNIQUE_ID = %d", uniqueId);
- r = db.Construct(PACKAGE_DATABASE_FILE_NAME, false);
+ 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 = CreateStatementN(db, query);
pPackageInfoImpl = _PackageInfoImpl::GetInstance(pPkgInfo);
query.Format(1024, L"SELECT * FROM AppInfo WHERE ID = %d", pPackageInfoImpl->GetUniqueId());
- r = db.Construct(PACKAGE_DATABASE_FILE_NAME, false);
+ 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 = CreateStatementN(db, query);
query.Format(1024, L"SELECT LaunchCondition.* FROM LaunchCondition, AppInfo WHERE AppInfo.UNIQUE_ID = LaunchCondition.ID and AppInfo.PACKAGE_NAME = '%ls'", packageName.GetPointer());
- r = db.Construct(PACKAGE_DATABASE_FILE_NAME, false);
+ 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 = CreateStatementN(db, query);
DbEnumerator* pEnum = null;
int uniqueId = 0;
- r = db.Construct(PACKAGE_DATABASE_FILE_NAME, false);
+ r = db.Construct(PACKAGE_DATABASE_FILE_NAME, "r");
//SysTryCatch(NID_APP, r == E_SUCCESS, r, r, "[%s] An error occurs while opening a database.", GetErrorMessage(r));
query.Format(1024, L"SELECT * FROM %ls WHERE %ls = '%ls'", tableName.GetPointer(), columnName.GetPointer(), value.GetPointer());
DbStatement* pStmt = null;
DbEnumerator* pEnum = null;
- r = db.Construct(PACKAGE_DATABASE_FILE_NAME, false);
+ r = db.Construct(PACKAGE_DATABASE_FILE_NAME, "r");
//SysTryCatch(NID_APP, r == E_SUCCESS, r, r, "[%s] An error occurs while opening a database.", GetErrorMessage(r));
query.Format(1024, L"SELECT %ls FROM %ls WHERE UNIQUE_ID = %d", columnName.GetPointer(), tableName.GetPointer(), uniqueId);
pName->GetPointer(), packageId.GetPointer());
}
- r = db.Construct(PACKAGE_DATABASE_FILE_NAME, false);
+ 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 = CreateStatementN(db, query);
L"SELECT AppInfo.APP_NAME FROM AppInfo, PkgInfo WHERE AppInfo.ID = PkgInfo.UNIQUE_ID and AppInfo.APP_DEFAULT = '%s' and PkgInfo.PKG_ID = '%ls'",
"True", packageId.GetPointer());
- r = db.Construct(PACKAGE_DATABASE_FILE_NAME, false);
+ 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 = CreateStatementN(db, query);