/******************************************************************************* * Copyright [2015] [Onboard team of SERC, Peking University] * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *******************************************************************************/ package com.onboard.service.security.impl; import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.onboard.domain.mapper.ProjectPrivilegeMapper; import com.onboard.domain.mapper.model.ProjectPrivilegeExample; import com.onboard.domain.model.ProjectPrivilege; import com.onboard.domain.model.User; import com.onboard.service.account.UserService; import com.onboard.service.security.ProjectPrivilegeService; /** * {@link com.onboard.service.security.ProjectPrivilegeService} Service * implementation * * @author XR * */ @Transactional @Service("projectPrivilegeServiceBean") public class ProjectPrivilegeServiceImpl implements ProjectPrivilegeService { @Autowired private ProjectPrivilegeMapper projectPrivilegeMapper; @Autowired private UserService userService; @Override public ProjectPrivilege getProjectPrivilegeById(int id) { return projectPrivilegeMapper.selectByPrimaryKey(id); } @Override public List<ProjectPrivilege> getProjectPrivileges(int start, int limit) { ProjectPrivilegeExample example = new ProjectPrivilegeExample(new ProjectPrivilege()); example.setLimit(start, limit); return projectPrivilegeMapper.selectByExample(example); } @Override public List<ProjectPrivilege> getProjectPrivilegesByExample(ProjectPrivilege item, int start, int limit) { ProjectPrivilegeExample example = new ProjectPrivilegeExample(item); example.setLimit(start, limit); return projectPrivilegeMapper.selectByExample(example); } @Override public int countByExample(ProjectPrivilege item) { ProjectPrivilegeExample example = new ProjectPrivilegeExample(item); return projectPrivilegeMapper.countByExample(example); } @Override public ProjectPrivilege createProjectPrivilege(ProjectPrivilege item) { projectPrivilegeMapper.insert(item); return item; } @Override public ProjectPrivilege updateProjectPrivilege(ProjectPrivilege item) { projectPrivilegeMapper.updateByPrimaryKey(item); return item; } @Override public void deleteProjectPrivilege(int id) { projectPrivilegeMapper.deleteByPrimaryKey(id); } @Override public ProjectPrivilege getOrCreateProjectPrivilegeByUserId(int projectId, int userId) { ProjectPrivilege sample = new ProjectPrivilege(); sample.setProjectId(projectId); sample.setUserId(userId); List<ProjectPrivilege> ps = projectPrivilegeMapper.selectByExample(new ProjectPrivilegeExample(sample)); if (ps == null || ps.size() == 0) { ProjectPrivilege p = new ProjectPrivilege(); p.setProjectId(projectId); p.setUserId(userId); p.setIsAdmin(false); return createProjectPrivilege(p); } return ps.get(0); } @Override public List<ProjectPrivilege> getProjectPrivilegesByUserId(int userId) { ProjectPrivilege sample = new ProjectPrivilege(); sample.setUserId(userId); return projectPrivilegeMapper.selectByExample(new ProjectPrivilegeExample(sample)); } @Override public List<User> getProjectAdminsByProject(int projectId) { ProjectPrivilege sample = new ProjectPrivilege(); sample.setProjectId(projectId); sample.setIsAdmin(true); List<ProjectPrivilege> ps = projectPrivilegeMapper.selectByExample(new ProjectPrivilegeExample(sample)); List<User> users = new ArrayList<User>(); for (ProjectPrivilege p : ps) { users.add(userService.getById(p.getUserId())); } return users; } @Override public void addProjectAdmin(int userId, int projectId) { ProjectPrivilege pp = getOrCreateProjectPrivilegeByUserId(projectId, userId); pp.setIsAdmin(true); updateProjectPrivilege(pp); } @Override public void removeProjectAdmin(int userId, int projectId) { ProjectPrivilege pp = getOrCreateProjectPrivilegeByUserId(projectId, userId); pp.setIsAdmin(false); updateProjectPrivilege(pp); } }