com.eryansky.web.base.OrganAction.java Source code

Java tutorial

Introduction

Here is the source code for com.eryansky.web.base.OrganAction.java

Source

/**
 *  Copyright (c) 2012-2014 http://www.eryansky.com
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 */
package com.eryansky.web.base;

import com.eryansky.common.exception.ActionException;
import com.eryansky.common.model.Combobox;
import com.eryansky.common.model.Datagrid;
import com.eryansky.common.model.Result;
import com.eryansky.common.model.TreeNode;
import com.eryansky.common.orm.Page;
import com.eryansky.common.orm.PropertyFilter;
import com.eryansky.common.orm.entity.StatusState;
import com.eryansky.common.orm.hibernate.EntityManager;
import com.eryansky.common.utils.StringUtils;
import com.eryansky.common.utils.collections.Collections3;
import com.eryansky.common.utils.mapper.JsonMapper;
import com.eryansky.common.web.struts2.StrutsAction;
import com.eryansky.common.web.struts2.utils.Struts2Utils;
import com.eryansky.entity.base.Organ;
import com.eryansky.entity.base.User;
import com.eryansky.entity.base.state.OrganType;
import com.eryansky.service.base.OrganManager;
import com.eryansky.service.base.UserManager;
import com.eryansky.utils.SelectType;
import com.google.common.collect.Lists;
import org.apache.commons.collections.ListUtils;
import org.apache.commons.lang.ArrayUtils;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;

/**
 * Organ? Action.
 *
 * @author &Eryan eryanwcp@gmail.com
 * @date 2013-09-09 ?21:36:24
 */
@SuppressWarnings("serial")
public class OrganAction extends StrutsAction<Organ> {

    /**
     * 
     */
    private List<Long> userIds;
    /**
     * ?ID
     */
    private Long managerUserId;
    /**
     * ???
     */
    private String nameOrCode;
    /**
     * 
     */
    private Integer parentOrganType;
    @Autowired
    private OrganManager organManager;
    @Autowired
    private UserManager userManager;

    @Override
    public EntityManager<Organ, Long> getEntityManager() {
        return organManager;
    }

    public String treegrid() throws Exception {
        try {
            List<PropertyFilter> filters = Lists.newArrayList();
            // 
            //            List<PropertyFilter> filters = HibernateWebUtils
            //                    .buildPropertyFilters(Struts2Utils.getRequest());
            List<Organ> list = getEntityManager().find(filters, sort, order);
            Datagrid<Organ> dg = new Datagrid<Organ>(list.size(), list);
            Struts2Utils.renderJson(dg);
        } catch (Exception e) {
            throw e;
        }
        return null;
    }

    /**
     * combogrid
     * @return
     * @throws Exception
     */
    public String combogrid() throws Exception {
        try {
            Criterion statusCriterion = Restrictions.eq("status", StatusState.normal.getValue());
            Criterion[] criterions = new Criterion[0];
            criterions = (Criterion[]) ArrayUtils.add(criterions, 0, statusCriterion);
            Criterion criterion = null;
            if (!Collections3.isEmpty(ids)) {
                //in?
                Criterion inCriterion = Restrictions.in("id", ids);

                if (StringUtils.isNotBlank(nameOrCode)) {
                    Criterion nameCriterion = Restrictions.like("name", nameOrCode, MatchMode.ANYWHERE);
                    Criterion codeCriterion = Restrictions.like("code", nameOrCode, MatchMode.ANYWHERE);
                    Criterion criterion1 = Restrictions.or(nameCriterion, codeCriterion);
                    criterion = Restrictions.or(inCriterion, criterion1);
                } else {
                    criterion = inCriterion;
                }
                //??
                criterions = (Criterion[]) ArrayUtils.add(criterions, 0, criterion);
            } else {
                if (StringUtils.isNotBlank(nameOrCode)) {
                    Criterion nameCriterion = Restrictions.like("name", nameOrCode, MatchMode.ANYWHERE);
                    Criterion codeCriterion = Restrictions.like("code", nameOrCode, MatchMode.ANYWHERE);
                    criterion = Restrictions.or(nameCriterion, codeCriterion);
                    //??
                    criterions = (Criterion[]) ArrayUtils.add(criterions, 0, criterion);
                }
            }

            //
            Page<Organ> p = new Page<Organ>(rows);//
            p = organManager.findByCriteria(p, criterions);
            Datagrid<Organ> dg = new Datagrid<Organ>(p.getTotalCount(), p.getResult());
            Struts2Utils.renderJson(dg);
        } catch (Exception e) {
            throw e;
        }
        return null;
    }

