From c2610a4968da19964646d33fb5eafc53874ed5f7 Mon Sep 17 00:00:00 2001 From: Duyoung Jang Date: Sun, 31 Mar 2013 11:52:13 +0900 Subject: [PATCH] GetPackageAppInfoListN() is added with package, app filter. Change-Id: If3dd7c9293bfecd90677dc19109b51f6575f3019 Signed-off-by: Duyoung Jang --- src/app/package/FAppPkg_PackageManagerImpl.cpp | 81 +++++++++++++++++++++++++- 1 file changed, 78 insertions(+), 3 deletions(-) diff --git a/src/app/package/FAppPkg_PackageManagerImpl.cpp b/src/app/package/FAppPkg_PackageManagerImpl.cpp index e4f72ed..80e727a 100755 --- a/src/app/package/FAppPkg_PackageManagerImpl.cpp +++ b/src/app/package/FAppPkg_PackageManagerImpl.cpp @@ -970,10 +970,85 @@ CATCH: 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."); + SysTryReturn(NID_APP, packageFilterMap.GetCount() > 0, null, E_INVALID_ARG, "packageFilterMap Count is invalid."); + SysTryReturn(NID_APP, packageAppFilterMap.GetCount() > 0, null, E_INVALID_ARG, "packageAppFilterMap Count is invalid."); - return null; + ArrayList appIdList; + + std::unique_ptr< IList > pPackageFilterList(GetPackageInfoListN(packageFilterMap)); + if (pPackageFilterList == null) + { + SysLog(NID_APP, "GetPackageInfoListN(packageFilterMap) is null."); + return null; + } + + for (int i = 0; i < pPackageFilterList->GetCount(); i++) + { + PackageInfo* pPackageInfo = dynamic_cast < PackageInfo* >(pPackageFilterList->GetAt(i)); + if (pPackageInfo) + { + std::unique_ptr< IList > pPackageAppInfoList(pPackageInfo->GetPackageAppInfoListN()); + if (pPackageAppInfoList) + { + for (int j = 0; j < pPackageAppInfoList->GetCount(); j++) + { + PackageAppInfo* pPackageAppInfo = dynamic_cast < PackageAppInfo* >(pPackageAppInfoList->GetAt(j)); + if (pPackageAppInfo) + { + AppLog("PackageFilter - AppId [%ls]", pPackageAppInfo->GetAppId().GetPointer()); + + std::unique_ptr< AppId > pAppId(new (std::nothrow) AppId(pPackageAppInfo->GetAppId())); + appIdList.Add(pAppId.release()); + } + } + } + } + } + + std::unique_ptr< ArrayList > pList(new (std::nothrow) ArrayList); + SysTryReturn(NID_APP, pList, null, E_OUT_OF_MEMORY, "pList is null."); + + std::unique_ptr< IList > pAppFilterList(GetPackageAppInfoListN(packageAppFilterMap)); + if (pAppFilterList == null) + { + SysLog(NID_APP, "GetPackageAppInfoListN(packageAppFilterMap) is null."); + return null; + } + + for (int k = 0; k < pAppFilterList->GetCount(); k++) + { + PackageAppInfo* pPackageAppInfo = dynamic_cast < PackageAppInfo* >(pAppFilterList->GetAt(k)); + if (pPackageAppInfo) + { + AppId appId = pPackageAppInfo->GetAppId(); + AppLog("AppFilter - AppId [%ls]", appId.GetPointer()); + + if (appIdList.Contains(appId) == true) + { + AppLog("AppId [%ls] is matched.", appId.GetPointer()); + + std::unique_ptr< PackageAppInfo > pPackageAppInfo(new (std::nothrow) PackageAppInfo); + SysTryReturn(NID_APP, pPackageAppInfo, null, E_OUT_OF_MEMORY, "PackageAppInfo is null."); + + _PackageAppInfoImpl* pPackageAppInfoImpl = _PackageAppInfoImpl::GetInstance(pPackageAppInfo.get()); + pPackageAppInfoImpl->Construct(appId); + + pList->Add(pPackageAppInfo.release()); + } + else + { + AppLog("AppId [%ls] is not matched.", pPackageAppInfo->GetAppId().GetPointer()); + } + } + } + + if (pList->GetCount() <= 0) + { + AppLog("pList's count is 0."); + return null; + } + + return pList.release(); } int -- 2.7.4