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.ClientBusinessObjectOperation;
|
import com.vci.client.bof.ClientLinkObject;
|
import com.vci.client.ui.swing.VCIOptionPane;
|
import com.vci.client.uif.engine.common.DefaultTableNode;
|
import com.vci.mw.ClientContextVariable;
|
|
/**
|
* 升级版本操作
|
* 参数信息:
|
* oid(升版对象的oid)
|
* btmname(升版对象的类型)
|
* name(升版对象的名称、用于显示信息)
|
* @author VCI-STGK006
|
*
|
*/
|
public class RevisionAction extends AbstractBatchBusionessOperationAction {
|
|
/**
|
* 方法集合
|
*/
|
UIFUtils operation =
|
new UIFUtils();
|
|
private ClientBusinessObjectOperation boOperation = new ClientBusinessObjectOperation();
|
|
public RevisionAction(){
|
super();
|
}
|
|
@Override
|
public String getKey() {
|
return REVISION;
|
}
|
|
@Override
|
public boolean checkHasRight(){
|
// 按LBO进行数据权限检查
|
setDataRightCheckType(RightCheckConstants.RIGHT_CHECK_TYPE_B);
|
return super.checkHasRight();
|
}
|
|
@Override
|
public boolean doPost() {
|
//获得按钮参数,校验并设置默认值
|
Map<String, String> params = getButtonParams();
|
boolean direction = true;//如果是link是,是对from还是to进行升版
|
boolean copyLink = false;//是否复制链接
|
String linkType = "";//复制链接的名称
|
String linkdirection = "to";
|
if(params.containsKey("direction")
|
&& params.get("direction").trim().equalsIgnoreCase("false")) {
|
direction = false;
|
}
|
if(params.containsKey("copylink")
|
&& params.get("copylink").trim().equalsIgnoreCase("true")) {
|
copyLink = true;
|
}
|
if(copyLink) {
|
linkType = params.get("linktype");
|
if(linkType == null || linkType.trim().equals("")) {
|
UIFUtils.showMessage(ClientContextVariable.getFrame(),
|
"uifmodel.plm.uif.actions.syserror.configerror.paramserror", "linktype");
|
return false;
|
}
|
if(params.containsKey("linkdirection")) {
|
linkdirection = params.get("linkdirection").trim();
|
if(!linkdirection.equalsIgnoreCase("from")
|
&& !linkdirection.equalsIgnoreCase("to")
|
&& !linkdirection.equalsIgnoreCase("all")) {
|
UIFUtils.showMessage(ClientContextVariable.getFrame(),
|
"uifmodel.plm.uif.actions.syserror.configerror.paramserror", "linkdirection");
|
return false;
|
}
|
}
|
}
|
//获得业务对象数据
|
Object[] objs = getDataModel().getSelectObjects();
|
if(objs == null || objs.length < 1){
|
return false;
|
}
|
|
List<ClientBusinessObject> cboList = new ArrayList<ClientBusinessObject>();
|
for(int i = 0; i < objs.length; i++){
|
DefaultTableNode dtn = (DefaultTableNode) objs[i];
|
try {
|
//判断主对象类型
|
if(dtn.getMaterObject() instanceof ClientBusinessObject){
|
//如果是业务类型
|
ClientBusinessObject tempCbo = (ClientBusinessObject) dtn.getMaterObject();
|
String oid = tempCbo.getBusinessObject().oid;
|
String btmName = tempCbo.getBusinessObject().btName;
|
String name = tempCbo.getBusinessObject().name;
|
if(name == null || name.equals("")){
|
name = "选择的第" + (i + 1) + "行数据";
|
}
|
ClientBusinessObject cbo = boOperation.readBusinessObjectById(oid, btmName);
|
if(cbo == null){
|
int confirm = VCIOptionPane.showConfirmDialog(ClientContextVariable.getFrame(), ""
|
+ name
|
+ "不存在或者已经被删除,继续执行升版操作系统将会忽略该对象"
|
+".\n是否继续执行升版操作?", "系统提示",JOptionPane.YES_NO_OPTION);
|
if(confirm == JOptionPane.NO_OPTION || objs.length == 1){
|
return false;
|
}
|
}
|
cboList.add(cbo);
|
} else if (dtn.getMaterObject() instanceof ClientLinkObject){
|
//如果是link类型
|
ClientLinkObject tempLink = (ClientLinkObject) dtn.getMaterObject();
|
String oid = "";
|
String btmName = "";
|
String name = "";
|
if (direction) {
|
oid = tempLink.getLinkObject().toOid;
|
btmName = tempLink.getLinkObject().toBTName;
|
name = dtn.getValueMap().get("t_oid.name");
|
} else {
|
oid = tempLink.getLinkObject().fromOid;
|
btmName = tempLink.getLinkObject().fromBTName;
|
name = dtn.getValueMap().get("f_oid.name");
|
}
|
if(name == null || name.equals("")){
|
name = "选择的第" + (i + 1) + "行数据";
|
}
|
//如果操作所需参数不存在则直接停止操作
|
//正常的数据不会出现这种情况
|
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 = boOperation.readBusinessObjectById(oid, btmName);
|
//对象不存在或者已经被删除
|
if(cbo == null || cbo.getBusinessObject().oid == null
|
|| cbo.getBusinessObject().oid.equals("")){
|
int confirm = VCIOptionPane.showConfirmDialog(ClientContextVariable.getFrame(), ""
|
+ name
|
+ "不存在或者已经被删除,继续执行升版操作系统将会忽略该对象"
|
+".\n是否继续执行升版操作?", "系统提示",JOptionPane.YES_NO_OPTION);
|
if(confirm == JOptionPane.NO_OPTION || objs.length == 1){
|
return false;
|
}
|
} else {
|
cboList.add(cbo);
|
}
|
}
|
|
} catch (Exception e){
|
UIFUtils.showErrorMessage(
|
ClientContextVariable.getFrame(), "uifmodel.plm.uif.actions.editboerror", e);
|
int confirm = VCIOptionPane.showConfirmDialog(ClientContextVariable.getFrame(),
|
"系统在加载对象时发生异常,升级版本操作可能会失败\n是否继续执行升级版本操作?",
|
"系统提示",JOptionPane.YES_NO_OPTION);
|
if(confirm == JOptionPane.NO_OPTION){
|
return false;
|
}
|
}
|
}
|
|
//得到需要升版的业务对象 当为多个时 有升级成功的就算成功
|
boolean success = false;
|
try {
|
if(!cboList.isEmpty()){
|
batchRevisonBusinessObject(cboList, copyLink, linkType, linkdirection);
|
success = true;
|
}
|
if(success){
|
UIFUtils.showMessage(ClientContextVariable.getFrame(),
|
"uifmodel.plm.uif.actions.revisionsuccessmsg");
|
}
|
} catch (Exception e) {
|
UIFUtils.showErrorMessage(ClientContextVariable.getFrame(), e);
|
}
|
return success;
|
}
|
|
/**
|
* 升级版本
|
* @param cboList 待升版对象
|
* @param linkTypes 复制link的类型
|
* @param copyLink 是否复制link
|
* @param linkdirection 复制哪端的link
|
* @throws Exception
|
*/
|
private void batchRevisonBusinessObject(List<ClientBusinessObject> cboList,
|
boolean copyLink, String linkTypes, String linkdirection) throws Exception {
|
if(copyLink) {
|
String[] linkType = linkTypes.split(",");
|
boolean isRev = true;
|
boolean isSave = true;
|
boolean isFromLinkCopy = false;
|
boolean isToLinkCopy = false;
|
if(linkdirection.equalsIgnoreCase("to")) {
|
isFromLinkCopy = true;
|
} else if (linkdirection.equalsIgnoreCase("from")) {
|
isToLinkCopy = true;
|
} else if (linkdirection.equalsIgnoreCase("all")) {
|
isFromLinkCopy = true;
|
isToLinkCopy = true;
|
}
|
for(ClientBusinessObject cbo : cboList) {
|
boOperation.revisionBusinessObject(
|
cbo, linkType, isRev, isSave, isFromLinkCopy, isToLinkCopy);
|
}
|
} else {
|
//获得OID列表
|
String[] oids = new String[cboList.size()];
|
String btmName = "";
|
for(int i = 0; i < cboList.size(); i++) {
|
ClientBusinessObject cbo = cboList.get(i);
|
if(btmName.equals("")) {
|
btmName = cbo.getBusinessObject().btName;
|
}
|
oids[i] = cbo.getBusinessObject().oid;
|
}
|
boOperation.batchRevisonBusinessObject(oids, btmName);
|
}
|
}
|
}
|