package com.github.zhangkaitao.shiro.chapter16.service;
import com.github.zhangkaitao.shiro.chapter16.dao.RoleDao;
import com.github.zhangkaitao.shiro.chapter16.entity.Role;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* <p>User: Zhang Kaitao
* <p>Date: 14-1-28
* <p>Version: 1.0
*/
@Service
public class RoleServiceImpl implements RoleService {
@Autowired
private RoleDao roleDao;
@Autowired
private ResourceService resourceService;
public Role createRole(Role role) {
return roleDao.createRole(role);
}
public Role updateRole(Role role) {
return roleDao.updateRole(role);
}
public void deleteRole(Long roleId) {
roleDao.deleteRole(roleId);
}
@Override
public Role findOne(Long roleId) {
return roleDao.findOne(roleId);
}
@Override
public List<Role> findAll() {
return roleDao.findAll();
}
@Override
public Set<String> findRoles(Long... roleIds) {
Set<String> roles = new HashSet<String>();
for(Long roleId : roleIds) {
Role role = findOne(roleId);
if(role != null) {
roles.add(role.getRole());
}
}
return roles;
}
@Override
public Set<String> findPermissions(Long[] roleIds) {
Set<Long> resourceIds = new HashSet<Long>();
for(Long roleId : roleIds) {
Role role = findOne(roleId);
if(role != null) {
resourceIds.addAll(role.getResourceIds());
}
}
return resourceService.findPermissions(resourceIds);
}
}