//$Id: GroupAction.java,v 1.8 2006/12/30 01:29:02 chaostone Exp $
/*
*
* Copyright c 2005-2009
* Licensed under the Apache License, Version 2.0 (the "License")
* http://www.apache.org/licenses/LICENSE-2.0
*
*/
/********************************************************************************
* @author chaostone
*
* MODIFICATION DESCRIPTION
*
* Name Date Description
* ============ ============ ============
* dell Created
* chaostone 2005-09-29 refactor
* zq 2007-09-18 修改或替换了下面所有的info()方法
*
********************************************************************************/
package org.beanfuse.webapp.security.action;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.beanfuse.collection.Order;
import org.beanfuse.lang.SeqStringUtil;
import org.beanfuse.model.Entity;
import org.beanfuse.query.Condition;
import org.beanfuse.query.EntityQuery;
import org.beanfuse.security.Group;
import org.beanfuse.security.User;
import org.beanfuse.security.UserCategory;
import org.beanfuse.security.model.GroupPropertyExtractor;
import org.beanfuse.security.service.AuthorityService;
import org.beanfuse.security.service.GroupService;
import org.beanfuse.security.service.UserService;
import org.beanfuse.transfer.exporter.PropertyExtractor;
/**
* 用户组信息维护响应类
*
* @author chaostone 2005-9-29
*/
public class GroupAction extends SecurityAction {
private GroupService groupService;
private UserService userService;
protected void indexSetting() {
put("categories", entityService.loadAll(UserCategory.class));
}
protected void editSetting(Entity entity) {
put("categories", entityService.loadAll(UserCategory.class));
}
protected EntityQuery buildQuery() {
User manager = getUser();
EntityQuery entityQuery = new EntityQuery(entityName, "userGroup");
if (!manager.isAdmin()) {
entityQuery.join("userGroup.managers", "manager");
entityQuery.add(new Condition("manager.id=:managerId", manager.getId()));
}
populateConditions(entityQuery);
entityQuery.setLimit(getPageLimit());
entityQuery.addOrder(Order.parse(get("orderBy")));
return entityQuery;
}
protected PropertyExtractor getPropertyExtractor(HttpServletRequest request) {
return new GroupPropertyExtractor();
}
protected String saveAndForward(Entity entity) {
Group group = (Group) entity;
if (null != group) {
List list = this.entityService.load(Group.class, "name", group.getName());
int isUniqueFlag = 0;
if (null != group.getId()) {
isUniqueFlag = 1;
}
if (null != list && list.size() > isUniqueFlag) {
return redirect("edit", "error.notUnique");
}
}
if (null == group.getId()) {
User creator = userService.get(getUserId());
userService.createGroup(creator, group);
} else {
groupService.saveOrUpdate(group);
}
return redirect("search", "info.save.success");
}
/**
* 删除一个或多个用户组
*
* @param mapping
* @param form
* @param request
* @param response
* @return
*/
public String remove() {
String groupIdSeq = get("groupIds");
User curUser = userService.get(getUserId());
List toBeRemoved = groupService.get(SeqStringUtil.transformToLong(groupIdSeq));
userService.removeGroup(curUser, toBeRemoved);
return redirect("search", "info.delete.success");
}
/**
* 设置拷贝权限的起始用户组和目标用户组
*
* @param mapping
* @param form
* @param request
* @param response
* @return
*/
public String copyAuthSetting() {
Long fromGroupId = getLong("groupId");
Group fromGroup = groupService.get(fromGroupId);
put("fromGroup", fromGroup);
put("toGroups", getUser().getMngGroups());
return forward();
}
/**
* 拷贝权限
*
* @param mapping
* @param form
* @param request
* @param response
* @return
*/
public String copyAuth() {
Long fromGroupId = getLong("fromGroupId");
Long[] toGroupIds = SeqStringUtil.transformToLong(get("toGroupIds"));
Group fromGroup = groupService.get(fromGroupId);
List toGroups = groupService.get(toGroupIds);
authorityService.copyAuthority(fromGroup, toGroups);
return redirect("search", "info.set.success");
}
public void setGroupService(GroupService groupService) {
this.groupService = groupService;
}
public void setAuthorityService(AuthorityService authorityService) {
this.authorityService = authorityService;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
}