//$Id: ResourceAction.java,v 1.7 2006/10/20 10:43:19 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 * ============ ============ ============ * chaostone 2005-10-9 Created * ********************************************************************************/ package org.beanfuse.webapp.security.action; import java.util.Collections; import java.util.List; 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.Resource; import org.beanfuse.security.UserCategory; import org.beanfuse.security.menu.Menu; import org.beanfuse.security.restriction.Pattern; import org.beanfuse.security.service.AuthorityDecisionService; import org.beanfuse.security.service.ResourceService; /** * 系统模块管理响应类 * * @author chaostone 2005-10-9 */ public class ResourceAction extends SecurityAction { private ResourceService resourceService; private AuthorityDecisionService authorityDecisionService; /** * 禁用或激活一个或多个模块 * * @param mapping * @param form * @param request * @param response * @return */ public String activate() { Long[] resourceIds = SeqStringUtil.transformToLong(get("resourceIds")); Boolean enabled = getBoolean("enabled"); if (null == enabled) { enabled = Boolean.FALSE; } resourceService.updateState(resourceIds, enabled.booleanValue()); authorityDecisionService.refreshResourceCache(); return redirect("search", "info.save.success"); } protected void editSetting(Entity entity) { Resource resource = (Resource) entity; List patterns = entityService.loadAll(Pattern.class); patterns.removeAll(resource.getPatterns()); put("patterns", patterns); put("categories", entityService.loadAll(UserCategory.class)); } protected String saveAndForward(Entity entity) { Resource resource = (Resource) entity; if (null != resource) { List list = this.entityService.load(Resource.class, "name", resource.getName()); int isUniqueFlag = 0; if (null != resource.getId()) { isUniqueFlag = 1; } if (null != list && list.size() > isUniqueFlag) { return redirect("edit", "error.notUnique"); } } Long[] patternIds = SeqStringUtil.transformToLong(get("patternIds")); List patterns = Collections.EMPTY_LIST; if (null != patternIds) { patterns = entityService.load(Pattern.class, "id", patternIds); } resource.getPatterns().clear(); resource.getPatterns().addAll(patterns); String categoryIds = get("categoryIds"); List categories = entityService.load(Resource.class, "id", SeqStringUtil .transformToLong(categoryIds)); resource.getCategories().clear(); resource.getCategories().addAll(categories); entityService.saveOrUpdate(resource); authorityDecisionService.refreshResourceCache(); logger.info("save resource success {}", resource.getTitle()); return redirect("search", "info.save.success"); } public String info() { Long entityId = getEntityId(getShortName()); Entity entity = getModel(entityName, entityId); EntityQuery query = new EntityQuery(Menu.class, "menu"); query.join("menu.resources", "r"); query.add(new Condition("r.id=:resourceId", entity.getEntityId())); query.addOrder(Order.parse("menu.profile.id,menu.code")); List menus = (List) entityService.search(query); put(getShortName(), entity); put("menus", menus); put("categories", entityService.loadAll(UserCategory.class)); return forward(); } public void setResourceService(ResourceService resourceService) { this.resourceService = resourceService; } public void setAuthorityDecisionService(AuthorityDecisionService authorityDecisionService) { this.authorityDecisionService = authorityDecisionService; } }