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

com.liferay.mobile.device.rules.service.impl.MDRRuleGroupLocalServiceImpl Maven / Gradle / Ivy

There is a newer version: 5.0.13
Show newest version
/**
 * 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.mobile.device.rules.service.impl;

import aQute.bnd.annotation.ProviderType;

import com.liferay.mobile.device.rules.model.MDRRule;
import com.liferay.mobile.device.rules.model.MDRRuleGroup;
import com.liferay.mobile.device.rules.service.base.MDRRuleGroupLocalServiceBaseImpl;
import com.liferay.mobile.device.rules.util.comparator.RuleGroupCreateDateComparator;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.language.LanguageUtil;
import com.liferay.portal.kernel.model.Group;
import com.liferay.portal.kernel.model.SystemEventConstants;
import com.liferay.portal.kernel.model.User;
import com.liferay.portal.kernel.service.ServiceContext;
import com.liferay.portal.kernel.systemevent.SystemEvent;
import com.liferay.portal.kernel.util.OrderByComparator;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.portal.kernel.uuid.PortalUUIDUtil;
import com.liferay.portal.util.PropsValues;

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

/**
 * @author Edward C. Han
 * @author Manuel de la Peña
 */
@ProviderType
public class MDRRuleGroupLocalServiceImpl
	extends MDRRuleGroupLocalServiceBaseImpl {

	@Override
	public MDRRuleGroup addRuleGroup(
			long groupId, Map nameMap,
			Map descriptionMap, ServiceContext serviceContext)
		throws PortalException {

		// Rule group

		User user = userLocalService.getUser(serviceContext.getUserId());

		long ruleGroupId = counterLocalService.increment();

		MDRRuleGroup ruleGroup = createMDRRuleGroup(ruleGroupId);

		ruleGroup.setUuid(serviceContext.getUuid());
		ruleGroup.setGroupId(groupId);
		ruleGroup.setCompanyId(serviceContext.getCompanyId());
		ruleGroup.setUserId(user.getUserId());
		ruleGroup.setUserName(user.getFullName());
		ruleGroup.setNameMap(nameMap);
		ruleGroup.setDescriptionMap(descriptionMap);

		// Resources

		resourceLocalService.addModelResources(ruleGroup, serviceContext);

		return updateMDRRuleGroup(ruleGroup);
	}

	@Override
	public MDRRuleGroup copyRuleGroup(
			long ruleGroupId, long groupId, ServiceContext serviceContext)
		throws PortalException {

		MDRRuleGroup ruleGroup = mdrRuleGroupPersistence.findByPrimaryKey(
			ruleGroupId);

		return copyRuleGroup(ruleGroup, groupId, serviceContext);
	}

	@Override
	public MDRRuleGroup copyRuleGroup(
			MDRRuleGroup ruleGroup, long groupId, ServiceContext serviceContext)
		throws PortalException {

		Group group = groupLocalService.getGroup(groupId);

		Map nameMap = ruleGroup.getNameMap();

		for (Map.Entry entry : nameMap.entrySet()) {
			Locale locale = entry.getKey();
			String name = entry.getValue();

			if (Validator.isNull(name)) {
				continue;
			}

			String postfix = LanguageUtil.get(
				locale,
				PropsValues.MOBILE_DEVICE_RULES_RULE_GROUP_COPY_POSTFIX);

			nameMap.put(locale, name.concat(StringPool.SPACE).concat(postfix));
		}

		MDRRuleGroup newRuleGroup = addRuleGroup(
			group.getGroupId(), nameMap, ruleGroup.getDescriptionMap(),
			serviceContext);

		List rules = mdrRulePersistence.findByRuleGroupId(
			ruleGroup.getRuleGroupId());

		for (MDRRule rule : rules) {
			serviceContext.setUuid(PortalUUIDUtil.generate());

			mdrRuleLocalService.copyRule(
				rule, newRuleGroup.getRuleGroupId(), serviceContext);
		}

		return newRuleGroup;
	}

	@Override
	public void deleteRuleGroup(long ruleGroupId) {
		MDRRuleGroup ruleGroup = mdrRuleGroupPersistence.fetchByPrimaryKey(
			ruleGroupId);

		if (ruleGroup != null) {
			mdrRuleGroupLocalService.deleteRuleGroup(ruleGroup);
		}
	}

	@Override
	@SystemEvent(
		action = SystemEventConstants.ACTION_SKIP,
		type = SystemEventConstants.TYPE_DELETE
	)
	public void deleteRuleGroup(MDRRuleGroup ruleGroup) {

		// Rule group

		mdrRuleGroupPersistence.remove(ruleGroup);

		// Rules

		mdrRuleLocalService.deleteRules(ruleGroup.getRuleGroupId());

		// Rule group instances

		mdrRuleGroupInstanceLocalService.deleteRuleGroupInstances(
			ruleGroup.getRuleGroupId());
	}

	@Override
	public void deleteRuleGroups(long groupId) {
		List ruleGroups = mdrRuleGroupPersistence.findByGroupId(
			groupId);

		for (MDRRuleGroup ruleGroup : ruleGroups) {
			mdrRuleGroupLocalService.deleteRuleGroup(ruleGroup);
		}
	}

	@Override
	public MDRRuleGroup fetchRuleGroup(long ruleGroupId) {
		return mdrRuleGroupPersistence.fetchByPrimaryKey(ruleGroupId);
	}

	@Override
	public MDRRuleGroup getRuleGroup(long ruleGroupId) throws PortalException {
		return mdrRuleGroupPersistence.findByPrimaryKey(ruleGroupId);
	}

	@Override
	public List getRuleGroups(long groupId) {
		return mdrRuleGroupPersistence.findByGroupId(groupId);
	}

	@Override
	public List getRuleGroups(long groupId, int start, int end) {
		return mdrRuleGroupPersistence.findByGroupId(groupId, start, end);
	}

	@Override
	public List getRuleGroups(
		long[] groupIds, int start, int end) {

		return mdrRuleGroupPersistence.findByGroupId(groupIds, start, end);
	}

	@Override
	public int getRuleGroupsCount(long groupId) {
		return mdrRuleGroupPersistence.countByGroupId(groupId);
	}

	@Override
	public int getRuleGroupsCount(long[] groupIds) {
		return mdrRuleGroupPersistence.countByGroupId(groupIds);
	}

	@Override
	public List search(
		long groupId, String name, LinkedHashMap params,
		boolean andOperator, int start, int end) {

		return mdrRuleGroupFinder.findByG_N(
			groupId, name, params, andOperator, start, end);
	}

	@Override
	public List searchByKeywords(
		long groupId, String keywords, LinkedHashMap params,
		boolean andOperator, int start, int end) {

		return searchByKeywords(
			groupId, keywords, params, andOperator, start, end,
			new RuleGroupCreateDateComparator());
	}

	@Override
	public List searchByKeywords(
		long groupId, String keywords, LinkedHashMap params,
		boolean andOperator, int start, int end,
		OrderByComparator obc) {

		return mdrRuleGroupFinder.findByKeywords(
			groupId, keywords, params, start, end, obc);
	}

	@Override
	public int searchByKeywordsCount(
		long groupId, String keywords, LinkedHashMap params,
		boolean andOperator) {

		return mdrRuleGroupFinder.countByKeywords(groupId, keywords, params);
	}

	@Override
	public int searchCount(
		long groupId, String name, LinkedHashMap params,
		boolean andOperator) {

		return mdrRuleGroupFinder.countByG_N(
			groupId, name, params, andOperator);
	}

	@Override
	public MDRRuleGroup updateRuleGroup(
			long ruleGroupId, Map nameMap,
			Map descriptionMap, ServiceContext serviceContext)
		throws PortalException {

		MDRRuleGroup ruleGroup = mdrRuleGroupPersistence.findByPrimaryKey(
			ruleGroupId);

		ruleGroup.setNameMap(nameMap);
		ruleGroup.setDescriptionMap(descriptionMap);

		mdrRuleGroupPersistence.update(ruleGroup);

		return ruleGroup;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy