/* * * Copyright (C) 2007-2015 Licensed to the Comunes Association (CA) under * one or more contributor license agreements (see COPYRIGHT for details). * The CA licenses this file to you under the GNU Affero General Public * License version 3, (the "License"); you may not use this file except in * compliance with the License. This file is part of kune. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ package cc.kune.core.server.rpc; import cc.kune.core.client.errors.IncorrectHashException; import cc.kune.core.client.rpcservices.InvitationService; import cc.kune.core.server.UserSessionManager; import cc.kune.core.server.auth.ActionLevel; import cc.kune.core.server.auth.Authenticated; import cc.kune.core.server.auth.Authorizated; import cc.kune.core.server.content.ContainerManager; import cc.kune.core.server.content.ContentUtils; import cc.kune.core.server.manager.InvitationManager; import cc.kune.core.server.mapper.KuneMapper; import cc.kune.core.server.notifier.Addressee; import cc.kune.core.server.notifier.NotificationType; import cc.kune.core.server.persist.KuneTransactional; import cc.kune.core.shared.domain.AccessRol; import cc.kune.core.shared.domain.InvitationType; import cc.kune.core.shared.domain.utils.StateToken; import cc.kune.core.shared.dto.InvitationDTO; import cc.kune.core.shared.dto.StateContainerDTO; import cc.kune.domain.Container; import cc.kune.domain.Group; import cc.kune.domain.User; import cc.kune.domain.finders.GroupFinder; import cc.kune.domain.finders.UserFinder; import com.google.inject.Inject; // TODO: Auto-generated Javadoc /** * The Class InvitationRPC. * * @author vjrj@ourproject.org (Vicente J. Ruiz Jurado) */ public class InvitationRPC implements RPC, InvitationService { /** The container manager. */ private final ContainerManager containerManager; /** The group finder. */ private final GroupFinder groupFinder; /** The invitation manager. */ private final InvitationManager invitationManager; /** The mapper. */ private final KuneMapper mapper; /** The user finder. */ private final UserFinder userFinder; /** The user session manager. */ private final UserSessionManager userSessionManager; /** * Instantiates a new invitation rpc. * * @param invitationManager * the invitation manager * @param userSessionManager * the user session manager * @param mapper * the mapper * @param groupFinder * the group finder * @param containerManager * the container manager */ @Inject public InvitationRPC(final InvitationManager invitationManager, final UserSessionManager userSessionManager, final KuneMapper mapper, final GroupFinder groupFinder, final ContainerManager containerManager, final UserFinder userFinder) { this.containerManager = containerManager; this.invitationManager = invitationManager; this.userSessionManager = userSessionManager; this.mapper = mapper; this.groupFinder = groupFinder; this.userFinder = userFinder; } /* * (non-Javadoc) * * @see * cc.kune.core.client.rpcservices.InvitationService#confirmationInvitationToGroup * (java.lang.String, java.lang.String) */ @Override public void confirmationInvitationToGroup(final String userHash, final String invitationHash) throws IncorrectHashException { invitationManager.confirmInvitationToGroup(getUser(), invitationHash); } /* * (non-Javadoc) * * @see * cc.kune.core.client.rpcservices.InvitationService#confirmationInvitationToSite * (java.lang.String, java.lang.String) */ @Override @Authenticated @KuneTransactional public void confirmationInvitationToSite(final String userHash, final String invitationHash) throws IncorrectHashException { invitationManager.confirmInvitationToSite(getUser(), invitationHash); } /* * (non-Javadoc) * * @see * cc.kune.core.client.rpcservices.InvitationService#confirmInvitationToList * (java.lang.String, java.lang.String) */ @Override public StateContainerDTO confirmInvitationToList(final String userHash, final String invitationHash) throws IncorrectHashException { return invitationManager.confirmInvitationToList(getUser(), invitationHash); } /* * (non-Javadoc) * * @see * cc.kune.core.client.rpcservices.InvitationService#getInvitation(java.lang * .String) */ @Override @KuneTransactional public InvitationDTO getInvitation(final String invitationHash) throws IncorrectHashException { final InvitationDTO map = mapper.map(invitationManager.get(invitationHash), InvitationDTO.class); final StateToken token = new StateToken(map.getInvitedToToken()); switch (map.getType()) { case TO_GROUP: final Group group = groupFinder.findByShortName(token.getGroup()); map.setName(group.getShortName()); map.setDescription(group.getLongName()); break; case TO_LISTS: final Group groupOfList = groupFinder.findByShortName(token.getGroup()); final Container cnt = containerManager.find(ContentUtils.parseId(token.getFolder())); map.setName(cnt.getName()); map.setDescription(groupOfList.getLongName()); default: break; } return map; } /** * Gets the user. * * @return the user */ private User getUser() { return userSessionManager.getUser(); } /* * (non-Javadoc) * * @see * cc.kune.core.client.rpcservices.InvitationService#inviteToGroup(java.lang * .String, cc.kune.core.shared.domain.utils.StateToken, java.lang.String[]) */ @Override @Authenticated @KuneTransactional @Authorizated(accessRolRequired = AccessRol.Administrator, actionLevel = ActionLevel.group) public void inviteToGroup(final String userHash, final StateToken token, final String[] emails) { invitationManager.invite(getUser(), InvitationType.TO_GROUP, NotificationType.email, token, emails); } /* * (non-Javadoc) * * @see * cc.kune.core.client.rpcservices.InvitationService#inviteToList(java.lang * .String, cc.kune.core.shared.domain.utils.StateToken, java.lang.String[]) */ @Override @Authenticated @KuneTransactional @Authorizated(accessRolRequired = AccessRol.Administrator, actionLevel = ActionLevel.group) public void inviteToList(final String userHash, final StateToken token, final String[] emails) { invitationManager.invite(getUser(), InvitationType.TO_LISTS, NotificationType.email, token, emails); } /* * (non-Javadoc) * * @see * cc.kune.core.client.rpcservices.InvitationService#inviteToSite(java.lang * .String, cc.kune.core.shared.domain.utils.StateToken, java.lang.String[]) */ @Override @Authenticated @KuneTransactional public void inviteToSite(final String userHash, final StateToken token, final String[] emails) { invitationManager.invite(getUser(), InvitationType.TO_SITE, NotificationType.email, token, emails); } /* * (non-Javadoc) * * @see * cc.kune.core.client.rpcservices.InvitationService#inviteUserToGroup(java * .lang.String, cc.kune.core.shared.domain.utils.StateToken, * java.lang.String) */ @Override @Authenticated @KuneTransactional @Authorizated(accessRolRequired = AccessRol.Administrator, actionLevel = ActionLevel.group) public void inviteUserToGroup(final String userHash, final StateToken token, final String shortName) { /** invited user */ final User to = userFinder.findByShortName(shortName); final String invitedEmail = Addressee.build(to).getAddress(); invitationManager.invite(getUser(), InvitationType.TO_GROUP, NotificationType.email, token, invitedEmail); } /* * (non-Javadoc) * * @see * cc.kune.core.client.rpcservices.InvitationService#inviteUserToList(java * .lang.String, cc.kune.core.shared.domain.utils.StateToken, * java.lang.String) */ @Override @Authenticated @KuneTransactional @Authorizated(accessRolRequired = AccessRol.Administrator, actionLevel = ActionLevel.group) public void inviteUserToList(final String userHash, final StateToken token, final String shortName) { final User to = userFinder.findByShortName(shortName); final String invitedEmail = Addressee.build(to).getAddress(); invitationManager.invite(getUser(), InvitationType.TO_LISTS, NotificationType.email, token, invitedEmail); } }