com.netsteadfast.greenstep.action.CommonSelectItemsDataAction.java Source code

Java tutorial

Introduction

Here is the source code for com.netsteadfast.greenstep.action.CommonSelectItemsDataAction.java

Source

/* 
 * Copyright 2012-2016 bambooCORE, greenstep of copyright Chen Xin Nien
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * 
 * -----------------------------------------------------------------------
 * 
 * author:    Chen Xin Nien
 * contact: chen.xin.nien@gmail.com
 * 
 */
package com.netsteadfast.greenstep.action;

import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.log4j.Logger;
import org.apache.struts2.json.annotations.JSON;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.netsteadfast.greenstep.base.Constants;
import com.netsteadfast.greenstep.base.action.BaseQueryGridJsonAction;
import com.netsteadfast.greenstep.base.exception.AuthorityException;
import com.netsteadfast.greenstep.base.exception.ControllerException;
import com.netsteadfast.greenstep.base.exception.ServiceException;
import com.netsteadfast.greenstep.base.model.ControllerAuthority;
import com.netsteadfast.greenstep.base.model.ControllerMethodAuthority;
import com.netsteadfast.greenstep.base.model.DefaultResult;
import com.netsteadfast.greenstep.base.model.YesNo;
import com.netsteadfast.greenstep.model.MenuItemType;
import com.netsteadfast.greenstep.po.hbm.TbSys;
import com.netsteadfast.greenstep.po.hbm.TbSysProg;
import com.netsteadfast.greenstep.service.ISysProgService;
import com.netsteadfast.greenstep.service.ISysService;
import com.netsteadfast.greenstep.util.IconUtils;
import com.netsteadfast.greenstep.vo.SysProgVO;
import com.netsteadfast.greenstep.vo.SysVO;

/**
 * ???
 *
 */
@ControllerAuthority(check = false)
@Controller("core.web.controller.CommonSelectItemsDataAction")
@Scope
public class CommonSelectItemsDataAction extends BaseQueryGridJsonAction {
    private static final long serialVersionUID = -6480690770314166344L;
    protected Logger logger = Logger.getLogger(CommonSelectItemsDataAction.class);
    private ISysService<SysVO, TbSys, String> sysService;
    private ISysProgService<SysProgVO, TbSysProg, String> sysProgService;
    private String message = "";
    private String success = IS_NO;
    private List<Map<String, String>> items = new LinkedList<Map<String, String>>();

    public CommonSelectItemsDataAction() {
        super();
    }

    @JSON(serialize = false)
    public ISysService<SysVO, TbSys, String> getSysService() {
        return sysService;
    }

    @Autowired
    @Resource(name = "core.service.SysService")
    public void setSysService(ISysService<SysVO, TbSys, String> sysService) {
        this.sysService = sysService;
    }

    @JSON(serialize = false)
    public ISysProgService<SysProgVO, TbSysProg, String> getSysProgService() {
        return sysProgService;
    }

    @Autowired
    @Resource(name = "core.service.SysProgService")
    public void setSysProgService(ISysProgService<SysProgVO, TbSysProg, String> sysProgService) {
        this.sysProgService = sysProgService;
    }

    private SysVO loadSysValueObj(String sysOid) throws ServiceException, Exception {
        SysVO sys = new SysVO();
        sys.setOid(sysOid);
        DefaultResult<SysVO> sysResult = this.sysService.findObjectByOid(sys);
        if (sysResult.getValue() == null) {
            throw new ServiceException(sysResult.getSystemMessage().getValue());
        }
        sys = sysResult.getValue();
        return sys;
    }

