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

com.liferay.object.internal.system.info.item.provider.SystemObjectEntryInfoItemFieldValuesProvider Maven / Gradle / Ivy

The newest version!
/**
 * SPDX-FileCopyrightText: (c) 2024 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.object.internal.system.info.item.provider;

import com.liferay.document.library.kernel.service.DLAppLocalService;
import com.liferay.document.library.util.DLURLHelper;
import com.liferay.friendly.url.service.FriendlyURLEntryLocalService;
import com.liferay.info.field.InfoFieldValue;
import com.liferay.info.item.ClassPKInfoItemIdentifier;
import com.liferay.info.item.InfoItemFieldValues;
import com.liferay.info.item.InfoItemReference;
import com.liferay.info.item.field.reader.InfoItemFieldReaderFieldSetProvider;
import com.liferay.info.item.provider.InfoItemFieldValuesProvider;
import com.liferay.layout.page.template.info.item.provider.DisplayPageInfoItemFieldSetProvider;
import com.liferay.list.type.service.ListTypeEntryLocalService;
import com.liferay.object.entry.util.ObjectEntryDTOConverterUtil;
import com.liferay.object.info.field.converter.ObjectFieldInfoFieldConverter;
import com.liferay.object.info.item.ObjectEntryInfoItemFields;
import com.liferay.object.info.item.provider.util.ObjectEntryInfoItemValuesProviderUtil;
import com.liferay.object.info.item.util.ObjectEntryInfoItemUtil;
import com.liferay.object.model.ObjectDefinition;
import com.liferay.object.rest.manager.v1_0.ObjectEntryManagerRegistry;
import com.liferay.object.scope.ObjectScopeProviderRegistry;
import com.liferay.object.service.ObjectActionLocalService;
import com.liferay.object.service.ObjectDefinitionLocalService;
import com.liferay.object.service.ObjectEntryLocalService;
import com.liferay.object.service.ObjectFieldLocalService;
import com.liferay.object.service.ObjectRelationshipLocalService;
import com.liferay.object.system.SystemObjectDefinitionManager;
import com.liferay.object.system.SystemObjectEntry;
import com.liferay.petra.string.StringPool;
import com.liferay.portal.kernel.feature.flag.FeatureFlagManagerUtil;
import com.liferay.portal.kernel.model.BaseModel;
import com.liferay.portal.kernel.service.PersistedModelLocalService;
import com.liferay.portal.kernel.theme.ThemeDisplay;
import com.liferay.portal.kernel.util.GetterUtil;
import com.liferay.portal.kernel.util.MapUtil;
import com.liferay.portal.kernel.util.Portal;
import com.liferay.portal.kernel.workflow.WorkflowConstants;
import com.liferay.portal.service.PersistedModelLocalServiceRegistryUtil;
import com.liferay.portal.vulcan.dto.converter.DTOConverter;
import com.liferay.portal.vulcan.dto.converter.DTOConverterRegistry;
import com.liferay.portal.vulcan.extension.EntityExtensionHandler;
import com.liferay.portal.vulcan.extension.ExtensionProviderRegistry;
import com.liferay.portal.vulcan.extension.util.ExtensionUtil;
import com.liferay.template.info.item.provider.TemplateInfoItemFieldSetProvider;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * @author Carolina Barbosa
 */
