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

com.liferay.headless.delivery.dynamic.data.mapping.DDMFormFieldUtil Maven / Gradle / Ivy

The newest version!
/**
 * SPDX-FileCopyrightText: (c) 2000 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.headless.delivery.dynamic.data.mapping;

import com.liferay.dynamic.data.mapping.model.DDMFormField;
import com.liferay.dynamic.data.mapping.model.DDMStructure;
import com.liferay.dynamic.data.mapping.service.DDMStructureService;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;

import java.util.List;

/**
 * @author Luis Miguel Barcos
 */
public class DDMFormFieldUtil {

	public static DDMFormField getDDMFormField(
		DDMStructureService ddmStructureService, DDMStructure ddmStructure,
		String name) {

		DDMFormField ddmFormField = _getDDMFormField(
			ddmStructure.getDDMFormFields(true), name);

		if (ddmFormField != null) {
			return ddmFormField;
		}

		if (ddmStructure.getParentStructureId() == -1) {
			return null;
		}

		try {
			DDMStructure parentDDMStructure = ddmStructureService.getStructure(
				ddmStructure.getParentStructureId());

			ddmFormField = _getDDMFormField(
				parentDDMStructure.getDDMFormFields(true), name);

			if (ddmFormField != null) {
				return ddmFormField;
			}
		}
		catch (PortalException portalException) {
			if (_log.isWarnEnabled()) {
				_log.warn(portalException);
			}
		}

		return null;
	}

	private static DDMFormField _getDDMFormField(
		List ddmFormFields, String name) {

		for (DDMFormField ddmFormField : ddmFormFields) {
			if (name.equals(ddmFormField.getName())) {
				return ddmFormField;
			}
			else if (name.equals(ddmFormField.getFieldReference())) {
				return ddmFormField;
			}

			DDMFormField nestedDDMFormField = _getDDMFormField(
				ddmFormField.getNestedDDMFormFields(), name);

			if (nestedDDMFormField != null) {
				return nestedDDMFormField;
			}
		}

		return null;
	}

	private static final Log _log = LogFactoryUtil.getLog(
		DDMFormFieldUtil.class);

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy