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

com.liferay.dynamic.data.mapping.internal.DDMStructureManagerImpl Maven / Gradle / Ivy

/**
 * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
 *
 * This library is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation; either version 2.1 of the License, or (at your option)
 * any later version.
 *
 * This library is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
 * details.
 */

package com.liferay.dynamic.data.mapping.internal;

import com.liferay.dynamic.data.mapping.exception.StructureDuplicateElementException;
import com.liferay.dynamic.data.mapping.exception.StructureNameException;
import com.liferay.dynamic.data.mapping.kernel.DDMForm;
import com.liferay.dynamic.data.mapping.kernel.DDMFormValues;
import com.liferay.dynamic.data.mapping.kernel.DDMStructure;
import com.liferay.dynamic.data.mapping.kernel.DDMStructureManager;
import com.liferay.dynamic.data.mapping.kernel.NoSuchStructureException;
import com.liferay.dynamic.data.mapping.kernel.RequiredStructureException;
import com.liferay.dynamic.data.mapping.kernel.StructureDefinitionException;
import com.liferay.dynamic.data.mapping.service.DDMStorageLinkLocalService;
import com.liferay.dynamic.data.mapping.service.DDMStructureLocalService;
import com.liferay.dynamic.data.mapping.util.DDM;
import com.liferay.dynamic.data.mapping.util.DDMBeanTranslator;
import com.liferay.dynamic.data.mapping.util.DDMIndexer;
import com.liferay.dynamic.data.mapping.util.comparator.StructureIdComparator;
import com.liferay.dynamic.data.mapping.util.comparator.StructureStructureKeyComparator;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.json.JSONArray;
import com.liferay.portal.kernel.search.Document;
import com.liferay.portal.kernel.service.ServiceContext;
import com.liferay.portal.kernel.util.OrderByComparator;

import java.io.Serializable;

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

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

/**
 * @author Leonardo Barros
 */
@Component(immediate = true)
public class DDMStructureManagerImpl implements DDMStructureManager {

	@Override
	public void addAttributes(
			long structureId, Document document, DDMFormValues ddmFormValues)
		throws PortalException {

		com.liferay.dynamic.data.mapping.model.DDMStructure ddmStructure =
			_ddmStructureLocalService.getStructure(structureId);

		_ddmIndexer.addAttributes(
			document, ddmStructure,
			_ddmBeanTranslator.translate(ddmFormValues));
	}

	@Override
	public DDMStructure addStructure(
			long userId, long groupId, String parentStructureKey,
			long classNameId, String structureKey, Map nameMap,
			Map descriptionMap, DDMForm ddmForm,
			String storageType, int type, ServiceContext serviceContext)
		throws PortalException {

		try {
			com.liferay.dynamic.data.mapping.model.DDMForm translatedDDMForm =
				_ddmBeanTranslator.translate(ddmForm);

			com.liferay.dynamic.data.mapping.model.DDMStructure ddmStructure =
				_ddmStructureLocalService.addStructure(
					userId, groupId, parentStructureKey, classNameId,
					structureKey, nameMap, descriptionMap, translatedDDMForm,
					_ddm.getDefaultDDMFormLayout(translatedDDMForm),
					storageType, type, serviceContext);

			return new DDMStructureImpl(ddmStructure);
		}
		catch (PortalException pe) {
			throw translate(pe);
		}
	}

	@Override
	public void deleteStructure(long structureId) throws PortalException {
		try {
			_ddmStructureLocalService.deleteStructure(structureId);
		}
		catch (PortalException pe) {
			throw translate(pe);
		}
	}

	@Override
	public String extractAttributes(
			long structureId, DDMFormValues ddmFormValues, Locale locale)
		throws PortalException {

		com.liferay.dynamic.data.mapping.model.DDMStructure ddmStructure =
			_ddmStructureLocalService.getStructure(structureId);

		return _ddmIndexer.extractIndexableAttributes(
			ddmStructure, _ddmBeanTranslator.translate(ddmFormValues), locale);
	}

	@Override
	public DDMStructure fetchStructure(long structureId) {
		com.liferay.dynamic.data.mapping.model.DDMStructure ddmStructure =
			_ddmStructureLocalService.fetchDDMStructure(structureId);

		if (ddmStructure == null) {
			return null;
		}

		return new DDMStructureImpl(ddmStructure);
	}

