com.liferay.content.targeting.service.test.util.GroupTestUtil.java Source code

Java tutorial

Introduction

Here is the source code for com.liferay.content.targeting.service.test.util.GroupTestUtil.java

Source

/**
 * 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.content.targeting.service.test.util;

import com.liferay.content.targeting.service.test.service.ServiceTestUtil;
import com.liferay.portal.kernel.cache.Lifecycle;
import com.liferay.portal.kernel.cache.ThreadLocalCacheManager;
import com.liferay.portal.kernel.lar.PortletDataHandlerKeys;
import com.liferay.portal.kernel.staging.StagingUtil;
import com.liferay.portal.kernel.util.FriendlyURLNormalizerUtil;
import com.liferay.portal.kernel.util.LocaleUtil;
import com.liferay.portal.kernel.util.PropsKeys;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.StringUtil;
import com.liferay.portal.kernel.util.UnicodeProperties;
import com.liferay.portal.model.Group;
import com.liferay.portal.model.GroupConstants;
import com.liferay.portal.model.Layout;
import com.liferay.portal.service.GroupLocalServiceUtil;
import com.liferay.portal.service.GroupServiceUtil;
import com.liferay.portal.service.ServiceContext;
import com.liferay.portal.service.StagingLocalServiceUtil;

import java.util.Locale;
import java.util.Map;

/**
 * @author Manuel de la Pea
 */
public class GroupTestUtil {

    public static Group addGroup() throws Exception {
        return addGroup(ServiceTestUtil.randomString());
    }

    public static Group addGroup(long userId, Layout layout) throws Exception {
        return addGroup(userId, GroupConstants.DEFAULT_PARENT_GROUP_ID, layout);
    }

    public static Group addGroup(long userId, long parentGroupId, Layout layout) throws Exception {

        Group scopeGroup = layout.getScopeGroup();

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

        return GroupLocalServiceUtil.addGroup(userId, parentGroupId, Layout.class.getName(), layout.getPlid(),
                GroupConstants.DEFAULT_LIVE_GROUP_ID, String.valueOf(layout.getPlid()), null, 0, true,
                GroupConstants.DEFAULT_MEMBERSHIP_RESTRICTION, null, false, true, null);
    }

    public static Group addGroup(long companyId, long userId, long parentGroupId, String name, String description)
            throws Exception {

        Group group = GroupLocalServiceUtil.fetchGroup(companyId, name);

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

        int type = GroupConstants.TYPE_SITE_OPEN;
        String friendlyURL = StringPool.SLASH + FriendlyURLNormalizerUtil.normalize(name);
        boolean site = true;
        boolean active = true;
        boolean manualMembership = true;
        int membershipRestriction = GroupConstants.DEFAULT_MEMBERSHIP_RESTRICTION;

        return GroupLocalServiceUtil.addGroup(userId, parentGroupId, null, 0, GroupConstants.DEFAULT_LIVE_GROUP_ID,
                name, description, type, manualMembership, membershipRestriction, friendlyURL, site, active,
                ServiceTestUtil.getServiceContext());
    }

    public static Group addGroup(long parentGroupId, String name) throws Exception {

        return addGroup(parentGroupId, name, "This is a test group.");
    }

    public static Group addGroup(long parentGroupId, String name, String description) throws Exception {

        return addGroup(TestPropsValues.getCompanyId(), TestPropsValues.getUserId(), parentGroupId, name,
                description);
    }

    public static Group addGroup(String name) throws Exception {
        return addGroup(GroupConstants.DEFAULT_PARENT_GROUP_ID, name);
    }

    public static Group addGroup(String name, long parentGroupId, ServiceContext serviceContext) throws Exception {

        Group group = GroupLocalServiceUtil.fetchGroup(TestPropsValues.getCompanyId(), name);

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

        String description = "This is a test group.";
        int type = GroupConstants.TYPE_SITE_OPEN;
        String friendlyURL = StringPool.SLASH + FriendlyURLNormalizerUtil.normalize(name);
        boolean site = true;
        boolean active = true;
        boolean manualMembership = true;
        int membershipRestriction = GroupConstants.DEFAULT_MEMBERSHIP_RESTRICTION;

        if (serviceContext == null) {
            serviceContext = ServiceTestUtil.getServiceContext();
        }

        return GroupServiceUtil.addGroup(parentGroupId, GroupConstants.DEFAULT_LIVE_GROUP_ID, name, description,
                type, manualMembership, membershipRestriction, friendlyURL, site, active, serviceContext);
    }

    public static void enableLocalStaging(Group group) throws Exception {
        ServiceContext serviceContext = ServiceTestUtil.getServiceContext();

        serviceContext.setAddGroupPermissions(true);
        serviceContext.setAddGuestPermissions(true);
        serviceContext.setScopeGroupId(group.getGroupId());

        Map<String, String[]> parameters = StagingUtil.getStagingParameters();

        parameters.put(PortletDataHandlerKeys.PORTLET_CONFIGURATION_ALL, new String[] { Boolean.FALSE.toString() });
        parameters.put(PortletDataHandlerKeys.PORTLET_DATA_ALL, new String[] { Boolean.FALSE.toString() });

        for (String parameterName : parameters.keySet()) {
            serviceContext.setAttribute(parameterName, parameters.get(parameterName)[0]);
        }

        StagingLocalServiceUtil.enableLocalStaging(TestPropsValues.getUserId(), group, false, false,
                serviceContext);
    }

    public static Group updateDisplaySettings(long groupId, Locale[] availableLocales, Locale defaultLocale)
            throws Exception {

        UnicodeProperties typeSettingsProperties = new UnicodeProperties();

        boolean inheritLocales = false;

        if ((availableLocales == null) && (defaultLocale == null)) {
            inheritLocales = true;
        }

        typeSettingsProperties.put("inheritLocales", String.valueOf(inheritLocales));

        if (availableLocales != null) {
            typeSettingsProperties.put(PropsKeys.LOCALES,
                    StringUtil.merge(LocaleUtil.toLanguageIds(availableLocales)));
        }

        if (defaultLocale != null) {
            typeSettingsProperties.put("languageId", LocaleUtil.toLanguageId(defaultLocale));
        }

        Group group = GroupLocalServiceUtil.updateGroup(groupId, typeSettingsProperties.toString());

        ThreadLocalCacheManager.clearAll(Lifecycle.REQUEST);

        return group;
    }

}