package com.vci.client.uif.actions.client; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.swing.JOptionPane; import com.vci.client.bof.ClientBusinessObject; import com.vci.client.bof.ClientLinkObject; import com.vci.client.ui.swing.VCIOptionPane; import com.vci.client.ui.swing.components.VCIJOptionPane; import com.vci.client.uif.engine.common.IDataNode; import com.vci.mw.ClientContextVariable; /** * 业务类型删除按钮事件 * 参数信息为: * oid(对象ID) * btmname(对象类型) * @author VCI-STGK006 * */ public class DeleteAction extends AbstractBatchBusionessOperationAction { /** * 操作方法集合 */ private UIFUtils operation = new UIFUtils(); public DeleteAction(){ super(); } @Override public String getKey() { return DEL; } @Override public boolean checkHasRight(){ // 按BO进行数据权限检查 setDataRightCheckType(RightCheckConstants.RIGHT_CHECK_TYPE_B); return super.checkHasRight(); } @Override public boolean beforePost() { boolean res = super.beforePost(); if(!res) return res; // 删除前,给出提示 if(getQuestionDialogResult("您确定要执行删除操作吗") == VCIJOptionPane.OK_OPTION){ res = true; } else { res = false; } return res; } @SuppressWarnings("rawtypes") @Override public boolean doPost() { Object[] objs = getDataModel().getSelectObjects(); //XXX 对于业务对象是删除版本、版次、主对象没有办法识别,暂时设置为删除版次 //type 删除类型 1:版次对象;2:版本对象;3:主对象 int deleteTeyp = 1; //无数据 if(objs == null || objs.length < 1){ return false; } //modify 2014.03.07 start List cboList = new ArrayList(); for(int i = 0; i < objs.length; i++){ if(objs[i] instanceof Map){ //做一个特殊处理,当选择值是一个Map时,获得Map中的OID和BtmName属性 String oid = (String) ((Map)objs[i]).get("OID"); String btmName = (String) ((Map)objs[i]).get("BTMNAME"); String ts = (String)((Map)objs[i]).get("TS"); if(oid != null && !oid.equals("") && btmName != null && !btmName.equals("") && ts != null && !ts.equals("")){ ClientBusinessObject cbo = new ClientBusinessObject(); cbo.setOid(oid); cbo.setBtmName(btmName); cbo.setTs(Long.valueOf(ts)); cbo.setLastModifier(ClientContextVariable.getInvocationInfo().userName); cboList.add(cbo); } } else if(objs[i] instanceof IDataNode){ IDataNode dtn = (IDataNode) objs[i]; try { //判断主对象类型 if(dtn.getMaterObject() instanceof ClientBusinessObject){ //如果是业务类型 ClientBusinessObject cbo = (ClientBusinessObject) dtn.getMaterObject(); if(cbo == null){ int confirm = VCIOptionPane.showConfirmDialog( ClientContextVariable.getFrame(), "“" + this.getParameterValue(ValueType.RuntimeData, "name", i) +"”不存在或者已经被删除.\n是否继续执行删除操作?", "系统提示",JOptionPane.YES_NO_OPTION); if(confirm == JOptionPane.NO_OPTION){ return false; } } cboList.add(cbo); } else if (dtn.getMaterObject() instanceof ClientLinkObject){ //如果是link类型 String oid = this.getParameterValue(ValueType.RuntimeData, "t_oid", i); String btmName = this.getParameterValue(ValueType.RuntimeData, "t_btwname", i); //如果操作所需参数不存在则直接停止操作 if(oid == null || oid.equals("") ||btmName == null || btmName.equals("")){ UIFUtils.showMessage(ClientContextVariable.getFrame(), "uifmodel.plm.uif.actions.syserror.parmerror.bo"); return false; } //需要重新下载cbo对象 ClientBusinessObject cbo = operation .reloadClientBusinessObject(ClientContextVariable.getFrame(), oid, btmName); System.out.println("** TS:" + cbo.getBusinessObject().ts); //对象不存在或者已经被删除 if(cbo.getBusinessObject().oid == null || cbo.getBusinessObject().oid.equals("")){ int confirm = VCIOptionPane.showConfirmDialog( ClientContextVariable.getFrame(), "“" + this.getParameterValue(ValueType.RuntimeData, "t_oid.name", i) +"”不存在或者已经被删除.\n是否继续执行删除操作?", "系统提示",JOptionPane.YES_NO_OPTION); if(confirm == JOptionPane.NO_OPTION){ return false; } } else { cboList.add(cbo); } } else if (dtn.getMaterObject() instanceof String){ UIFUtils.showMessage(ClientContextVariable.getFrame(), "uifmodel.plm.uif.engine.folder.root.delete", ""); return false; } } catch (Exception e){ UIFUtils.showErrorMessage( ClientContextVariable.getFrame(), "uifmodel.plm.uif.actions.editboerror", e); int confirm = VCIOptionPane.showConfirmDialog(ClientContextVariable.getFrame(),"系统加载对象“" + dtn.getValueMap().get("name") +"”时发生异常.“" + this.getParameterValue(ValueType.RuntimeData, "name", i) + "”删除操作可能会失败\n是否继续执行删除操作?", "系统提示",JOptionPane.YES_NO_OPTION); if(confirm == JOptionPane.NO_OPTION){ return false; } } } } //modify 2014.03.07 end //得到需要删除的业务对象 boolean success = false; if(!cboList.isEmpty()){ if(cboList.size() == 1){ //单个删除 success = operation.deleteBusinessObject( ClientContextVariable.getFrame(), cboList.get(0), deleteTeyp); } else { //批量删除 success = operation.batchDeleteBuinessObject( ClientContextVariable.getFrame(), cboList.toArray( new ClientBusinessObject[0]), deleteTeyp); } } return success; } }