All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.liferay.commerce.product.internal.util.CPCollectionProviderHelperImpl Maven / Gradle / Ivy

/**
 * SPDX-FileCopyrightText: (c) 2023 Liferay, Inc. https://liferay.com
 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
 */

package com.liferay.commerce.product.internal.util;

import com.liferay.commerce.product.model.CPDefinition;
import com.liferay.commerce.product.model.CPDefinitionOptionRel;
import com.liferay.commerce.product.model.CPDefinitionOptionValueRel;
import com.liferay.commerce.product.service.CPDefinitionLocalService;
import com.liferay.commerce.product.util.CPCollectionProviderHelper;
import com.liferay.info.collection.provider.CollectionQuery;
import com.liferay.info.collection.provider.ConfigurableInfoCollectionProvider;
import com.liferay.info.collection.provider.RelatedInfoItemCollectionProvider;
import com.liferay.info.filter.InfoFilter;
import com.liferay.info.filter.KeywordsInfoFilter;
import com.liferay.info.item.InfoItemServiceRegistry;
import com.liferay.info.pagination.InfoPage;
import com.liferay.info.pagination.Pagination;
import com.liferay.petra.string.StringPool;
import com.liferay.portal.kernel.dao.orm.QueryUtil;
import com.liferay.portal.kernel.util.HashMapBuilder;
import com.liferay.portal.kernel.util.StringUtil;
import com.liferay.portal.kernel.util.UnicodeProperties;
import com.liferay.portal.kernel.util.Validator;

import java.util.Collections;
import java.util.List;

import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;

/**
 * @author Danny Situ
 */
@Component(service = CPCollectionProviderHelper.class)
public class CPCollectionProviderHelperImpl
	implements CPCollectionProviderHelper {

	@Override
	public List getCPDefinitionOptionValueRels(
		CPDefinitionOptionRel cpDefinitionOptionRel, String keywords,
		Pagination pagination) {

		return getCPDefinitionOptionValueRels(
			0, 0, cpDefinitionOptionRel, keywords, pagination);
	}

	@Override
	public List getCPDefinitionOptionValueRels(
		long companyId, long groupId,
		CPDefinitionOptionRel cpDefinitionOptionRel, String keywords,
		Pagination pagination) {

		InfoPage
			cpDefinitionOptionValueRelInfoPage =
				_getCPDefinitionOptionValueRelInfoPage(
					companyId, groupId, cpDefinitionOptionRel, keywords,
					pagination);

		if (cpDefinitionOptionValueRelInfoPage != null) {
			return (List)
				cpDefinitionOptionValueRelInfoPage.getPageItems();
		}

		return Collections.emptyList();
	}

	@Override
	public int getCPDefinitionOptionValueRelsCount(
		CPDefinitionOptionRel cpDefinitionOptionRel, String keywords) {

		return getCPDefinitionOptionValueRelsCount(
			0, 0, cpDefinitionOptionRel, keywords);
	}

	@Override
	public int getCPDefinitionOptionValueRelsCount(
		long companyId, long groupId,
		CPDefinitionOptionRel cpDefinitionOptionRel, String keywords) {

		InfoPage
			cpDefinitionOptionValueRelInfoPage =
				_getCPDefinitionOptionValueRelInfoPage(
					companyId, groupId, cpDefinitionOptionRel, keywords, null);

		if (cpDefinitionOptionValueRelInfoPage != null) {
			return cpDefinitionOptionValueRelInfoPage.getTotalCount();
		}

		return 0;
	}

	private InfoPage
		_getCPDefinitionOptionValueRelInfoPage(
			long companyId, long groupId,
			CPDefinitionOptionRel cpDefinitionOptionRel, String keywords,
			Pagination pagination) {

		ConfigurableInfoCollectionProvider
			configurableInfoCollectionProvider =
				(ConfigurableInfoCollectionProvider)
					_infoItemServiceRegistry.getInfoItemService(
						RelatedInfoItemCollectionProvider.class,
						cpDefinitionOptionRel.getInfoItemServiceKey());

		if (configurableInfoCollectionProvider != null) {
			CollectionQuery collectionQuery = new CollectionQuery();

			CPDefinition cpDefinition =
				_cpDefinitionLocalService.fetchCPDefinition(
					cpDefinitionOptionRel.getCPDefinitionId());

			collectionQuery.setConfiguration(
				HashMapBuilder.put(
					"categoryIds",
					() -> {
						UnicodeProperties typeSettingsUnicodeProperties =
							cpDefinitionOptionRel.
								getTypeSettingsUnicodeProperties();

						return StringUtil.split(
							typeSettingsUnicodeProperties.getProperty(
								"categoryIds", StringPool.BLANK));
					}
				).put(
					"companyIds", new String[] {String.valueOf(companyId)}
				).put(
					"groupIds", new String[] {String.valueOf(groupId)}
				).build());

			if (Validator.isNotNull(keywords)) {
				collectionQuery.setInfoFilters(
					HashMapBuilder.put(
						KeywordsInfoFilter.class.getName(),
						() -> {
							KeywordsInfoFilter keywordsInfoFilter =
								new KeywordsInfoFilter();

							keywordsInfoFilter.setKeywords(keywords);

							return keywordsInfoFilter;
						}
					).build());
			}

			if (pagination == null) {
				collectionQuery.setPagination(
					Pagination.of(QueryUtil.ALL_POS, QueryUtil.ALL_POS));
			}
			else {
				collectionQuery.setPagination(pagination);
			}

			collectionQuery.setRelatedItemObject(cpDefinition);

			return (InfoPage)
				configurableInfoCollectionProvider.getCollectionInfoPage(
					collectionQuery);
		}

		return null;
	}

	@Reference
	private CPDefinitionLocalService _cpDefinitionLocalService;

	@Reference
	private InfoItemServiceRegistry _infoItemServiceRegistry;

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy