/** * 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.calendar.util; import com.liferay.calendar.model.CalendarResource; import com.liferay.calendar.service.CalendarResourceLocalServiceUtil; import com.liferay.calendar.service.CalendarResourceServiceUtil; import com.liferay.calendar.util.comparator.CalendarResourceCodeComparator; import com.liferay.calendar.util.comparator.CalendarResourceNameComparator; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.model.Group; import com.liferay.portal.kernel.model.GroupConstants; import com.liferay.portal.kernel.model.Role; import com.liferay.portal.kernel.model.RoleConstants; import com.liferay.portal.kernel.model.User; import com.liferay.portal.kernel.service.GroupLocalServiceUtil; import com.liferay.portal.kernel.service.RoleLocalServiceUtil; import com.liferay.portal.kernel.service.ServiceContext; import com.liferay.portal.kernel.service.ServiceContextFactory; import com.liferay.portal.kernel.service.UserLocalServiceUtil; import com.liferay.portal.kernel.util.LocaleUtil; import com.liferay.portal.kernel.util.OrderByComparator; import com.liferay.portal.kernel.util.PortalUtil; import java.util.HashMap; import java.util.Locale; import java.util.Map; import javax.portlet.PortletRequest; /** * @author Eduardo Lundgren * @author Fabio Pezzutto * @author Marcellus Tavares */ public class CalendarResourceUtil { public static CalendarResource fetchGuestCalendarResource(long companyId) throws PortalException { return CalendarResourceLocalServiceUtil.fetchCalendarResource( PortalUtil.getClassNameId(User.class), UserLocalServiceUtil.getDefaultUserId(companyId)); } public static CalendarResource getCalendarResource( PortletRequest portletRequest, long classNameId, long classPK) throws PortalException { long groupClassNameId = PortalUtil.getClassNameId(Group.class); if (classNameId == groupClassNameId) { return getGroupCalendarResource(portletRequest, classPK); } long userClassNameId = PortalUtil.getClassNameId(User.class); if (classNameId == userClassNameId) { return getUserCalendarResource(portletRequest, classPK); } return CalendarResourceServiceUtil.fetchCalendarResource( classNameId, classPK); } public static CalendarResource getGroupCalendarResource( long groupId, ServiceContext serviceContext) throws PortalException { Group group = GroupLocalServiceUtil.getGroup(groupId); if (group.isUser()) { return null; } CalendarResource calendarResource = CalendarResourceLocalServiceUtil.fetchCalendarResource( PortalUtil.getClassNameId(Group.class), groupId); if (calendarResource != null) { return calendarResource; } else if (group.hasStagingGroup()) { return null; } long userId = group.getCreatorUserId(); User user = UserLocalServiceUtil.fetchUserById(userId); if ((user == null) || user.isDefaultUser()) { Role role = RoleLocalServiceUtil.getRole( group.getCompanyId(), RoleConstants.ADMINISTRATOR); long[] userIds = UserLocalServiceUtil.getRoleUserIds( role.getRoleId()); userId = userIds[0]; } Map<Locale, String> nameMap = new HashMap<>(); nameMap.put(LocaleUtil.getDefault(), group.getDescriptiveName()); Map<Locale, String> descriptionMap = new HashMap<>(); return CalendarResourceLocalServiceUtil.addCalendarResource( userId, groupId, PortalUtil.getClassNameId(Group.class), groupId, null, null, nameMap, descriptionMap, true, serviceContext); } public static CalendarResource getGroupCalendarResource( PortletRequest portletRequest, long groupId) throws PortalException { ServiceContext serviceContext = ServiceContextFactory.getInstance( portletRequest); return getGroupCalendarResource(groupId, serviceContext); } public static OrderByComparator<CalendarResource> getOrderByComparator( String orderByCol, String orderByType) { boolean orderByAsc = false; if (orderByType.equals("asc")) { orderByAsc = true; } OrderByComparator<CalendarResource> orderByComparator = null; if (orderByCol.equals("name")) { orderByComparator = new CalendarResourceNameComparator(orderByAsc); } else { orderByComparator = new CalendarResourceCodeComparator(orderByAsc); } return orderByComparator; } public static CalendarResource getScopeGroupCalendarResource( long groupId, ServiceContext serviceContext) throws PortalException { Group group = GroupLocalServiceUtil.getGroup(groupId); if (group.isUser()) { return getUserCalendarResource(group.getClassPK(), serviceContext); } else { return getGroupCalendarResource(groupId, serviceContext); } } public static CalendarResource getScopeGroupCalendarResource( PortletRequest portletRequest, long groupId) throws PortalException { ServiceContext serviceContext = ServiceContextFactory.getInstance( portletRequest); return getScopeGroupCalendarResource(groupId, serviceContext); } public static CalendarResource getUserCalendarResource( long userId, ServiceContext serviceContext) throws PortalException { long classNameId = PortalUtil.getClassNameId(User.class); CalendarResource calendarResource = CalendarResourceLocalServiceUtil.fetchCalendarResource( classNameId, userId); if (calendarResource != null) { return calendarResource; } User user = UserLocalServiceUtil.getUser(userId); Group userGroup = null; String userName = user.getFullName(); if (user.isDefaultUser()) { userGroup = GroupLocalServiceUtil.getGroup( serviceContext.getCompanyId(), GroupConstants.GUEST); userName = GroupConstants.GUEST; } else { userGroup = GroupLocalServiceUtil.getUserGroup( serviceContext.getCompanyId(), userId); } Map<Locale, String> nameMap = new HashMap<>(); nameMap.put(LocaleUtil.getDefault(), userName); Map<Locale, String> descriptionMap = new HashMap<>(); return CalendarResourceLocalServiceUtil.addCalendarResource( userId, userGroup.getGroupId(), PortalUtil.getClassNameId(User.class), userId, null, null, nameMap, descriptionMap, true, serviceContext); } public static CalendarResource getUserCalendarResource( PortletRequest portletRequest, long userId) throws PortalException { ServiceContext serviceContext = ServiceContextFactory.getInstance( portletRequest); serviceContext.setUserId(userId); return getUserCalendarResource(userId, serviceContext); } }