/**
* 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.DDMTemplate;
import com.liferay.dynamic.data.mapping.service.base.DDMTemplateServiceBaseImpl;
import com.liferay.dynamic.data.mapping.service.permission.DDMTemplatePermission;
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 com.liferay.portal.kernel.util.PortalUtil;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Map;
/**
* Provides the remote service for accessing, adding, copying, deleting, and
* updating dynamic data mapping (DDM) templates. Its methods include security
* checks.
*
* @author Brian Wing Shun Chan
* @author Eduardo Lundgren
* @author Marcellus Tavares
* @see DDMTemplateLocalServiceImpl
*/
public class DDMTemplateServiceImpl extends DDMTemplateServiceBaseImpl {
/**
* Adds a template.
*
* @param groupId the primary key of the group
* @param classNameId the primary key of the class name for template's
* related model
* @param classPK the primary key of the template's related entity
* @param resourceClassNameId the primary key of the class name for
* template's resource model
* @param nameMap the template's locales and localized names
* @param descriptionMap the template's locales and localized descriptions
* @param type the template's type. For more information, see
* DDMTemplateConstants in the dynamic-data-mapping-api module.
* @param mode the template's mode. For more information, see
* DDMTemplateConstants in the dynamic-data-mapping-api module.
* @param language the template's script language. For more information,
* see DDMTemplateConstants in the dynamic-data-mapping-api module.
* @param script the template's script
* @param serviceContext the service context to be applied. Must have the
* <code>ddmResource</code> attribute to check permissions. Can set
* the UUID, creation date, modification date, guest permissions,
* and group permissions for the template.
* @return the template
*/
@Override
public DDMTemplate addTemplate(
long groupId, long classNameId, long classPK,
long resourceClassNameId, Map<Locale, String> nameMap,
Map<Locale, String> descriptionMap, String type, String mode,
String language, String script, ServiceContext serviceContext)
throws PortalException {
DDMTemplatePermission.checkAddTemplatePermission(
getPermissionChecker(), groupId, classNameId, resourceClassNameId);
return ddmTemplateLocalService.addTemplate(
getUserId(), groupId, classNameId, classPK, resourceClassNameId,
null, nameMap, descriptionMap, type, mode, language, script, false,
false, null, null, serviceContext);
}
/**
* Adds a template with additional parameters.
*
* @param groupId the primary key of the group
* @param classNameId the primary key of the class name for template's
* related model
* @param classPK the primary key of the template's related entity
* @param resourceClassNameId the primary key of the class name for
* template's resource model
* @param templateKey the unique string identifying the template
* (optionally <code>null</code>)
* @param nameMap the template's locales and localized names
* @param descriptionMap the template's locales and localized descriptions
* @param type the template's type. For more information, see
* DDMTemplateConstants in the dynamic-data-mapping-api module.
* @param mode the template's mode. For more information, see
* DDMTemplateConstants in the dynamic-data-mapping-api module.
* @param language the template's script language. For more information,
* see DDMTemplateConstants in the dynamic-data-mapping-api module.
* @param script the template's script
* @param cacheable whether the template is cacheable
* @param smallImage whether the template has a small image
* @param smallImageURL the template's small image URL (optionally
* <code>null</code>)
* @param smallImageFile the template's small image file (optionally
* <code>null</code>)
* @param serviceContext the service context to be applied. Must have the
* <code>ddmResource</code> attribute to check permissions. Can set
* the UUID, creation date, modification date, guest permissions,
* and group permissions for the template.
* @return the template
*/
@Override
public DDMTemplate addTemplate(
long groupId, long classNameId, long classPK,
long resourceClassNameId, String templateKey,
Map<Locale, String> nameMap, Map<Locale, String> descriptionMap,
String type, String mode, String language, String script,
boolean cacheable, boolean smallImage, String smallImageURL,
File smallImageFile, ServiceContext serviceContext)
throws PortalException {
DDMTemplatePermission.checkAddTemplatePermission(
getPermissionChecker(), groupId, classNameId, resourceClassNameId);
return ddmTemplateLocalService.addTemplate(
getUserId(), groupId, classNameId, classPK, resourceClassNameId,
templateKey, nameMap, descriptionMap, type, mode, language, script,
cacheable, smallImage, smallImageURL, smallImageFile,
serviceContext);
}
/**
* Copies the template, creating a new template with all the values
* extracted from the original one. This method supports defining a new name
* and description.
*
* @param templateId the primary key of the template to be copied
* @param nameMap the new template's locales and localized names
* @param descriptionMap the new template's locales and localized
* descriptions
* @param serviceContext the service context to be applied. Must have the
* <code>ddmResource</code> attribute to check permissions. Can set
* the UUID, creation date, modification date, guest permissions,
* and group permissions for the template.
* @return the new template
*/
@Override
public DDMTemplate copyTemplate(
long templateId, Map<Locale, String> nameMap,
Map<Locale, String> descriptionMap, ServiceContext serviceContext)
throws PortalException {
DDMTemplate template = ddmTemplatePersistence.findByPrimaryKey(
templateId);
DDMTemplatePermission.checkAddTemplatePermission(
getPermissionChecker(), serviceContext.getScopeGroupId(),
template.getClassNameId(), template.getResourceClassName());
return ddmTemplateLocalService.copyTemplate(
getUserId(), templateId, nameMap, descriptionMap, serviceContext);
}
@Override
public DDMTemplate copyTemplate(
long templateId, ServiceContext serviceContext)
throws PortalException {
DDMTemplate template = ddmTemplatePersistence.findByPrimaryKey(
templateId);
DDMTemplatePermission.checkAddTemplatePermission(
getPermissionChecker(), serviceContext.getScopeGroupId(),
template.getClassNameId(), template.getResourceClassName());
return ddmTemplateLocalService.copyTemplate(
getUserId(), templateId, serviceContext);
}
/**
* Copies all the templates matching the class name ID, class PK, and type.
* This method creates new templates, extracting all the values from the old
* ones and updating their class PKs.
*
* @param classNameId the primary key of the class name for template's
* related model
* @param oldClassPK the primary key of the old template's related entity
* @param resourceClassNameId the primary key of the class name for
* template's resource model
* @param newClassPK the primary key of the new template's related entity
* @param type the template's type. For more information, see
* DDMTemplateConstants in the dynamic-data-mapping-api module.
* @param serviceContext the service context to be applied. Must have the
* <code>ddmResource</code> attribute to check permissions. Can set
* the UUID, creation date, modification date, guest permissions,
* and group permissions for the template.
* @return the new template
*/
@Override
public List<DDMTemplate> copyTemplates(
long classNameId, long oldClassPK, long resourceClassNameId,
long newClassPK, String type, ServiceContext serviceContext)
throws PortalException {
DDMTemplatePermission.checkAddTemplatePermission(
getPermissionChecker(), serviceContext.getScopeGroupId(),
classNameId, resourceClassNameId);
return ddmTemplateLocalService.copyTemplates(
getUserId(), classNameId, oldClassPK, newClassPK, type,
serviceContext);
}
/**
* Deletes the template and its resources.
*
* @param templateId the primary key of the template to be deleted
*/
@Override
public void deleteTemplate(long templateId) throws PortalException {
DDMTemplatePermission.check(
getPermissionChecker(), templateId, ActionKeys.DELETE);
ddmTemplateLocalService.deleteTemplate(templateId);
}
/**
* Returns the template matching the group and template key.
*
* @param groupId the primary key of the group
* @param classNameId the primary key of the class name for template's
* related model
* @param templateKey the unique string identifying the template
* @return the matching template, or <code>null</code> if a matching
* template could not be found
*/
@Override
public DDMTemplate fetchTemplate(
long groupId, long classNameId, String templateKey)
throws PortalException {
DDMTemplate ddmTemplate = ddmTemplateLocalService.fetchTemplate(
groupId, classNameId, templateKey);
if (ddmTemplate != null) {
DDMTemplatePermission.check(
getPermissionChecker(), ddmTemplate, ActionKeys.VIEW);
}
return ddmTemplate;
}
/**
* Returns the template with the ID.
*
* @param templateId the primary key of the template
* @return the template with the ID
*/
@Override
public DDMTemplate getTemplate(long templateId) throws PortalException {
DDMTemplatePermission.check(
getPermissionChecker(), templateId, ActionKeys.VIEW);
return ddmTemplatePersistence.findByPrimaryKey(templateId);
}
/**
* Returns the template matching the group and template key.
*
* @param groupId the primary key of the group
* @param classNameId the primary key of the class name for template's
* related model
* @param templateKey the unique string identifying the template
* @return the matching template
*/
@Override
public DDMTemplate getTemplate(
long groupId, long classNameId, String templateKey)
throws PortalException {
DDMTemplate ddmTemplate = ddmTemplateLocalService.getTemplate(
groupId, classNameId, templateKey);
DDMTemplatePermission.check(
getPermissionChecker(), ddmTemplate, ActionKeys.VIEW);
return ddmTemplate;
}
/**
* Returns the template matching the group and template key, optionally
* searching ancestor sites (that have sharing enabled) and global scoped
* sites.
*
* <p>
* This method first searches in the group. If the template is still not
* found and <code>includeAncestorTemplates</code> is set to
* <code>true</code>, this method searches the group's ancestor sites (that
* have sharing enabled) and lastly searches global scoped sites.
* </p>
*
* @param groupId the primary key of the group
* @param classNameId the primary key of the class name for template's
* related model
* @param templateKey the unique string identifying the template
* @param includeAncestorTemplates whether to include ancestor sites (that
* have sharing enabled) and include global scoped sites in the
* search
* @return the matching template
*/
@Override
public DDMTemplate getTemplate(
long groupId, long classNameId, String templateKey,
boolean includeAncestorTemplates)
throws PortalException {
DDMTemplate ddmTemplate = ddmTemplateLocalService.getTemplate(
groupId, classNameId, templateKey, includeAncestorTemplates);
DDMTemplatePermission.check(
getPermissionChecker(), ddmTemplate, ActionKeys.VIEW);
return ddmTemplate;
}
@Override
public List<DDMTemplate> getTemplates(
long companyId, long groupId, long classNameId,
long resourceClassNameId, int status) {
return getTemplates(
companyId, new long[] {groupId}, classNameId, 0,
resourceClassNameId, null, null, status);
}
@Override
public List<DDMTemplate> getTemplates(
long companyId, long groupId, long classNameId, long classPK,
long resourceClassNameId, boolean includeAncestorTemplates,
int status)
throws PortalException {
List<DDMTemplate> ddmTemplates = new ArrayList<>();
ddmTemplates.addAll(
getTemplates(
companyId, new long[] {groupId}, classNameId, classPK,
resourceClassNameId, null, null, status));
if (!includeAncestorTemplates) {
return ddmTemplates;
}
ddmTemplates.addAll(
getTemplates(
companyId, PortalUtil.getAncestorSiteGroupIds(groupId),
classNameId, classPK, resourceClassNameId, null, null, status));
return ddmTemplates;
}
@Override
public List<DDMTemplate> getTemplates(
long companyId, long groupId, long classNameId, long classPK,
long resourceClassNameId, int status) {
return getTemplates(
companyId, new long[] {groupId}, classNameId, classPK,
resourceClassNameId, null, null, status);
}
/**
* Returns all the templates matching the group, class name ID, class PK,
* resource class name ID, and type.
*
* @param companyId the primary key of the template's company
* @param groupId the primary key of the group
* @param classNameId the primary key of the class name for the template's
* related model
* @param classPK the primary key of the template's related entity
* @param resourceClassNameId the primary key of the class name for the
* template's resource model
* @param type the template's type. For more information, see
* DDMTemplateConstants in the dynamic-data-mapping-api module.
* @return the matching templates
*/
@Override
public List<DDMTemplate> getTemplates(
long companyId, long groupId, long classNameId, long classPK,
long resourceClassNameId, String type, int status) {
return getTemplates(
companyId, new long[] {groupId}, classNameId, classPK,
resourceClassNameId, type, null, status);
}
@Override
public List<DDMTemplate> getTemplates(
long companyId, long groupId, long classNameId, long classPK,
long resourceClassNameId, String type, String mode, int status) {
return getTemplates(
companyId, new long[] {groupId}, classNameId, classPK,
resourceClassNameId, type, mode, status);
}
/**
* Returns all the templates matching the group, class PK, and resource
* class name ID.
*
* @param companyId the primary key of the template's company
* @param groupId the primary key of the group
* @param classPK the primary key of the template's related entity
* @param resourceClassNameId the primary key of the class name for the
* template's resource model
* @return the matching templates
*/
@Override
public List<DDMTemplate> getTemplatesByClassPK(
long companyId, long groupId, long classPK, long resourceClassNameId,
int status) {
return getTemplates(
companyId, new long[] {groupId}, 0, classPK, resourceClassNameId,
null, null, status);
}
/**
* Returns an ordered range of all the templates matching the group and
* structure class name ID and all the generic templates matching the group.
*
* <p>
* Useful when paginating results. Returns a maximum of <code>end -
* start</code> instances. <code>start</code> and <code>end</code> are not
* primary keys, they are indexes in the result set. Thus, <code>0</code>
* refers to the first result in the set. Setting both <code>start</code>
* and <code>end</code> to {@link QueryUtil#ALL_POS} will return the full
* result set.
* </p>
*
* @param groupId the primary key of the group
* @param structureClassNameId the primary key of the class name for the
* template's related structure (optionally <code>0</code>). Specify
* <code>0</code> to return generic templates only.
* @param start the lower bound of the range of templates to return
* @param end the upper bound of the range of templates to return (not
* inclusive)
* @param orderByComparator the comparator to order the templates
* (optionally <code>null</code>)
* @return the range of matching templates ordered by the comparator
*/
@Override
public List<DDMTemplate> getTemplatesByStructureClassNameId(
long groupId, long structureClassNameId, int status, int start, int end,
OrderByComparator<DDMTemplate> orderByComparator) {
return ddmTemplateFinder.filterFindByG_SC_S(
groupId, structureClassNameId, status, start, end,
orderByComparator);
}
/**
* Returns the number of templates matching the group and structure class
* name ID plus the number of generic templates matching the group.
*
* @param groupId the primary key of the group
* @param structureClassNameId the primary key of the class name for the
* template's related structure (optionally <code>0</code>). Specify
* <code>0</code> to count generic templates only.
* @return the number of matching templates plus the number of matching
* generic templates
*/
@Override
public int getTemplatesByStructureClassNameIdCount(
long groupId, long structureClassNameId, int status) {
return ddmTemplateFinder.filterCountByG_SC_S(
groupId, structureClassNameId, status);
}
@Override
public void revertTemplate(
long templateId, String version, ServiceContext serviceContext)
throws PortalException {
DDMTemplatePermission.check(
getPermissionChecker(), templateId, ActionKeys.UPDATE);
ddmTemplateLocalService.revertTemplate(
getUserId(), templateId, version, serviceContext);
}
/**
* Returns an ordered range of all the templates matching the group, class
* name ID, class PK, type, and mode, and matching the keywords in the
* template names and descriptions.
*
* <p>
* Useful when paginating results. Returns a maximum of <code>end -
* start</code> instances. <code>start</code> and <code>end</code> are not
* primary keys, they are indexes in the result set. Thus, <code>0</code>
* refers to the first result in the set. Setting both <code>start</code>
* and <code>end</code> to {@link QueryUtil#ALL_POS} will return the full
* result set.
* </p>
*
* @param companyId the primary key of the template's company
* @param groupId the primary key of the group
* @param classNameId the primary key of the class name for template's
* related model
* @param classPK the primary key of the template's related entity
* @param resourceClassNameId the primary key of the class name for
* template's resource model
* @param keywords the keywords (space separated), which may occur in the
* template's name or description (optionally <code>null</code>)
* @param type the template's type (optionally <code>null</code>). For more
* information, see DDMTemplateConstants in the
* dynamic-data-mapping-api module.
* @param mode the template's mode (optionally <code>null</code>). For more
* information, see DDMTemplateConstants in the
* dynamic-data-mapping-api module.
* @param start the lower bound of the range of templates to return
* @param end the upper bound of the range of templates to return (not
* inclusive)
* @param orderByComparator the comparator to order the templates
* (optionally <code>null</code>)
* @return the matching templates ordered by the comparator
*/
@Override
public List<DDMTemplate> search(
long companyId, long groupId, long classNameId, long classPK,
long resourceClassNameId, String keywords, String type, String mode,
int status, int start, int end,
OrderByComparator<DDMTemplate> orderByComparator) {
return ddmTemplateFinder.filterFindByKeywords(
companyId, groupId, classNameId, classPK, resourceClassNameId,
keywords, type, mode, status, start, end, orderByComparator);
}
/**
* Returns an ordered range of all the templates matching the group, class
* name ID, class PK, name keyword, description keyword, type, mode, and
* language.
*
* <p>
* Useful when paginating results. Returns a maximum of <code>end -
* start</code> instances. <code>start</code> and <code>end</code> are not
* primary keys, they are indexes in the result set. Thus, <code>0</code>
* refers to the first result in the set. Setting both <code>start</code>
* and <code>end</code> to {@link QueryUtil#ALL_POS} will return the full
* result set.
* </p>
*
* @param companyId the primary key of the template's company
* @param groupId the primary key of the group
* @param classNameId the primary key of the class name for template's
* related model
* @param classPK the primary key of the template's related entity
* @param resourceClassNameId the primary key of the class name for
* template's resource model
* @param name the name keywords (optionally <code>null</code>)
* @param description the description keywords (optionally
* <code>null</code>)
* @param type the template's type (optionally <code>null</code>). For more
* information, see DDMTemplateConstants in the
* dynamic-data-mapping-api module.
* @param mode the template's mode (optionally <code>null</code>). For more
* information, see DDMTemplateConstants in the
* dynamic-data-mapping-api module.
* @param language the template's script language (optionally
* <code>null</code>). For more information, see
* DDMTemplateConstants in the dynamic-data-mapping-api module.
* @param andOperator whether every field must match its keywords, or just
* one field.
* @param start the lower bound of the range of templates to return
* @param end the upper bound of the range of templates to return (not
* inclusive)
* @param orderByComparator the comparator to order the templates
* (optionally <code>null</code>)
* @return the matching templates ordered by the comparator
*/
@Override
public List<DDMTemplate> search(
long companyId, long groupId, long classNameId, long classPK,
long resourceClassNameId, String name, String description, String type,
String mode, String language, int status, boolean andOperator,
int start, int end, OrderByComparator<DDMTemplate> orderByComparator) {
return ddmTemplateFinder.filterFindByC_G_C_C_R_N_D_T_M_L_S(
companyId, groupId, classNameId, classPK, resourceClassNameId, name,
description, type, mode, language, status, andOperator, start, end,
orderByComparator);
}
/**
* Returns an ordered range of all the templates matching the group IDs,
* class name IDs, class PK, type, and mode, and matching the keywords in
* the template names and descriptions.
*
* <p>
* Useful when paginating results. Returns a maximum of <code>end -
* start</code> instances. <code>start</code> and <code>end</code> are not
* primary keys, they are indexes in the result set. Thus, <code>0</code>
* refers to the first result in the set. Setting both <code>start</code>
* and <code>end</code> to {@link QueryUtil#ALL_POS} will return the full
* result set.
* </p>
*
* @param companyId the primary key of the template's company
* @param groupIds the primary keys of the groups
* @param classNameIds the primary keys of the entity's instances the
* templates are related to
* @param classPKs the primary keys of the template's related entities
* @param resourceClassNameId the primary key of the class name for
* template's resource model
* @param keywords the keywords (space separated), which may occur in the
* template's name or description (optionally <code>null</code>)
* @param type the template's type (optionally <code>null</code>). For more
* information, see DDMTemplateConstants in the
* dynamic-data-mapping-api module.
* @param mode the template's mode (optionally <code>null</code>). For more
* information, see DDMTemplateConstants in the
* dynamic-data-mapping-api module.
* @param start the lower bound of the range of templates to return
* @param end the upper bound of the range of templates to return (not
* inclusive)
* @param orderByComparator the comparator to order the templates
* (optionally <code>null</code>)
* @return the matching templates ordered by the comparator
*/
@Override
public List<DDMTemplate> search(
long companyId, long[] groupIds, long[] classNameIds, long[] classPKs,
long resourceClassNameId, String keywords, String type, String mode,
int status, int start, int end,
OrderByComparator<DDMTemplate> orderByComparator) {
return ddmTemplateFinder.filterFindByKeywords(
companyId, groupIds, classNameIds, classPKs, resourceClassNameId,
keywords, type, mode, status, start, end, orderByComparator);
}
/**
* Returns an ordered range of all the templates matching the group IDs,
* class name IDs, class PK, name keyword, description keyword, type, mode,
* and language.
*
* <p>
* Useful when paginating results. Returns a maximum of <code>end -
* start</code> instances. <code>start</code> and <code>end</code> are not
* primary keys, they are indexes in the result set. Thus, <code>0</code>
* refers to the first result in the set. Setting both <code>start</code>
* and <code>end</code> to {@link QueryUtil#ALL_POS} will return the full
* result set.
* </p>
*
* @param companyId the primary key of the template's company
* @param groupIds the primary keys of the groups
* @param classNameIds the primary keys of the entity's instances the
* templates are related to
* @param classPKs the primary keys of the template's related entities
* @param resourceClassNameId the primary key of the class name for
* template's resource model
* @param name the name keywords (optionally <code>null</code>)
* @param description the description keywords (optionally
* <code>null</code>)
* @param type the template's type (optionally <code>null</code>). For more
* information, see DDMTemplateConstants in the
* dynamic-data-mapping-api module.
* @param mode the template's mode (optionally <code>null</code>). For more
* information, see DDMTemplateConstants in the
* dynamic-data-mapping-api module.
* @param language the template's script language (optionally
* <code>null</code>). For more information, see
* DDMTemplateConstants in the dynamic-data-mapping-api module.
* @param andOperator whether every field must match its keywords, or just
* one field.
* @param start the lower bound of the range of templates to return
* @param end the upper bound of the range of templates to return (not
* inclusive)
* @param orderByComparator the comparator to order the templates
* (optionally <code>null</code>)
* @return the matching templates ordered by the comparator
*/
@Override
public List<DDMTemplate> search(
long companyId, long[] groupIds, long[] classNameIds, long[] classPKs,
long resourceClassNameId, String name, String description, String type,
String mode, String language, int status, boolean andOperator,
int start, int end, OrderByComparator<DDMTemplate> orderByComparator) {
return ddmTemplateFinder.filterFindByC_G_C_C_R_N_D_T_M_L_S(
companyId, groupIds, classNameIds, classPKs, resourceClassNameId,
name, description, type, mode, language, status, andOperator, start,
end, orderByComparator);
}
/**
* Returns the number of templates matching the group, class name ID, class
* PK, type, and mode, and matching the keywords in the template names and
* descriptions.
*
* @param companyId the primary key of the template's company
* @param groupId the primary key of the group
* @param classNameId the primary key of the class name for template's
* related model
* @param classPK the primary key of the template's related entity
* @param resourceClassNameId the primary key of the class name for
* template's resource model
* @param keywords the keywords (space separated), which may occur in the
* template's name or description (optionally <code>null</code>)
* @param type the template's type (optionally <code>null</code>). For more
* information, see DDMTemplateConstants in the
* dynamic-data-mapping-api module.
* @param mode the template's mode (optionally <code>null</code>). For more
* information, see DDMTemplateConstants in the
* dynamic-data-mapping-api module.
* @return the number of matching templates
*/
@Override
public int searchCount(
long companyId, long groupId, long classNameId, long classPK,
long resourceClassNameId, String keywords, String type, String mode,
int status) {
return ddmTemplateFinder.filterCountByKeywords(
companyId, groupId, classNameId, classPK, resourceClassNameId,
keywords, type, mode, status);
}
/**
* Returns the number of templates matching the group, class name ID, class
* PK, name keyword, description keyword, type, mode, and language.
*
* @param companyId the primary key of the template's company
* @param groupId the primary key of the group
* @param classNameId the primary key of the class name for template's
* related model
* @param classPK the primary key of the template's related entity
* @param resourceClassNameId the primary key of the class name for
* template's resource model
* @param name the name keywords (optionally <code>null</code>)
* @param description the description keywords (optionally
* <code>null</code>)
* @param type the template's type (optionally <code>null</code>). For more
* information, see DDMTemplateConstants in the
* dynamic-data-mapping-api module.
* @param mode the template's mode (optionally <code>null</code>). For more
* information, see DDMTemplateConstants in the
* dynamic-data-mapping-api module.
* @param language the template's script language (optionally
* <code>null</code>). For more information, see
* DDMTemplateConstants in the dynamic-data-mapping-api module.
* @param andOperator whether every field must match its keywords, or just
* one field.
* @return the number of matching templates
*/
@Override
public int searchCount(
long companyId, long groupId, long classNameId, long classPK,
long resourceClassNameId, String name, String description, String type,
String mode, String language, int status, boolean andOperator) {
return ddmTemplateFinder.filterCountByC_G_C_C_R_N_D_T_M_L_S(
companyId, groupId, classNameId, classPK, resourceClassNameId, name,
description, type, mode, language, status, andOperator);
}
/**
* Returns the number of templates matching the group IDs, class name IDs,
* class PK, type, and mode, and matching the keywords in the template names
* and descriptions.
*
* @param companyId the primary key of the template's company
* @param groupIds the primary keys of the groups
* @param classNameIds the primary keys of the entity's instances the
* templates are related to
* @param classPKs the primary keys of the template's related entities
* @param resourceClassNameId the primary key of the class name for
* template's resource model
* @param keywords the keywords (space separated), which may occur in the
* template's name or description (optionally <code>null</code>)
* @param type the template's type (optionally <code>null</code>). For more
* information, see DDMTemplateConstants in the
* dynamic-data-mapping-api module.
* @param mode the template's mode (optionally <code>null</code>). For more
* information, see DDMTemplateConstants in the
* dynamic-data-mapping-api module.
* @return the number of matching templates
*/
@Override
public int searchCount(
long companyId, long[] groupIds, long[] classNameIds, long[] classPKs,
long resourceClassNameId, String keywords, String type, String mode,
int status) {
return ddmTemplateFinder.filterCountByKeywords(
companyId, groupIds, classNameIds, classPKs, resourceClassNameId,
keywords, type, mode, status);
}
/**
* Returns the number of templates matching the group IDs, class name IDs,
* class PK, name keyword, description keyword, type, mode, and language.
*
* @param companyId the primary key of the template's company
* @param groupIds the primary keys of the groups
* @param classNameIds the primary keys of the entity's instances the
* templates are related to
* @param classPKs the primary keys of the template's related entities
* @param resourceClassNameId the primary key of the class name for
* template's resource model
* @param name the name keywords (optionally <code>null</code>)
* @param description the description keywords (optionally
* <code>null</code>)
* @param type the template's type (optionally <code>null</code>). For more
* information, see DDMTemplateConstants in the
* dynamic-data-mapping-api module.
* @param mode the template's mode (optionally <code>null</code>). For more
* information, see DDMTemplateConstants in the
* dynamic-data-mapping-api module.
* @param language the template's script language (optionally
* <code>null</code>). For more information, see
* DDMTemplateConstants in the dynamic-data-mapping-api module.
* @param andOperator whether every field must match its keywords, or just
* one field.
* @return the number of matching templates
*/
@Override
public int searchCount(
long companyId, long[] groupIds, long[] classNameIds, long[] classPKs,
long resourceClassNameId, String name, String description, String type,
String mode, String language, int status, boolean andOperator) {
return ddmTemplateFinder.filterCountByC_G_C_C_R_N_D_T_M_L_S(
companyId, groupIds, classNameIds, classPKs, resourceClassNameId,
name, description, type, mode, language, status, andOperator);
}
/**
* Updates the template matching the ID.
*
* @param templateId the primary key of the template
* @param classPK the primary key of the template's related entity
* @param nameMap the template's new locales and localized names
* @param descriptionMap the template's new locales and localized
* description
* @param type the template's type. For more information, see
* DDMTemplateConstants in the dynamic-data-mapping-api module.
* @param mode the template's mode. For more information, see
* DDMTemplateConstants in the dynamic-data-mapping-api module.
* @param language the template's script language. For more information,
* see DDMTemplateConstants in the dynamic-data-mapping-api module.
* @param script the template's script
* @param cacheable whether the template is cacheable
* @param smallImage whether the template has a small image
* @param smallImageURL the template's small image URL (optionally
* <code>null</code>)
* @param smallImageFile the template's small image file (optionally
* <code>null</code>)
* @param serviceContext the service context to be applied. Can set the
* modification date.
* @return the updated template
*/
@Override
public DDMTemplate updateTemplate(
long templateId, long classPK, Map<Locale, String> nameMap,
Map<Locale, String> descriptionMap, String type, String mode,
String language, String script, boolean cacheable,
boolean smallImage, String smallImageURL, File smallImageFile,
ServiceContext serviceContext)
throws PortalException {
DDMTemplatePermission.check(
getPermissionChecker(), templateId, ActionKeys.UPDATE);
return ddmTemplateLocalService.updateTemplate(
getUserId(), templateId, classPK, nameMap, descriptionMap, type,
mode, language, script, cacheable, smallImage, smallImageURL,
smallImageFile, serviceContext);
}
/**
* Updates the template matching the ID.
*
* @param templateId the primary key of the template
* @param classPK the primary key of the template's related entity
* @param nameMap the template's new locales and localized names
* @param descriptionMap the template's new locales and localized
* description
* @param type the template's type. For more information, see
* DDMTemplateConstants in the dynamic-data-mapping-api module.
* @param mode the template's mode. For more information, see
* DDMTemplateConstants in the dynamic-data-mapping-api module.
* @param language the template's script language. For more information,
* see DDMTemplateConstants in the dynamic-data-mapping-api module.
* @param script the template's script
* @param cacheable whether the template is cacheable
* @param serviceContext the service context to be applied. Can set the
* modification date.
* @return the updated template
*/
@Override
public DDMTemplate updateTemplate(
long templateId, long classPK, Map<Locale, String> nameMap,
Map<Locale, String> descriptionMap, String type, String mode,
String language, String script, boolean cacheable,
ServiceContext serviceContext)
throws PortalException {
DDMTemplatePermission.check(
getPermissionChecker(), templateId, ActionKeys.UPDATE);
return ddmTemplateLocalService.updateTemplate(
getUserId(), templateId, classPK, nameMap, descriptionMap, type,
mode, language, script, cacheable, serviceContext);
}
protected List<DDMTemplate> getTemplates(
long companyId, long[] groupIds, long classNameId, long classPK,
long resourceClassNameId, String type, String mode, int status) {
return ddmTemplateFinder.filterFindByC_G_C_C_R_T_M_S(
companyId, groupIds, classNameId, classPK, resourceClassNameId,
type, mode, status, QueryUtil.ALL_POS, QueryUtil.ALL_POS, null);
}
}