	@Override
	public DDMStructure fetchStructure(
		long groupId, long classNameId, String structureKey) {

		com.liferay.dynamic.data.mapping.model.DDMStructure ddmStructure =
			_ddmStructureLocalService.fetchStructure(
				groupId, classNameId, structureKey);

		if (ddmStructure == null) {
			return null;
		}

		return new DDMStructureImpl(ddmStructure);
	}

	@Override
	public DDMStructure fetchStructureByUuidAndGroupId(
		String uuid, long groupId) {

		com.liferay.dynamic.data.mapping.model.DDMStructure ddmStructure =
			_ddmStructureLocalService.fetchDDMStructureByUuidAndGroupId(
				uuid, groupId);

		if (ddmStructure == null) {
			return null;
		}

		return new DDMStructureImpl(ddmStructure);
	}

	@Override
	public List getClassStructures(
		long companyId, long classNameId) {

		List ddmStructures = new ArrayList<>();

		List structures =
			_ddmStructureLocalService.getClassStructures(
				companyId, classNameId);

		for (com.liferay.dynamic.data.mapping.model.DDMStructure
				structure : structures) {

			ddmStructures.add(new DDMStructureImpl(structure));
		}

		return ddmStructures;
	}

	@Override
	public List getClassStructures(
		long companyId, long classNameId, int structureComparator) {

		List ddmStructures = new ArrayList<>();

		for (com.liferay.dynamic.data.mapping.model.DDMStructure
				ddmStructure :
					_ddmStructureLocalService.getClassStructures(
						companyId, classNameId,
						getStructureOrderByComparator(structureComparator))) {

			ddmStructures.add(new DDMStructureImpl(ddmStructure));
		}

		return ddmStructures;
	}

	@Override
	public List getClassStructures(
		long companyId, long classNameId, int start, int end) {

		List ddmStructures = new ArrayList<>();

		for (com.liferay.dynamic.data.mapping.model.DDMStructure
				ddmStructure :
					_ddmStructureLocalService.getClassStructures(
						companyId, classNameId, start, end)) {

			ddmStructures.add(new DDMStructureImpl(ddmStructure));
		}

		return ddmStructures;
	}

	@Override
	public JSONArray getDDMFormFieldsJSONArray(long structureId, String script)
		throws PortalException {

		com.liferay.dynamic.data.mapping.model.DDMStructure ddmStructure =
			_ddmStructureLocalService.fetchDDMStructure(structureId);

		return _ddm.getDDMFormFieldsJSONArray(ddmStructure, script);
	}

	@Override
	public Class getDDMStructureModelClass() {
		return com.liferay.dynamic.data.mapping.model.DDMStructure.class;
	}

	@Override
	public Serializable getIndexedFieldValue(
			Serializable fieldValue, String fieldType)
		throws Exception {

		return _ddm.getIndexedFieldValue(fieldValue, fieldType);
	}

	@Override
	public DDMStructure getStructure(long structureId) throws PortalException {
		try {
			com.liferay.dynamic.data.mapping.model.DDMStructure ddmStructure =
				_ddmStructureLocalService.getStructure(structureId);

			return new DDMStructureImpl(ddmStructure);
		}
		catch (PortalException pe) {
			throw translate(pe);
		}
	}

	@Override
	public DDMStructure getStructure(
			long groupId, long classNameId, String structureKey)
		throws PortalException {

		try {
			com.liferay.dynamic.data.mapping.model.DDMStructure structure =
				_ddmStructureLocalService.getStructure(
					groupId, classNameId, structureKey);

			return new DDMStructureImpl(structure);
		}
		catch (PortalException pe) {
			throw translate(pe);
		}
	}

	@Override
	public DDMStructure getStructureByUuidAndGroupId(String uuid, long groupId)
		throws PortalException {

		try {
			com.liferay.dynamic.data.mapping.model.DDMStructure ddmStructure =
				_ddmStructureLocalService.getDDMStructureByUuidAndGroupId(
					uuid, groupId);

			return new DDMStructureImpl(ddmStructure);
		}
		catch (PortalException pe) {
			throw translate(pe);
		}
	}

	@Override
	public List getStructures(long[] groupIds, long classNameId) {
		List ddmStructures = new ArrayList<>();

		for (com.liferay.dynamic.data.mapping.model.DDMStructure
				ddmStructure :
					_ddmStructureLocalService.getStructures(
						groupIds, classNameId)) {

			ddmStructures.add(new DDMStructureImpl(ddmStructure));
		}

		return ddmStructures;
	}