    @Override
    public String input() throws Exception {
        if (parentOrganType == null && model.getParentOrgan() != null) {
            parentOrganType = model.getParentOrgan().getType();
        }
        return super.input();
    }

    /**
     * ?.
     */
    public String save() throws Exception {
        Result result = null;
        try {
            model.setParentOrgan(null);
            // ????
            Organ organ = organManager.getByName(model.getName());
            if (organ != null && !organ.getId().equals(model.getId())) {
                result = new Result(Result.WARN, "??[" + model.getName() + "],!", "name");
                logger.debug(result.toString());
                Struts2Utils.renderText(result);
                return null;
            }

            // 
            if (model.get_parentId() != null) {
                Organ parentOrgan = organManager.loadById(model.get_parentId());
                if (parentOrgan == null) {
                    logger.error("[{}].", model.get_parentId());
                    throw new ActionException(".");
                }
                model.setParentOrgan(parentOrgan);
            }

            //?
            if (model.getId() != null) {
                if (model.getId().equals(model.get_parentId())) {
                    result = new Result(Result.ERROR, "[]?[??]?.", null);
                    logger.debug(result.toString());
                    Struts2Utils.renderText(result);
                    return null;
                }
            }
            organManager.saveOrgan(model);
            result = Result.successResult();
            logger.debug(result.toString());
            Struts2Utils.renderText(result);
        } catch (Exception e) {
            throw e;
        }
        return null;
    }

    /**
     *  ?
     * @return
     * @throws Exception
     */
    public String user() throws Exception {
        try {
            super.prepareModel();
            List<User> organUsers = model.getUsers();
            Datagrid<User> dg = new Datagrid<User>(organUsers.size(), organUsers);
            String managerUserCombogridData = JsonMapper.nonDefaultMapper().toJson(dg);
            logger.debug(managerUserCombogridData);
            Struts2Utils.getRequest().setAttribute("managerUserCombogridData", managerUserCombogridData);
        } catch (Exception e) {
            throw e;
        }
        return "user";
    }

    /**
     * 
     * @throws Exception
     */
    public void prepareUpdateOrganUser() throws Exception {
        super.prepareModel();
    }

    /**
     * 
     * @return
     * @throws Exception
     */
    public String updateOrganUser() throws Exception {
        Result result;
        try {
            //
            List<User> userList = Lists.newArrayList();
            if (!Collections3.isEmpty(userIds)) {
                for (Long userId : userIds) {
                    User user = userManager.loadById(userId);
                    userList.add(user);
                }
            }
            model.setUsers(userList);
            model.setManagerUserId(managerUserId);
            //
            //            //?
            //            List<User> orgUsers = Lists.newArrayList();
            //            if(model.getManagerUserId() != null){
            //                User managerUser = userManager.loadById(model.getManagerUserId()) ;
            //                if(Collections3.isEmpty(model.getUsers())){
            //                    orgUsers.add(managerUser);
            //                    model.setUsers(orgUsers);
            //                }else{
            //                    orgUsers =  model.getUsers();
            //                    boolean isContain = false;
            //                    for(User user:model.getUsers()){
            //                        if(user.getId().equals(model.getManagerUserId())){
            //                            isContain = true;
            //                        }
            //                    }
            //                    if(!isContain){
            //                        orgUsers.add(managerUser);
            //                        model.setUsers(orgUsers);
            //                    }
            //                }
            //            }
            organManager.saveOrgan(model);
            result = Result.successResult();
            logger.debug(result.toString());
            Struts2Utils.renderText(result);
        } catch (Exception e) {
            throw e;
        }
        return null;
    }

