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