
com.liferay.dynamic.data.mapping.service.impl.DDMStructureServiceImpl 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.service.impl;
import com.liferay.dynamic.data.mapping.model.DDMForm;
import com.liferay.dynamic.data.mapping.model.DDMFormLayout;
import com.liferay.dynamic.data.mapping.model.DDMStructure;
import com.liferay.dynamic.data.mapping.service.base.DDMStructureServiceBaseImpl;
import com.liferay.dynamic.data.mapping.service.permission.DDMStructurePermission;
import com.liferay.portal.kernel.dao.orm.QueryUtil;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.security.permission.ActionKeys;
import com.liferay.portal.kernel.service.ServiceContext;
import com.liferay.portal.kernel.util.OrderByComparator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
/**
* Provides the remote service for accessing, adding, deleting, and updating
* dynamic data mapping (DDM) structures. Its methods include permission checks.
*
* @author Brian Wing Shun Chan
* @author Bruno Basto
* @author Marcellus Tavares
* @see com.liferay.dynamic.data.mapping.service.impl.DDMStructureLocalServiceImpl
*/
public class DDMStructureServiceImpl extends DDMStructureServiceBaseImpl {
@Override
public DDMStructure addStructure(
long userId, long groupId, long classNameId,
Map nameMap, Map descriptionMap,
DDMForm ddmForm, DDMFormLayout ddmFormLayout, String storageType,
ServiceContext serviceContext)
throws PortalException {
DDMStructurePermission.checkAddStruturePermission(
getPermissionChecker(), groupId, classNameId);
return ddmStructureLocalService.addStructure(
getUserId(), groupId, classNameId, nameMap, descriptionMap, ddmForm,
ddmFormLayout, storageType, serviceContext);
}
/**
* Adds a structure referencing a default parent structure, using the portal
* property dynamic.data.lists.storage.type
storage type and
* default structure type.
*
* @param userId the primary key of the structure's creator/owner
* @param groupId the primary key of the group
* @param classNameId the primary key of the class name for the
* structure's related model
* @param nameMap the structure's locales and localized names
* @param descriptionMap the structure's locales and localized
* descriptions
* @param xsd the structure's XML schema definition
* @param serviceContext the service context to be applied. Can set the
* UUID, creation date, modification date, guest permissions,
* and group permissions for the structure.
* @return the structure
* @deprecated As of 7.0.0, replaced by {@link #addStructure(long, long,
* long, Map, Map, DDMForm, DDMFormLayout, ServiceContext)}
*/
@Deprecated
@Override
public DDMStructure addStructure(
long userId, long groupId, long classNameId,
Map nameMap, Map descriptionMap,
String xsd, ServiceContext serviceContext)
throws PortalException {
DDMStructurePermission.checkAddStruturePermission(
getPermissionChecker(), groupId, classNameId);
return ddmStructureLocalService.addStructure(
getUserId(), groupId, classNameId, nameMap, descriptionMap, xsd,
serviceContext);
}
@Override
public DDMStructure addStructure(
long groupId, long parentStructureId, long classNameId,
String structureKey, Map nameMap,
Map descriptionMap, DDMForm ddmForm,
DDMFormLayout ddmFormLayout, String storageType, int type,
ServiceContext serviceContext)
throws PortalException {
DDMStructurePermission.checkAddStruturePermission(
getPermissionChecker(), groupId, classNameId);
return ddmStructureLocalService.addStructure(
getUserId(), groupId, parentStructureId, classNameId, structureKey,
nameMap, descriptionMap, ddmForm, ddmFormLayout, storageType, type,
serviceContext);
}
/**
* Adds a structure referencing its parent structure.
*
* @param groupId the primary key of the group
* @param parentStructureId the primary key of the parent structure
* (optionally {@link
* com.liferay.dynamic.data.mapping.model.DDMStructureConstants#DEFAULT_PARENT_STRUCTURE_ID})
* @param classNameId the primary key of the class name for the
* structure's related model
* @param structureKey the unique string identifying the structure
* (optionally null
)
* @param nameMap the structure's locales and localized names
* @param descriptionMap the structure's locales and localized
* descriptions
* @param xsd the structure's XML schema definition
* @param storageType the structure's storage type. It can be "xml" or
* "expando". For more information, see {@link
* com.liferay.dynamic.data.mapping.storage.StorageType}.
* @param type the structure's type. For more information, see {@link
* com.liferay.dynamic.data.mapping.model.DDMStructureConstants}.
* @param serviceContext the service context to be applied. Can set the
* UUID, creation date, modification date, guest permissions,
* and group permissions for the structure.
* @return the structure
* @deprecated As of 7.0.0, replaced by {@link #addStructure(long, long,
* long, String, Map, Map, DDMForm, DDMFormLayout, String, int,
* ServiceContext)}
*/
@Deprecated
@Override
public DDMStructure addStructure(
long groupId, long parentStructureId, long classNameId,
String structureKey, Map nameMap,
Map descriptionMap, String xsd, String storageType,
int type, ServiceContext serviceContext)
throws PortalException {
DDMStructurePermission.checkAddStruturePermission(
getPermissionChecker(), groupId, classNameId);
return ddmStructureLocalService.addStructure(
getUserId(), groupId, parentStructureId, classNameId, structureKey,
nameMap, descriptionMap, xsd, storageType, type, serviceContext);
}
@Override
public DDMStructure addStructure(
long userId, long groupId, String parentStructureKey,
long classNameId, String structureKey, Map nameMap,
Map descriptionMap, DDMForm ddmForm,
DDMFormLayout ddmFormLayout, String storageType, int type,
ServiceContext serviceContext)
throws PortalException {
DDMStructurePermission.checkAddStruturePermission(
getPermissionChecker(), groupId, classNameId);
return ddmStructureLocalService.addStructure(
userId, groupId, parentStructureKey, classNameId, structureKey,
nameMap, descriptionMap, ddmForm, ddmFormLayout, storageType, type,
serviceContext);
}
/**
* Adds a structure referencing the parent structure by its structure key.
* In case the parent structure is not found, it uses the default parent
* structure ID.
*
* @param userId the primary key of the structure's creator/owner
* @param groupId the primary key of the group
* @param parentStructureKey the unique string identifying the
* structure
* @param classNameId the primary key of the class name for the
* structure's related model
* @param structureKey unique string identifying the structure
* (optionally null
)
* @param nameMap the structure's locales and localized names
* @param descriptionMap the structure's locales and localized
* descriptions
* @param xsd the XML schema definition of the structure
* @param storageType the storage type of the structure. It can be XML
* or expando. For more information, see {@link
* com.liferay.dynamic.data.mapping.storage.StorageType}.
* @param type the structure's type. For more information, see {@link
* com.liferay.dynamic.data.mapping.model.DDMStructureConstants}.
* @param serviceContext the service context to be applied. Must have
* the ddmResource
attribute to check permissions.
* Can set the UUID, creation date, modification date, guest
* permissions, and group permissions for the structure.
* @return the structure
* @deprecated As of 7.0.0, replaced by {@link #addStructure(long, long,
* String, long, String, Map, Map, DDMForm, DDMFormLayout,
* String, int, ServiceContext)}
*/
@Deprecated
@Override
public DDMStructure addStructure(
long userId, long groupId, String parentStructureKey,
long classNameId, String structureKey, Map nameMap,
Map descriptionMap, String xsd, String storageType,
int type, ServiceContext serviceContext)
throws PortalException {
DDMStructurePermission.checkAddStruturePermission(
getPermissionChecker(), groupId, classNameId);
return ddmStructureLocalService.addStructure(
userId, groupId, parentStructureKey, classNameId, structureKey,
nameMap, descriptionMap, xsd, storageType, type, serviceContext);
}
/**
* Copies a structure, creating a new structure with all the values
* extracted from the original one. The new structure supports a new name
* and description.
*
* @param structureId the primary key of the structure to be copied
* @param nameMap the new structure's locales and localized names
* @param descriptionMap the new structure's locales and localized
* descriptions
* @param serviceContext the service context to be applied. Can set the
* UUID, creation date, modification date, guest permissions, and
* group permissions for the structure.
* @return the new structure
*/
@Override
public DDMStructure copyStructure(
long structureId, Map nameMap,
Map descriptionMap, ServiceContext serviceContext)
throws PortalException {
DDMStructure structure = ddmStructurePersistence.findByPrimaryKey(
structureId);
DDMStructurePermission.check(
getPermissionChecker(), structure, ActionKeys.VIEW);
DDMStructurePermission.checkAddStruturePermission(
getPermissionChecker(), serviceContext.getScopeGroupId(),
structure.getClassNameId());
return ddmStructureLocalService.copyStructure(
getUserId(), structureId, nameMap, descriptionMap, serviceContext);
}
@Override
public DDMStructure copyStructure(
long structureId, ServiceContext serviceContext)
throws PortalException {
DDMStructure structure = ddmStructurePersistence.findByPrimaryKey(
structureId);
DDMStructurePermission.check(
getPermissionChecker(), structure, ActionKeys.VIEW);
DDMStructurePermission.checkAddStruturePermission(
getPermissionChecker(), serviceContext.getScopeGroupId(),
structure.getClassNameId());
return ddmStructureLocalService.copyStructure(
getUserId(), structureId, serviceContext);
}
/**
* Deletes the structure and its resources.
*
*
* Before deleting the structure, the system verifies whether the structure
* is required by another entity. If it is needed, an exception is thrown.
*
*
* @param structureId the primary key of the structure to be deleted
*/
@Override
public void deleteStructure(long structureId) throws PortalException {
DDMStructurePermission.check(
getPermissionChecker(), structureId, ActionKeys.DELETE);
ddmStructureLocalService.deleteStructure(structureId);
}
/**
* Returns the structure matching the class name ID, structure key, and
* group.
*
* @param groupId the primary key of the group
* @param classNameId the primary key of the class name for the structure's
* related model
* @param structureKey the unique string identifying the structure
* @return the matching structure, or null
if a matching
* structure could not be found
*/
@Override
public DDMStructure fetchStructure(
long groupId, long classNameId, String structureKey)
throws PortalException {
DDMStructure ddmStructure = ddmStructurePersistence.fetchByG_C_S(
groupId, classNameId, structureKey);
if (ddmStructure != null) {
DDMStructurePermission.check(
getPermissionChecker(), ddmStructure, ActionKeys.VIEW);
}
return ddmStructure;
}
@Override
public DDMStructure fetchStructure(
long groupId, long classNameId, String structureKey,
boolean includeAncestorStructures)
throws PortalException {
DDMStructure ddmStructure = ddmStructureLocalService.fetchStructure(
groupId, classNameId, structureKey, includeAncestorStructures);
if (ddmStructure != null) {
DDMStructurePermission.check(
getPermissionChecker(), ddmStructure, ActionKeys.VIEW);
}
return ddmStructure;
}
/**
* Returns the structure with the ID.
*
* @param structureId the primary key of the structure
* @return the structure with the ID
*/
@Override
public DDMStructure getStructure(long structureId) throws PortalException {
DDMStructurePermission.check(
getPermissionChecker(), structureId, ActionKeys.VIEW);
return ddmStructurePersistence.findByPrimaryKey(structureId);
}
/**
* Returns the structure matching the class name ID, structure key, and
* group.
*
* @param groupId the primary key of the structure's group
* @param classNameId the primary key of the class name for the structure's
* related model
* @param structureKey the unique string identifying the structure
* @return the matching structure
*/
@Override
public DDMStructure getStructure(
long groupId, long classNameId, String structureKey)
throws PortalException {
DDMStructurePermission.check(
getPermissionChecker(), groupId, classNameId, structureKey,
ActionKeys.VIEW);
return ddmStructureLocalService.getStructure(
groupId, classNameId, structureKey);
}
/**
* Returns the structure matching the class name ID, structure key, and
* group, optionally searching ancestor sites (that have sharing enabled)
* and global scoped sites.
*
*
* This method first searches in the group. If the structure is still not
* found and includeAncestorStructures
is set to
* true
, this method searches the group's ancestor sites (that
* have sharing enabled) and lastly searches global scoped sites.
*
*
* @param groupId the primary key of the structure's group
* @param classNameId the primary key of the class name for the structure's
* related model
* @param structureKey the unique string identifying the structure
* @param includeAncestorStructures whether to include ancestor sites (that
* have sharing enabled) and include global scoped sites in the
* search
* @return the matching structure
*/
@Override
public DDMStructure getStructure(
long groupId, long classNameId, String structureKey,
boolean includeAncestorStructures)
throws PortalException {
DDMStructurePermission.check(
getPermissionChecker(), groupId, classNameId, structureKey,
ActionKeys.VIEW);
return ddmStructureLocalService.getStructure(
groupId, classNameId, structureKey, includeAncestorStructures);
}
@Override
public List getStructures(
long companyId, long[] groupIds, long classNameId, int status) {
return ddmStructureFinder.filterFindByC_G_C_S(
companyId, groupIds, classNameId, status, QueryUtil.ALL_POS,
QueryUtil.ALL_POS, null);
}
@Override
public List getStructures(
long companyId, long[] groupIds, long classNameId, int status,
int start, int end, OrderByComparator orderByComparator) {
return ddmStructureFinder.filterFindByC_G_C_S(
companyId, groupIds, classNameId, status, start, end,
orderByComparator);
}
@Override
public void revertStructure(
long structureId, String version, ServiceContext serviceContext)
throws PortalException {
DDMStructurePermission.check(
getPermissionChecker(), structureId, ActionKeys.UPDATE);
ddmStructureLocalService.revertStructure(
getUserId(), structureId, version, serviceContext);
}
/**
* Returns an ordered range of all the structures matching the groups and
* class name IDs, and matching the keywords in the structure names and
* descriptions.
*
*
* Useful when paginating results. Returns a maximum of end -
* start
instances. start
and end
are not
* primary keys, they are indexes in the result set. Thus, 0
* refers to the first result in the set. Setting both start
* and end
to {@link QueryUtil#ALL_POS} will return the full
* result set.
*
*
* @param companyId the primary key of the structure's company
* @param groupIds the primary keys of the groups
* @param classNameId the primary key of the class name of the model the
* structure is related to
* @param keywords the keywords (space separated), which may occur in the
* structure's name or description (optionally null
)
* @param start the lower bound of the range of structures to return
* @param end the upper bound of the range of structures to return (not
* inclusive)
* @param orderByComparator the comparator to order the structures
* (optionally null
)
* @return the range of matching structures ordered by the comparator
*/
@Override
public List search(
long companyId, long[] groupIds, long classNameId, String keywords,
int status, int start, int end,
OrderByComparator orderByComparator) {
return ddmStructureFinder.filterFindByKeywords(
companyId, groupIds, classNameId, keywords, status, start, end,
orderByComparator);
}
/**
* Returns an ordered range of all the structures matching the groups, class
* name IDs, name keyword, description keyword, storage type, and type.
*
*
* Useful when paginating results. Returns a maximum of end -
* start
instances. start
and end
are not
* primary keys, they are indexes in the result set. Thus, 0
* refers to the first result in the set. Setting both start
* and end
to {@link QueryUtil#ALL_POS} will return the full
* result set.
*
*
* @param companyId the primary key of the structure's company
* @param groupIds the primary keys of the groups
* @param classNameId the primary key of the class name of the model the
* structure is related to
* @param name the name keywords
* @param description the description keywords
* @param storageType the structure's storage type. It can be "xml" or
* "expando". For more information, see {@link
* com.liferay.dynamic.data.mapping.storage.StorageType}.
* @param type the structure's type. For more information, see {@link
* com.liferay.dynamic.data.mapping.model.DDMStructureConstants}.
* @param andOperator whether every field must match its keywords, or just
* one field
* @param start the lower bound of the range of structures to return
* @param end the upper bound of the range of structures to return (not
* inclusive)
* @param orderByComparator the comparator to order the structures
* (optionally null
)
* @return the range of matching structures ordered by the comparator
*/
@Override
public List search(
long companyId, long[] groupIds, long classNameId, String name,
String description, String storageType, int type, int status,
boolean andOperator, int start, int end,
OrderByComparator orderByComparator) {
return ddmStructureFinder.filterFindByC_G_C_N_D_S_T_S(
companyId, groupIds, classNameId, name, description, storageType,
type, status, andOperator, start, end, orderByComparator);
}
/**
* Returns the number of structures matching the groups and class name IDs,
* and matching the keywords in the structure names and descriptions.
*
* @param companyId the primary key of the structure's company
* @param groupIds the primary keys of the groups
* @param classNameId the primary key of the class name of the model the
* structure is related to
* @param keywords the keywords (space separated), which may occur in the
* structure's name or description (optionally null
)
* @return the number of matching structures
*/
@Override
public int searchCount(
long companyId, long[] groupIds, long classNameId, String keywords,
int status) {
return ddmStructureFinder.filterCountByKeywords(
companyId, groupIds, classNameId, keywords, status);
}
/**
* Returns the number of structures matching the groups, class name IDs,
* name keyword, description keyword, storage type, and type
*
* @param companyId the primary key of the structure's company
* @param groupIds the primary keys of the groups
* @param classNameId the primary key of the class name of the model the
* structure is related to
* @param name the name keywords
* @param description the description keywords
* @param storageType the structure's storage type. It can be "xml" or
* "expando". For more information, see {@link
* com.liferay.dynamic.data.mapping.storage.StorageType}.
* @param type the structure's type. For more information, see {@link
* com.liferay.dynamic.data.mapping.model.DDMStructureConstants}.
* @param andOperator whether every field must match its keywords, or just
* one field
* @return the number of matching structures
*/
@Override
public int searchCount(
long companyId, long[] groupIds, long classNameId, String name,
String description, String storageType, int type, int status,
boolean andOperator) {
return ddmStructureFinder.filterCountByC_G_C_N_D_S_T_S(
companyId, groupIds, classNameId, name, description, storageType,
type, status, andOperator);
}
@Override
public DDMStructure updateStructure(
long groupId, long parentStructureId, long classNameId,
String structureKey, Map nameMap,
Map descriptionMap, DDMForm ddmForm,
DDMFormLayout ddmFormLayout, ServiceContext serviceContext)
throws PortalException {
DDMStructurePermission.check(
getPermissionChecker(), groupId, classNameId, structureKey,
ActionKeys.UPDATE);
return ddmStructureLocalService.updateStructure(
getUserId(), groupId, parentStructureId, classNameId, structureKey,
nameMap, descriptionMap, ddmForm, ddmFormLayout, serviceContext);
}
/**
* Updates the structure matching the class name ID, structure key, and
* group, replacing its old parent structure, name map, description map, and
* XSD with new ones.
*
* @param groupId the primary key of the group
* @param parentStructureId the primary key of the new parent structure
* @param classNameId the primary key of the class name for the
* structure's related model
* @param structureKey the unique string identifying the structure
* @param nameMap the structure's new locales and localized names
* @param descriptionMap the structure's new locales and localized
* description
* @param definition the structure's new XML schema definition
* @param serviceContext the service context to be applied. Can set the
* modification date.
* @return the updated structure
* @deprecated As of 7.0.0, replaced by {@link #updateStructure(long, long,
* long, String, Map, Map, DDMForm, DDMFormLayout,
* ServiceContext)}
*/
@Deprecated
@Override
public DDMStructure updateStructure(
long groupId, long parentStructureId, long classNameId,
String structureKey, Map nameMap,
Map descriptionMap, String definition,
ServiceContext serviceContext)
throws PortalException {
DDMStructurePermission.check(
getPermissionChecker(), groupId, classNameId, structureKey,
ActionKeys.UPDATE);
return ddmStructureLocalService.updateStructure(
groupId, parentStructureId, classNameId, structureKey, nameMap,
descriptionMap, definition, serviceContext);
}
@Override
public DDMStructure updateStructure(
long structureId, long parentStructureId,
Map nameMap, Map descriptionMap,
DDMForm ddmForm, DDMFormLayout ddmFormLayout,
ServiceContext serviceContext)
throws PortalException {
DDMStructurePermission.check(
getPermissionChecker(), structureId, ActionKeys.UPDATE);
return ddmStructureLocalService.updateStructure(
getUserId(), structureId, parentStructureId, nameMap,
descriptionMap, ddmForm, ddmFormLayout, serviceContext);
}
/**
* Updates the structure matching the structure ID, replacing the old parent
* structure ID, name map, description map, and XSD with the new values.
*
* @param structureId the primary key of the structure
* @param parentStructureId the new parent structure primary key
* @param nameMap the structure's new locales and localized names
* @param descriptionMap the structure's new locales and localized
* description
* @param definition the new XML schema definition of the structure
* @param serviceContext the service context to be applied. Can set the
* modification date.
* @return the updated structure
* @deprecated As of 7.0.0, replaced by {@link #updateStructure(long, long,
* Map, Map, DDMForm, DDMFormLayout, ServiceContext)}
*/
@Deprecated
@Override
public DDMStructure updateStructure(
long structureId, long parentStructureId,
Map nameMap, Map descriptionMap,
String definition, ServiceContext serviceContext)
throws PortalException {
DDMStructurePermission.check(
getPermissionChecker(), structureId, ActionKeys.UPDATE);
return ddmStructureLocalService.updateStructure(
structureId, parentStructureId, nameMap, descriptionMap, definition,
serviceContext);
}
}