    /**
     * .
     */
    public void tree() throws Exception {
        List<TreeNode> treeNodes = Lists.newArrayList();
        try {
            List<TreeNode> titleList = Lists.newArrayList();
            //  "------"?"------"
            if (!StringUtils.isBlank(selectType)) {
                SelectType s = SelectType.getSelectTypeValue(selectType);
                if (s != null) {
                    TreeNode selectTreeNode = new TreeNode("", s.getDescription());
                    titleList.add(selectTreeNode);
                }
            }
            treeNodes = organManager.getOrganTree(null, true);
            List<TreeNode> unionList = ListUtils.union(titleList, treeNodes);
            Struts2Utils.renderJson(unionList);
        } catch (Exception e) {
            throw e;
        }
    }

    /**
     * .
     */
    public void organTypeCombobox() throws Exception {
        List<Combobox> cList = Lists.newArrayList();
        try {
            //combobox  "------"?"------"
            if (!StringUtils.isBlank(selectType)) {
                SelectType s = SelectType.getSelectTypeValue(selectType);
                if (s != null) {
                    Combobox selectCombobox = new Combobox("", s.getDescription());
                    cList.add(selectCombobox);
                }
            }

            OrganType _enumParentType = OrganType.getOrganType(parentOrganType);
            if (_enumParentType != null) {
                if (_enumParentType.equals(OrganType.organ)) {
                    OrganType[] rss = OrganType.values();
                    for (int i = 0; i < rss.length; i++) {
                        Combobox combobox = new Combobox();
                        combobox.setValue(rss[i].getValue().toString());
                        combobox.setText(rss[i].getDescription());
                        cList.add(combobox);
                    }
                } else if (_enumParentType.equals(OrganType.department)) {
                    Combobox departmentCombobox = new Combobox(OrganType.department.getValue().toString(),
                            OrganType.department.getDescription().toString());
                    Combobox groupCombobox = new Combobox(OrganType.group.getValue().toString(),
                            OrganType.group.getDescription().toString());
                    cList.add(departmentCombobox);
                    cList.add(groupCombobox);
                } else if (_enumParentType.equals(OrganType.group)) {
                    Combobox groupCombobox = new Combobox(OrganType.group.getValue().toString(),
                            OrganType.group.getDescription().toString());
                    cList.add(groupCombobox);
                }
            } else {
                Combobox groupCombobox = new Combobox(OrganType.organ.getValue().toString(),
                        OrganType.organ.getDescription().toString());
                cList.add(groupCombobox);
            }
            Struts2Utils.renderJson(cList);
        } catch (Exception e) {
            throw e;
        }
    }

    /**
     * .
     */
    @SuppressWarnings("unchecked")
    public void parentOrgan() throws Exception {
        prepareModel();
        List<TreeNode> treeNodes = Lists.newArrayList();
        try {
            List<TreeNode> titleList = Lists.newArrayList();
            //  "------"?"------"
            if (!StringUtils.isBlank(selectType)) {
                SelectType s = SelectType.getSelectTypeValue(selectType);
                if (s != null) {
                    TreeNode selectTreeNode = new TreeNode("", s.getDescription());
                    titleList.add(selectTreeNode);
                }
            }
            treeNodes = organManager.getOrganTree(model.getId(), true);
            List<TreeNode> unionList = ListUtils.union(titleList, treeNodes);
            Struts2Utils.renderJson(unionList);
        } catch (Exception e) {
            throw e;
        }
    }

    /**
     * ?.
     */
    public void maxSort() throws Exception {
        Result result;
        try {
            Integer maxSort = organManager.getMaxSort();
            result = new Result(Result.SUCCESS, null, maxSort);
            logger.debug(result.toString());
            Struts2Utils.renderJson(result);
        } catch (Exception e) {
            e.printStackTrace();
            throw e;
        }
    }

    public void setUserIds(List<Long> userIds) {
        this.userIds = userIds;
    }

    public void setManagerUserId(Long managerUserId) {
        this.managerUserId = managerUserId;
    }

    public void setNameOrCode(String nameOrCode) {
        this.nameOrCode = nameOrCode;
    }

    public Integer getParentOrganType() {
        return parentOrganType;
    }

    public void setParentOrganType(Integer parentOrganType) {
        this.parentOrganType = parentOrganType;
    }
}