    private void queryItems() throws ServiceException, Exception {
        boolean pleaseSelect = YesNo.YES.equals(this.getFields().get("pleaseSelect"));
        if ("SYS".equals(this.getFields().get("type"))) { // ? sys
            Map<String, String> sysMap = this.sysService.findSysMap(super.getBasePath(), pleaseSelect);
            this.resetPleaseSelectDataMapFromLocaleLang(sysMap);
            for (Map.Entry<String, String> entry : sysMap.entrySet()) {
                Map<String, String> dataMap = new HashMap<String, String>();
                dataMap.put("key", entry.getKey());
                dataMap.put("value", entry.getValue());
                this.items.add(dataMap);
            }
            this.success = IS_YES;
        }
        if ("SYS_PROG".equals(this.getFields().get("type"))) { // ? sys_prog ITEM_TYPE='FOLDER'
            String sysOid = this.getFields().get("sysOid");
            SysVO sys = this.loadSysValueObj(sysOid);
            Map<String, String> sysProgMap = this.sysProgService.findSysProgFolderMap(super.getBasePath(),
                    sys.getSysId(), MenuItemType.FOLDER, pleaseSelect);
            this.resetPleaseSelectDataMapFromLocaleLang(sysProgMap);
            for (Map.Entry<String, String> entry : sysProgMap.entrySet()) {
                Map<String, String> dataMap = new HashMap<String, String>();
                dataMap.put("key", entry.getKey());
                dataMap.put("value", entry.getValue());
                this.items.add(dataMap);
            }
            this.success = IS_YES;
        }
        if ("SYS_PROG_IN_MENU".equals(this.getFields().get("type"))) { // ? sys_prog.prog_id  tb_sys_menu  
            String sysOid = this.getFields().get("sysOid");
            SysVO sys = this.loadSysValueObj(sysOid);
            List<SysProgVO> menuProgList = this.sysProgService.findForInTheFolderMenuItems(sys.getSysId(), null,
                    null);
            //this.items.add(super.providedSelectZeroDataMap(true));
            Map<String, String> dataMapFirst = new HashMap<String, String>();
            dataMapFirst.put("key", Constants.HTML_SELECT_NO_SELECT_ID);
            dataMapFirst.put("value", Constants.HTML_SELECT_NO_SELECT_NAME);
            this.resetPleaseSelectDataMapFromLocaleLang(dataMapFirst);
            this.items.add(dataMapFirst);
            if (menuProgList != null) {
                for (SysProgVO sysProg : menuProgList) {
                    Map<String, String> dataMap = new HashMap<String, String>();
                    dataMap.put("key", sysProg.getOid());
                    dataMap.put("value", IconUtils.getMenuIcon(super.getBasePath(), sysProg.getIcon())
                            + StringEscapeUtils.escapeHtml4(sysProg.getName()));
                    this.items.add(dataMap);
                }
            }
            this.success = IS_YES;
        }
    }

    /**
     * core.commonSelectItemsDataAction.action
     */
    @ControllerMethodAuthority(programId = "CORE_COMMON")
    public String execute() throws Exception {
        try {
            this.queryItems();
        } catch (ControllerException ce) {
            this.message = ce.getMessage().toString();
        } catch (AuthorityException ae) {
            this.message = ae.getMessage().toString();
        } catch (ServiceException se) {
            this.message = se.getMessage().toString();
        } catch (Exception e) { //  JSON ? throw e 
            e.printStackTrace();
            this.message = e.getMessage().toString();
            this.logger.error(e.getMessage());
            this.success = IS_EXCEPTION;
        }
        return SUCCESS;
    }

    @JSON
    @Override
    public List<Map<String, String>> getItems() {
        return items;
    }

    @JSON
    @Override
    public String getPageOfShowRow() {
        return super.getPageOf().getShowRow();
    }

    @JSON
    @Override
    public String getPageOfSelect() {
        return super.getPageOf().getSelect();
    }

    @JSON
    @Override
    public String getPageOfCountSize() {
        return super.getPageOf().getCountSize();
    }

    @JSON
    @Override
    public String getPageOfSize() {
        return super.getPageOf().getSize();
    }

    @JSON
    @Override
    public String getLogin() {
        return super.isAccountLogin();
    }

    @JSON
    @Override
    public String getIsAuthorize() {
        return super.isActionAuthorize();
    }

    @JSON
    @Override
    public String getMessage() {
        return this.message;
    }

    @JSON
    @Override
    public String getSuccess() {
        return this.success;
    }

    @JSON
    @Override
    public List<String> getFieldsId() {
        return this.fieldsId;
    }

    @JSON
    @Override
    public Map<String, String> getFieldsMessage() {
        return this.fieldsMessage;
    }

}