	@Override
	public int getStructureStorageLinksCount(long structureId) {
		return _ddmStorageLinkLocalService.getStructureStorageLinksCount(
			structureId);
	}

	@Override
	public DDMStructure updateStructure(
			long userId, long structureId, long parentStructureId,
			Map nameMap, Map descriptionMap,
			DDMForm ddmForm, ServiceContext serviceContext)
		throws PortalException {

		try {
			com.liferay.dynamic.data.mapping.model.DDMForm copyDDMForm =
				_ddmBeanTranslator.translate(ddmForm);

			com.liferay.dynamic.data.mapping.model.DDMStructure ddmStructure =
				_ddmStructureLocalService.updateStructure(
					userId, structureId, parentStructureId, nameMap,
					descriptionMap, copyDDMForm,
					_ddm.getDefaultDDMFormLayout(copyDDMForm), serviceContext);

			return new DDMStructureImpl(ddmStructure);
		}
		catch (PortalException pe) {
			throw translate(pe);
		}
	}

	@Override
	public void updateStructureDefinition(long structureId, String definition)
		throws PortalException {

		try {
			com.liferay.dynamic.data.mapping.model.DDMStructure ddmStructure =
				_ddmStructureLocalService.getDDMStructure(structureId);

			ddmStructure.setDefinition(definition);

			_ddmStructureLocalService.updateDDMStructure(ddmStructure);
		}
		catch (PortalException pe) {
			throw translate(pe);
		}
	}

	@Override
	public void updateStructureKey(long structureId, String structureKey)
		throws PortalException {

		com.liferay.dynamic.data.mapping.model.DDMStructure ddmStructure =
			_ddmStructureLocalService.getDDMStructure(structureId);

		ddmStructure.setStructureKey(structureKey);

		_ddmStructureLocalService.updateDDMStructure(ddmStructure);
	}

	protected OrderByComparator
		
			getStructureOrderByComparator(int structureComparator) {

		if (structureComparator ==
				DDMStructureManager.STRUCTURE_COMPARATOR_STRUCTURE_KEY) {

			return new StructureStructureKeyComparator();
		}

		return new StructureIdComparator();
	}

	@Reference(unbind = "-")
	protected void setDDM(DDM ddm) {
		_ddm = ddm;
	}

	@Reference(unbind = "-")
	protected void setDDMBeanTranslator(DDMBeanTranslator ddmBeanTranslator) {
		_ddmBeanTranslator = ddmBeanTranslator;
	}

	@Reference(unbind = "-")
	protected void setDDMIndexer(DDMIndexer ddmIndexer) {
		_ddmIndexer = ddmIndexer;
	}

	@Reference(unbind = "-")
	protected void setDDMStorageLinkLocalService(
		DDMStorageLinkLocalService ddmStorageLinkLocalService) {

		_ddmStorageLinkLocalService = ddmStorageLinkLocalService;
	}

	@Reference(unbind = "-")
	protected void setDDMStructureLocalService(
		DDMStructureLocalService ddmStructureLocalService) {

		_ddmStructureLocalService = ddmStructureLocalService;
	}

	protected PortalException translate(PortalException portalException) {
		if (portalException instanceof
				com.liferay.dynamic.data.mapping.exception.
					NoSuchStructureException) {

			return new NoSuchStructureException(
				portalException.getMessage(), portalException.getCause());
		}
		else if (portalException instanceof
					com.liferay.dynamic.data.mapping.exception.
						RequiredStructureException) {

			return new RequiredStructureException(
				portalException.getMessage(), portalException.getCause());
		}
		else if (portalException instanceof
					com.liferay.dynamic.data.mapping.exception.
						StructureDefinitionException) {

			return new StructureDefinitionException(
				portalException.getMessage(), portalException.getCause());
		}
		else if (portalException instanceof
					com.liferay.dynamic.data.mapping.exception.
						StructureDuplicateElementException) {

			return new StructureDuplicateElementException(
				portalException.getMessage(), portalException.getCause());
		}
		else if (portalException instanceof
					com.liferay.dynamic.data.mapping.exception.
						StructureNameException) {

			return new StructureNameException(
				portalException.getMessage(), portalException.getCause());
		}

		return portalException;
	}

	private DDM _ddm;
	private DDMBeanTranslator _ddmBeanTranslator;
	private DDMIndexer _ddmIndexer;
	private DDMStorageLinkLocalService _ddmStorageLinkLocalService;
	private DDMStructureLocalService _ddmStructureLocalService;

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy