ButtonDetailAction.java

package com.mycim.webapp.actions.setting.security.button;

import com.fa.sesa.exception.Assert;
import com.fa.sesa.exception.Errors;
import com.fa.sesa.threadlocal.LocalContext;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.valueobject.MessageIdList;
import com.mycim.valueobject.ObjectList;
import com.mycim.valueobject.consts.TransactionNames;
import com.mycim.valueobject.security.Button;
import com.mycim.webapp.actions.SystemSetupAction;
import com.mycim.webapp.forms.security.ButtonDetailForm;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 按钮定义功能
 *
 * @author Pinyan Song
 * @version 0.0.1
 * @since 2019-8-19 14:33
 **/
public class ButtonDetailAction extends SystemSetupAction {

    @Override
    public ActionForward init(ActionMapping mapping, ActionForm form, HttpServletRequest request,
                              HttpServletResponse response) throws Exception {
        return mapping.getInputForward();
    }

    public List<Button> queryType(ButtonDetailForm theForm) {
        Long menuRrn = getInstanceRrn(StringUtils.trim(theForm.getMenuId()), LocalContext.getFacilityRrn(),
                                      ObjectList.MENU_KEY);

        Assert.isFalse(menuRrn <= 0,
                       Errors.create().key(MessageIdList.MENU_MISSING_INSTANCERRN).content("菜单的instancerrn不存在!")
                             .build());
        return securityService.getAllButtons(menuRrn);
    }

    public void addType(ButtonDetailForm detailForm) {
        String buttonId = StringUtils.trimToUpperCase(detailForm.getButtonId());
        String menuId = StringUtils.trimToUpperCase(detailForm.getMenuId());
        String buttonDesc = detailForm.getButtonDesc();
        Assert.isFalse(StringUtils.isEmpty(menuId),
                       Errors.create().key(MessageIdList.MENU_ID_NOT_EMPTY).content("菜单号不能为空!").build());
        Assert.isFalse(StringUtils.isEmpty(buttonId),
                       Errors.create().key(MessageIdList.BUTTON_ID_NOT_EMPTY).content("Button Id cannot be empty!")
                             .build());
        Assert.isFalse(StringUtils.isEmpty(buttonDesc),
                       Errors.create().key(MessageIdList.BUTTON_DESC_NOT_EMPTY).content("Button Desc cannot be empty!")
                             .build());

        long buttonRrn = getInstanceRrn(buttonId, LocalContext.getFacilityRrn(), ObjectList.BUTTON_KEY);
        Assert.isFalse(buttonRrn > 0,
                       Errors.create().key(MessageIdList.BUTTON_ID_ALREADY_EXISTS).content("按钮已存在!").build());
        Long menuRrn = getInstanceRrn(menuId, LocalContext.getFacilityRrn(), ObjectList.MENU_KEY);
        Assert.isFalse(menuRrn <= 0, Errors.create().key(MessageIdList.MENU_MISSING_ID).content("菜单号不存在!").build());

        Button button = new Button(buttonId, getNamedSpace(ObjectList.BUTTON_KEY, LocalContext.getFacilityRrn()),
                                   ObjectList.BUTTON_KEY);
        button.setInstanceDesc(buttonDesc);
        button.setMenuRrn(menuRrn);
        button.setTransId("CREATE");
        button.setTransPerformedby(LocalContext.getUserId());
        securityService.addButton(button);
    }

    public void modifyType(ButtonDetailForm detailForm) {
        String menuId = StringUtils.trimToUpperCase(detailForm.getMenuId());
        Long menuRrn = getInstanceRrn(menuId, LocalContext.getFacilityRrn(), ObjectList.MENU_KEY);
        Assert.isFalse(menuRrn <= 0, Errors.create().key(MessageIdList.MENU_MISSING_ID).content("菜单号不存在!").build());

        String buttonId = StringUtils.trimToUpperCase(detailForm.getButtonId());
        long buttonRrn = getInstanceRrn(buttonId, LocalContext.getFacilityRrn(), ObjectList.BUTTON_KEY);
        Button button = new Button(buttonId, getNamedSpace(ObjectList.BUTTON_KEY, LocalContext.getFacilityRrn()),
                                   ObjectList.BUTTON_KEY);

        String buttonDesc = detailForm.getButtonDesc();
        Assert.isFalse(StringUtils.isEmpty(buttonDesc),
                       Errors.create().key(MessageIdList.BUTTON_DESC_NOT_EMPTY).content("Button Desc cannot be empty!")
                             .build());
        button.setInstanceRrn(buttonRrn);
        button.setInstanceDesc(buttonDesc);
        securityService.updateButton(button);

    }

    public void deleteType(ButtonDetailForm detailForm) {
        String buttonId = StringUtils.trimToUpperCase(detailForm.getButtonId());
        long buttonRrn = detailForm.getButtonRrn();
        Button button = new Button(buttonId, getNamedSpace(ObjectList.BUTTON_KEY, LocalContext.getFacilityRrn()),
                                   ObjectList.BUTTON_KEY);
        button.setInstanceRrn(buttonRrn);
        button.setTransId(TransactionNames.DELETE_KEY);
        button.setTransPerformedby(LocalContext.getUserId());
        securityService.deleteButton(button);
    }

}