public class SystemObjectEntryInfoItemFieldValuesProvider
	implements InfoItemFieldValuesProvider {

	public SystemObjectEntryInfoItemFieldValuesProvider(
		DisplayPageInfoItemFieldSetProvider displayPageInfoItemFieldSetProvider,
		DLAppLocalService dlAppLocalService, DLURLHelper dlURLHelper,
		DTOConverterRegistry dtoConverterRegistry,
		ExtensionProviderRegistry extensionProviderRegistry,
		FriendlyURLEntryLocalService friendlyURLEntryLocalService,
		InfoItemFieldReaderFieldSetProvider infoItemFieldReaderFieldSetProvider,
		String itemClassName,
		ListTypeEntryLocalService listTypeEntryLocalService,
		ObjectActionLocalService objectActionLocalService,
		ObjectDefinition objectDefinition,
		ObjectDefinitionLocalService objectDefinitionLocalService,
		ObjectEntryLocalService objectEntryLocalService,
		ObjectEntryManagerRegistry objectEntryManagerRegistry,
		ObjectFieldInfoFieldConverter objectFieldInfoFieldConverter,
		ObjectFieldLocalService objectFieldLocalService,
		ObjectRelationshipLocalService objectRelationshipLocalService,
		ObjectScopeProviderRegistry objectScopeProviderRegistry, Portal portal,
		SystemObjectDefinitionManager systemObjectDefinitionManager,
		TemplateInfoItemFieldSetProvider templateInfoItemFieldSetProvider) {

		_displayPageInfoItemFieldSetProvider =
			displayPageInfoItemFieldSetProvider;
		_dlAppLocalService = dlAppLocalService;
		_dlURLHelper = dlURLHelper;
		_dtoConverterRegistry = dtoConverterRegistry;
		_extensionProviderRegistry = extensionProviderRegistry;
		_friendlyURLEntryLocalService = friendlyURLEntryLocalService;
		_infoItemFieldReaderFieldSetProvider =
			infoItemFieldReaderFieldSetProvider;
		_itemClassName = itemClassName;
		_listTypeEntryLocalService = listTypeEntryLocalService;
		_objectActionLocalService = objectActionLocalService;
		_objectDefinition = objectDefinition;
		_objectDefinitionLocalService = objectDefinitionLocalService;
		_objectEntryLocalService = objectEntryLocalService;
		_objectEntryManagerRegistry = objectEntryManagerRegistry;
		_objectFieldInfoFieldConverter = objectFieldInfoFieldConverter;
		_objectFieldLocalService = objectFieldLocalService;
		_objectRelationshipLocalService = objectRelationshipLocalService;
		_objectScopeProviderRegistry = objectScopeProviderRegistry;
		_portal = portal;
		_systemObjectDefinitionManager = systemObjectDefinitionManager;
		_templateInfoItemFieldSetProvider = templateInfoItemFieldSetProvider;
	}

	@Override
	public InfoItemFieldValues getInfoItemFieldValues(
		SystemObjectEntry systemObjectEntry) {

		try {
			InfoItemReference infoItemReference = new InfoItemReference(
				_itemClassName,
				new ClassPKInfoItemIdentifier(systemObjectEntry.getClassPK()));

			ThemeDisplay themeDisplay =
				ObjectEntryInfoItemUtil.getThemeDisplay();

			return InfoItemFieldValues.builder(
			).infoFieldValues(
				_getInfoFieldValues(systemObjectEntry, themeDisplay)
			).infoFieldValues(
				_displayPageInfoItemFieldSetProvider.getInfoFieldValues(
					infoItemReference, StringPool.BLANK,
					SystemObjectEntry.class.getSimpleName(), systemObjectEntry,
					themeDisplay)
			).infoFieldValues(
				_infoItemFieldReaderFieldSetProvider.getInfoFieldValues(
					_itemClassName, systemObjectEntry)
			).infoFieldValues(
				_templateInfoItemFieldSetProvider.getInfoFieldValues(
					_itemClassName, systemObjectEntry)
			).infoItemReference(
				infoItemReference
			).build();
		}
		catch (Exception exception) {
			throw new RuntimeException(exception);
		}
	}

	private List> _getInfoFieldValues(
			SystemObjectEntry systemObjectEntry, ThemeDisplay themeDisplay)
		throws Exception {

		List> infoFieldValues = new ArrayList<>();

		if (FeatureFlagManagerUtil.isEnabled(
				_objectDefinition.getCompanyId(), "LPD-21926")) {

			infoFieldValues.add(
				new InfoFieldValue<>(
					ObjectEntryInfoItemFields.getFriendlyURLInfoField(
						_objectDefinition),
					() ->
						ObjectEntryInfoItemValuesProviderUtil.
							getFriendlyURLInfoFieldValue(
								_portal.getClassNameId(
									_objectDefinition.getClassName()),
								_friendlyURLEntryLocalService,
								systemObjectEntry.getClassPK())));
		}

		Map values = systemObjectEntry.getValues();

		if (MapUtil.isEmpty(values)) {
			return infoFieldValues;
		}

		infoFieldValues.add(
			new InfoFieldValue<>(
				ObjectEntryInfoItemFields.objectEntryIdInfoField,
				GetterUtil.getLong(values.get("id"))));

		PersistedModelLocalService persistedModelLocalService =
			PersistedModelLocalServiceRegistryUtil.
				getPersistedModelLocalService(_objectDefinition.getClassName());

		BaseModel baseModel =
			(BaseModel)persistedModelLocalService.getPersistedModel(
				GetterUtil.getLong(values.get("id")));

		Map baseModelAttributes =
			baseModel.getModelAttributes();

		infoFieldValues.add(
			new InfoFieldValue<>(
				ObjectEntryInfoItemFields.authorInfoField,
				baseModelAttributes.get("userName")));
		infoFieldValues.add(
			new InfoFieldValue<>(
				ObjectEntryInfoItemFields.createDateInfoField,
				baseModelAttributes.get("createDate")));
		infoFieldValues.add(
			new InfoFieldValue<>(
				ObjectEntryInfoItemFields.externalReferenceCodeInfoField,
				baseModelAttributes.get("externalReferenceCode")));
		infoFieldValues.add(
			new InfoFieldValue<>(
				ObjectEntryInfoItemFields.modifiedDateInfoField,
				baseModelAttributes.get("modifiedDate")));
		infoFieldValues.add(
			new InfoFieldValue<>(
				ObjectEntryInfoItemFields.statusInfoField,
				WorkflowConstants.getStatusLabel(
					GetterUtil.getInteger(baseModelAttributes.get("status")))));

		DTOConverter dtoConverter =
			ObjectEntryDTOConverterUtil.getDTOConverter(
				_dtoConverterRegistry, _systemObjectDefinitionManager);

		EntityExtensionHandler entityExtensionHandler =
			ExtensionUtil.getEntityExtensionHandler(
				dtoConverter.getExternalDTOClassName(),
				_objectDefinition.getCompanyId(), _extensionProviderRegistry);

		if ((entityExtensionHandler != null) && (themeDisplay != null)) {
			values.putAll(
				entityExtensionHandler.getExtendedProperties(
					_objectDefinition.getCompanyId(), themeDisplay.getUserId(),
					values));
		}

		infoFieldValues.addAll(
			ObjectEntryInfoItemValuesProviderUtil.getInfoFieldValues(
				_dlAppLocalService, _dlURLHelper, _friendlyURLEntryLocalService,
				_listTypeEntryLocalService, _objectActionLocalService,
				_objectDefinition, _objectDefinitionLocalService,
				_objectEntryLocalService, _objectEntryManagerRegistry,
				_objectFieldInfoFieldConverter, _objectFieldLocalService,
				_objectFieldLocalService.getObjectFields(
					_objectDefinition.getObjectDefinitionId()),
				_objectRelationshipLocalService, _objectScopeProviderRegistry,
				_portal, themeDisplay, values));

		return infoFieldValues;
	}

	private final DisplayPageInfoItemFieldSetProvider
		_displayPageInfoItemFieldSetProvider;
	private final DLAppLocalService _dlAppLocalService;
	private final DLURLHelper _dlURLHelper;
	private final DTOConverterRegistry _dtoConverterRegistry;
	private final ExtensionProviderRegistry _extensionProviderRegistry;
	private final FriendlyURLEntryLocalService _friendlyURLEntryLocalService;
	private final InfoItemFieldReaderFieldSetProvider
		_infoItemFieldReaderFieldSetProvider;
	private final String _itemClassName;
	private final ListTypeEntryLocalService _listTypeEntryLocalService;
	private final ObjectActionLocalService _objectActionLocalService;
	private final ObjectDefinition _objectDefinition;
	private final ObjectDefinitionLocalService _objectDefinitionLocalService;
	private final ObjectEntryLocalService _objectEntryLocalService;
	private final ObjectEntryManagerRegistry _objectEntryManagerRegistry;
	private final ObjectFieldInfoFieldConverter _objectFieldInfoFieldConverter;
	private final ObjectFieldLocalService _objectFieldLocalService;
	private final ObjectRelationshipLocalService
		_objectRelationshipLocalService;
	private final ObjectScopeProviderRegistry _objectScopeProviderRegistry;
	private final Portal _portal;
	private final SystemObjectDefinitionManager _systemObjectDefinitionManager;
	private final TemplateInfoItemFieldSetProvider
		_templateInfoItemFieldSetProvider;

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy