/** * 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.portal.kernel.test.util; import com.liferay.exportimport.kernel.configuration.ExportImportConfigurationParameterMapFactory; import com.liferay.exportimport.kernel.lar.PortletDataHandlerKeys; import com.liferay.exportimport.kernel.service.StagingLocalServiceUtil; import com.liferay.portal.kernel.cache.thread.local.Lifecycle; import com.liferay.portal.kernel.cache.thread.local.ThreadLocalCacheManager; import com.liferay.portal.kernel.model.Group; import com.liferay.portal.kernel.model.GroupConstants; import com.liferay.portal.kernel.model.Layout; import com.liferay.portal.kernel.service.GroupLocalServiceUtil; import com.liferay.portal.kernel.service.GroupServiceUtil; import com.liferay.portal.kernel.service.ServiceContext; import com.liferay.portal.kernel.test.randomizerbumpers.NumericStringRandomizerBumper; import com.liferay.portal.kernel.test.randomizerbumpers.UniqueStringRandomizerBumper; 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 java.io.Serializable; import java.util.Collection; import java.util.HashMap; import java.util.Locale; import java.util.Map; /** * @author Manuel de la Peña */ public class GroupTestUtil { public static Group addGroup() throws Exception { return addGroup(GroupConstants.DEFAULT_PARENT_GROUP_ID); } public static Group addGroup(long parentGroupId) throws Exception { return addGroup( TestPropsValues.getCompanyId(), TestPropsValues.getUserId(), parentGroupId); } 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; } Map<Locale, String> nameMap = new HashMap<>(); nameMap.put(LocaleUtil.getDefault(), String.valueOf(layout.getPlid())); return GroupLocalServiceUtil.addGroup( userId, parentGroupId, Layout.class.getName(), layout.getPlid(), GroupConstants.DEFAULT_LIVE_GROUP_ID, nameMap, null, 0, true, GroupConstants.DEFAULT_MEMBERSHIP_RESTRICTION, null, false, true, null); } public static Group addGroup( long companyId, long userId, long parentGroupId) throws Exception { String name = RandomTestUtil.randomString( NumericStringRandomizerBumper.INSTANCE, UniqueStringRandomizerBumper.INSTANCE); Group group = GroupLocalServiceUtil.fetchGroup(companyId, name); if (group != null) { return group; } Map<Locale, String> nameMap = new HashMap<>(); nameMap.put(LocaleUtil.getDefault(), name); Map<Locale, String> descriptionMap = new HashMap<>(); descriptionMap.put( LocaleUtil.getDefault(), RandomTestUtil.randomString()); 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, nameMap, descriptionMap, type, manualMembership, membershipRestriction, friendlyURL, site, active, ServiceContextTestUtil.getServiceContext()); } public static Group addGroup( long parentGroupId, ServiceContext serviceContext) throws Exception { String name = RandomTestUtil.randomString( NumericStringRandomizerBumper.INSTANCE, UniqueStringRandomizerBumper.INSTANCE); Group group = GroupLocalServiceUtil.fetchGroup( TestPropsValues.getCompanyId(), name); if (group != null) { return group; } Map<Locale, String> nameMap = new HashMap<>(); nameMap.put(LocaleUtil.getDefault(), name); Map<Locale, String> descriptionMap = new HashMap<>(); descriptionMap.put( LocaleUtil.getDefault(), RandomTestUtil.randomString()); 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 = ServiceContextTestUtil.getServiceContext(); } return GroupServiceUtil.addGroup( parentGroupId, GroupConstants.DEFAULT_LIVE_GROUP_ID, nameMap, descriptionMap, type, manualMembership, membershipRestriction, friendlyURL, site, active, serviceContext); } public static void enableLocalStaging(Group group) throws Exception { enableLocalStaging(group, TestPropsValues.getUserId()); } public static void enableLocalStaging(Group group, long userId) throws Exception { ServiceContext serviceContext = ServiceContextTestUtil.getServiceContext(); serviceContext.setAddGroupPermissions(true); serviceContext.setAddGuestPermissions(true); serviceContext.setScopeGroupId(group.getGroupId()); Map<String, Serializable> attributes = serviceContext.getAttributes(); attributes.putAll( ExportImportConfigurationParameterMapFactory.buildParameterMap()); attributes.put( PortletDataHandlerKeys.PORTLET_CONFIGURATION_ALL, new String[] {Boolean.FALSE.toString()}); attributes.put( PortletDataHandlerKeys.PORTLET_DATA_ALL, new String[] {Boolean.FALSE.toString()}); StagingLocalServiceUtil.enableLocalStaging( userId, group, false, false, serviceContext); } public static Group updateDisplaySettings( long groupId, Collection<Locale> availableLocales, Locale defaultLocale) throws Exception { UnicodeProperties typeSettingsProperties = new UnicodeProperties(); boolean inheritLocales = false; if ((availableLocales == null) && (defaultLocale == null)) { inheritLocales = true; } typeSettingsProperties.put( GroupConstants.TYPE_SETTINGS_KEY_INHERIT_LOCALES, 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; } }