📄 securityserviceimpl.java
字号:
/*
* 2004/5/11 created
*
*/
package jaoso.framework.service.impl;
import jaoso.framework.dao.AccountDAO;
import jaoso.framework.dao.RightDAO;
import jaoso.framework.dao.RoleDAO;
import jaoso.framework.domain.Account;
import jaoso.framework.domain.Person;
import jaoso.framework.domain.Right;
import jaoso.framework.domain.Role;
import jaoso.framework.exception.AccountAlreadyExistException;
import jaoso.framework.exception.BusinessException;
import jaoso.framework.exception.DAOException;
import jaoso.framework.exception.GroupExistException;
import jaoso.framework.exception.RightExistException;
import jaoso.framework.security.Acl;
import jaoso.framework.security.ProtectedResource;
import jaoso.framework.service.SecurityService;
import jaoso.framework.util.MyBeanUtils;
import jaoso.framework.util.MyUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.orm.hibernate.LocalSessionFactoryBean;
import java.io.Serializable;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
* @author edgeloner
*/
public class SecurityServiceImpl extends BaseService implements SecurityService {
/** log */
private static Log log = LogFactory.getLog(SecurityServiceImpl.class);
/** accountDAO */
private AccountDAO accountDAO;
/** box and group mapping collection */
private Acl acl;
/** Right dao */
private RightDAO rightDAO;
/** Role dao */
private RoleDAO groupDAO;
private LocalSessionFactoryBean lsfb;
public LocalSessionFactoryBean getLsfb() {
return lsfb;
}
public void setLsfb(LocalSessionFactoryBean lsfb) {
this.lsfb = lsfb;
}
/**
* DOCUMENT ME!
*
* @param dao
* DOCUMENT ME!
*/
public final void setAccountDAO(final AccountDAO dao) {
accountDAO = dao;
}
/**
* DOCUMENT ME!
*
* @param a
* DOCUMENT ME!
*/
public final void setAcl(final Acl a) {
this.acl = a;
}
/**
* @param dao
* group DAO
*/
public final void setGroupDAO(final RoleDAO dao) {
this.groupDAO = dao;
}
/**
* @param dao
* right DAO
*/
public final void setRightDAO(final RightDAO dao) {
this.rightDAO = dao;
}
/**
* (non-Javadoc)
*
* @see jaoso.framework.service.SecurityService#changeAccountGroup(java.io.Serializable,
* java.io.Serializable)
*/
public final void changeAccountRole(final Serializable accountId,
final Serializable groupId) throws BusinessException {
Account account = findAccountById(accountId);
Role group = findRoleById(groupId);
Role ogroup = account.getGroup();
try {
if ((ogroup != null) && !MyUtils.isBlank(ogroup.getId()) &&
!ogroup.getId().equals(group.getId())) {
ogroup.getAccounts().remove(account);
account.setGroup(group);
group.getAccounts().add(account);
groupDAO.updateGroup(ogroup);
} else if ((ogroup == null) || MyUtils.isBlank(ogroup.getId())) {
account.setGroup(group);
group.getAccounts().add(account);
}
groupDAO.updateGroup(group);
accountDAO.updateAccount(account);
} catch (DAOException e) {
throw new BusinessException(e.getMessage());
}
initSecurity();
}
/**
* (non-Javadoc)
*
* @see jaoso.framework.service.SecurityService#createRight(jaoso.framework.dto.RightDTO)
*/
public final void createRight(final Right right)
throws BusinessException, RightExistException {
if (rightDAO.isExist(right)) {
throw new RightExistException("right already exist");
}
try {
rightDAO.createRight(right);
} catch (DAOException e) {
throw new BusinessException(e.getMessage());
}
initSecurity();
}
/**
* (non-Javadoc)
*
* @see jaoso.framework.service.SecurityService#createGroup(jaoso.framework.dto.GroupDTO)
*/
public final void createRole(final Role group, final String[] rights)
throws BusinessException, GroupExistException {
if (group == null) {
throw new BusinessException("group cant not be null!");
}
if (groupDAO.isExist(group.getDesc())) {
throw new GroupExistException("group desc already exist!");
}
try {
Set rightset = new HashSet();
Right right;
for (int i = 0, n = rights.length; i < n; i++) {
right = rightDAO.getRight(rights[i]);
if (right != null) {
right.getGroups().add(group);
rightset.add(right);
rightDAO.updateRight(right);
}
}
group.setRights(rightset);
groupDAO.createGroup(group);
} catch (DAOException e) {
log.error("create group error: ", e);
throw new BusinessException(e.getMessage());
}
}
//==========================================================================
/**
* (non-Javadoc)
*
* @see jaoso.application.service.SecurityService#findAccountById(java.lang.String)
*/
public final Account findAccountById(final Serializable id) {
if (MyUtils.isBlank(id)) {
return null;
}
return accountDAO.getAccount(id);
}
//==========================================================================
/**
* (non-Javadoc)
*
* @see jaoso.application.service.SecurityService#findAccountByName(java.lang.String)
*/
public final Account findAccountByName(final String name)
throws BusinessException {
if (MyUtils.isBlank(name)) {
return null;
}
Account account = null;
try {
account = accountDAO.getAccountByName(name);
} catch (DAOException e) {
log.error("findAccountByName error: " + e);
throw new BusinessException(e.getMessage());
}
return account;
}
//==========================================================================
/**
* (non-Javadoc)
*
* @see jaoso.application.service.SecurityService#findAllAccount()
*/
public final Account[] findAllAccount() throws BusinessException {
Account[] entitys = null;
try {
entitys = accountDAO.findAllAccount();
} catch (DAOException e) {
log.error("findAllAccount error: " + e);
throw new BusinessException(e.getMessage());
}
if (MyUtils.isBlank(entitys)) {
return null;
}
return entitys;
}
/**
* (non-Javadoc)
*
* @see jaoso.framework.service.SecurityService#findAllGroup()
*/
public final Role[] findAllGroup() throws BusinessException {
Role[] entitys = null;
try {
entitys = groupDAO.findAllGroup();
} catch (DAOException e) {
log.error("findAllAccount error: " + e);
throw new BusinessException(e.getMessage());
}
if (MyUtils.isBlank(entitys)) {
return null;
}
return entitys;
}
/**
* (non-Javadoc)
*
* @see jaoso.framework.service.SecurityService#findAllRight()
*/
public final Right[] findAllRight() throws BusinessException {
Right[] entitys = null;
try {
entitys = rightDAO.findAllRight();
} catch (DAOException e) {
log.error("findAllAccount error: " + e);
throw new BusinessException(e.getMessage());
}
if (MyUtils.isBlank(entitys)) {
return null;
}
return entitys;
}
/**
* (non-Javadoc)
*
* @see jaoso.framework.service.SecurityService#findGroupById(java.io.Serializable)
*/
public final Role findRoleById(final Serializable id)
throws BusinessException {
Role group = null;
try {
group = groupDAO.getGroup(id);
} catch (DAOException e) {
throw new BusinessException(e.getMessage());
}
return group;
}
//==========================================================================
/**
* DOCUMENT ME!
*
* @throws BusinessException
* DOCUMENT ME!
*/
public final void initSecurity() throws BusinessException {
//load all rights to acl
acl.setProtectedResourcesMap(loadRights());
log.info("*****************init security success!***************");
}
/**
* (non-Javadoc)
*
* @see jaoso.application.service.SecurityService#login(java.lang.String,
* java.lang.String)
*/
public final Account login(final String name, final String password)
throws BusinessException {
Account account = null;
//use jaas
// try {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -