/******************************************************************************* * Copyright (c) 2014 antoniomariasanchez at gmail.com. All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 which accompanies this distribution, and is * available at http://www.gnu.org/licenses/gpl.html * * Contributors: antoniomaria - initial API and implementation ******************************************************************************/ package net.sf.gazpachoquest.services.user.impl; import java.util.List; import net.sf.gazpachoquest.domain.user.Group; import net.sf.gazpachoquest.domain.user.User; import net.sf.gazpachoquest.repository.user.GroupRepository; import net.sf.gazpachoquest.repository.user.UserRepository; import net.sf.gazpachoquest.services.GroupService; import net.sf.gazpachoquest.services.core.impl.AbstractPersistenceService; import org.apache.commons.lang.BooleanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; @Service public class GroupServiceImpl extends AbstractPersistenceService<Group> implements GroupService { @Autowired private UserRepository respondentRepository; @Autowired public GroupServiceImpl(final GroupRepository repository) { super(repository); } @Override @Transactional(readOnly = false) public Group save(final Group group) { Group existing = null; if (group.isNew()) { existing = repository.save(group); } else { existing = repository.findOne(group.getId()); existing.setName(group.getName()); existing.setDescription(group.getDescription()); } return existing; } @Override @Transactional(readOnly = true) public List<User> getUsersInGroup(Integer groupId) { return ((GroupRepository) repository).findUsersInGroup(groupId); } @Transactional(readOnly = false) @Override public void addUserToGroup(User user, Integer groupId) { Group group = repository.findOne(groupId); Assert.notNull(group, "Group not found"); Assert.state(!user.isNew(), "Persist user before adding to groups"); user = respondentRepository.findOne(user.getId()); Assert.notNull(user, "User not found"); group.assignUser(user); } @Transactional(readOnly = true) @Override public boolean isUserInGroup(Integer userId, Integer groupId) { return BooleanUtils.toBoolean(((GroupRepository) repository).isUserInGroup(userId, groupId)); } @Transactional(readOnly = true) @Override public boolean isUserInGroup(Integer userId, String groupName) { return BooleanUtils.toBoolean(((GroupRepository) repository).isUserInGroup(userId, groupName)); } }