Package org.apdplat.module.security.action

Source Code of org.apdplat.module.security.action.UserAction

/**
*
* APDPlat - Application Product Development Platform
* Copyright (c) 2013, 杨尚川, yang-shangchuan@qq.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
*
*/

package org.apdplat.module.security.action;

import org.apdplat.module.security.model.Position;
import org.apdplat.module.security.model.Role;
import org.apdplat.module.security.model.User;
import org.apdplat.module.security.model.UserGroup;
import org.apdplat.module.system.service.PropertyHolder;
import org.apdplat.platform.action.ExtJSSimpleAction;
import org.apdplat.platform.criteria.Property;
import org.apdplat.platform.criteria.PropertyCriteria;
import org.apdplat.platform.util.Struts2Utils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.convention.annotation.Namespace;
import org.apdplat.module.security.service.UserReportService;
import org.apdplat.module.security.service.UserService;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

@Scope("prototype")
@Controller
@Namespace("/security")
public class UserAction extends ExtJSSimpleAction<User> {
    private int orgId;
    private String oldPassword;
    private String newPassword;
    private String roles;
    private String positions;
    private String userGroups;
   
    //在线用户 根据org查找
    private String org;
    //在线用户 根据role查找
    private String role;
    //用户重置密码
    private String password;
   
    //用户选择组件
    private boolean select;
   
    @Resource(name="userReportService")
    private UserReportService userReportService;
    @Resource(name="userService")
    private UserService userService;
   
    @Override
    public String report(){
        byte[] report = userReportService.getReport(ServletActionContext.getServletContext(), ServletActionContext.getRequest());
        Struts2Utils.renderImage(report, "text/html");       
        return null;
    }
    @Override
    protected void checkModel(User model) throws Exception{
        userService.checkModel(model);
    }
   
    @Override
    public PropertyCriteria buildPropertyCriteria(){
        return userService.buildPropertyCriteria(super.buildPropertyCriteria(), orgId);
    }
   
    public String reset(){
        String result = userService.reset(getIds(), password);
        Struts2Utils.renderText(result);
        return null;
    }
   
    public String online(){
        page = userService.getOnlineUsers(getStart(), getLimit(), org, role);
       
        Map json = new HashMap();
        json.put("totalProperty", page.getTotalRecords());
        List<Map> result = new ArrayList<>();
        renderJsonForQuery(result);
        json.put("root", result);
        Struts2Utils.renderJson(json);
        return null;
    }

    public String store(){
        if(select){
            return super.query();
        }
        List<User> users=getService().query(User.class).getModels();
        List<Map<String,String>> data=new ArrayList<>();
        for(User user : users){
            Map<String,String> temp=new HashMap<>();
            temp.put("value", user.getUsername());
            temp.put("text", user.getUsername());
            data.add(temp);
        }
        Struts2Utils.renderJson(data);
        return null;
    }
    @Override
    public void assemblyModelForCreate(User model) {
        userService.assemblyModelForCreate(model, roles, positions, userGroups);
    }
    @Override
    public void prepareForDelete(Integer[] ids){
        userService.prepareForDelete(ids);
    }  
    @Override
    protected void old(User model) {
        if(PropertyHolder.getBooleanProperty("demo")){
            if(model.getUsername().equals("admin")){
                throw new RuntimeException("演示版本不能修改admin用户");
            }
        }
    }
    public String modifyPassword(){
        Map result = userService.modifyPassword(oldPassword, newPassword);
        Struts2Utils.renderJson(result);
       
        return null;
    }
   
    // 在更新一个特定的部分的Model之前对Model添加需要修改的属性
    @Override
    protected void assemblyModelForPartUpdate(List<Property> properties) {
        userService.assemblyModelForPartUpdate(properties, model);
    }
    @Override
    protected void assemblyModelForUpdate(User model){
        userService.assemblyModelForUpdate(model, roles, positions, userGroups);
    }
    @Override
    protected void renderJsonForRetrieve(Map map) {
        render(map,model);
        map.put("roles", model.getRoleStrs());
        map.put("positions", model.getPositionStrs());
        map.put("userGroups", model.getUserGroupStrs());
    }
   
    @Override
    protected void renderJsonForSearch(List result) {
        for (User user : page.getModels()) {
            Map temp = new HashMap();
            render(temp,user);

            StringBuilder str=new StringBuilder();
            //搜索出来的模型已经被detach了,无法获得延迟加载的数据
            User tmp=getService().retrieve(User.class, user.getId());
            for(Role r : tmp.getRoles()){
                str.append(r.getRoleName()).append(",");
            }
            temp.put("roles", str.length()>1?str.toString().substring(0, str.length()-1):"");

            str=new StringBuilder();
            for(Position p : tmp.getPositions()){
                str.append(p.getPositionName()).append(",");
            }
            temp.put("positions", str.length()>1?str.toString().substring(0, str.length()-1):"");
            result.add(temp);
           
            str=new StringBuilder();
            for(UserGroup p : tmp.getUserGroups()){
                str.append(p.getUserGroupName()).append(",");
            }
            temp.put("userGroups", str.length()>1?str.toString().substring(0, str.length()-1):"");
            result.add(temp);
        }
    }
    @Override
    protected void renderJsonForQuery(List result) {
        for (User user : page.getModels()) {
            //重新加载,避免出现延迟加载错误
            user = getService().retrieve(modelClass, user.getId());
            Map temp = new HashMap();
            render(temp,user);

            StringBuilder str=new StringBuilder();
            for(Role r : user.getRoles()){
                str.append(r.getRoleName()).append(",");
            }
            temp.put("roles", str.length()>1?str.toString().substring(0, str.length()-1):"");

            str=new StringBuilder();
            for(Position p : user.getPositions()){
                str.append(p.getPositionName()).append(",");
            }
            temp.put("positions", str.length()>1?str.toString().substring(0, str.length()-1):"");
            result.add(temp);

            str=new StringBuilder();
            for(UserGroup p : user.getUserGroups()){
                str.append(p.getUserGroupName()).append(",");
            }
            temp.put("userGroups", str.length()>1?str.toString().substring(0, str.length()-1):"");
            result.add(temp);
        }
    }
    @Override
    protected void render(Map map,User model){
        map.put("id", model.getId());
        map.put("version", model.getVersion());
        map.put("username", model.getUsername());
        map.put("realName", model.getRealName());
        map.put("enabled", model.isEnabled()==true?"启用":"停用");
        String orgName="";
        int id=0;
        if(model.getOrg()!=null){
            orgName=model.getOrg().getOrgName();
            id=model.getOrg().getId();
        }
        map.put("orgName", orgName);
        map.put("orgId", id+"");
        map.put("des", model.getDes());
    }

    public void setNewPassword(String newPassword) {
        this.newPassword = newPassword;
    }

    public void setOldPassword(String oldPassword) {
        this.oldPassword = oldPassword;
    }

    public void setRoles(String roles) {
        this.roles = roles;
    }

    public void setPositions(String positions) {
        this.positions = positions;
    }

    public void setUserGroups(String userGroups) {
        this.userGroups = userGroups;
    }

    public void setOrg(String org) {
        this.org = org;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public void setRole(String role) {
        this.role = role;
    }

    public void setOrgId(int orgId) {
        this.orgId = orgId;
    }

    public void setSelect(boolean select) {
        this.select = select;
    }
}
TOP

Related Classes of org.apdplat.module.security.action.UserAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.