wangting
2024-09-27 a3e87f78ee262ca9bb7d9b0c997639d5f3295890
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package com.vci.client.uif.actions.client.folder;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import com.vci.client.bof.ClientBusinessObject;
import com.vci.client.common.oq.OQTool;
import com.vci.client.oq.QTClient;
import com.vci.client.uif.actions.client.UIFUtils;
import com.vci.client.uif.engine.common.IDataNode;
import com.vci.common.qt.object.Condition;
import com.vci.common.qt.object.QueryTemplate;
import com.vci.corba.common.VCIError;
import com.vci.corba.omd.data.BusinessObject;
/**
 * 文件夹导航控制处理类
 * @author xiongchao
 *
 */
public class FolderNavigatoryController {
    /**
     * 返回目标上下文
     * @param obj
     * @return 目标上下文
     */
    public String getContextName(Object obj){
        String res = "";
        ClientBusinessObject cbo = getFolderCBO(obj);
        if(cbo != null){
            try {
                ClientBusinessObject[] cbos = getFolderContextMappings(cbo);
                if(cbos != null && cbos.length > 0){
                    res = cbos[0].getAttributeValue("context");
                }
            } catch (VCIError e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return res;
    }
    
    protected ClientBusinessObject getFolderCBO(Object obj){
        ClientBusinessObject cbo = null;
        if(obj instanceof IDataNode){
            IDataNode dataNode = (IDataNode)obj;
            if(dataNode.getMaterObject() instanceof ClientBusinessObject){
                cbo = (ClientBusinessObject)dataNode.getMaterObject();
            }
        }
        return cbo;
    }
    
    protected Map<String, String> getConditionMap(){
        Map<String, String> conditionMap = new HashMap<String, String>();
        return conditionMap;
    }
    
    protected ClientBusinessObject[] getFolderContextMappings(ClientBusinessObject cbo) throws VCIError{
        Map<String, String> conditionMap = getConditionMap();
        conditionMap.put("ownedfolder", cbo.getAttributeValue("oid"));
        QueryTemplate qt = getQueryTemplate("folderctxmapping", conditionMap);
        BusinessObject[] bos = QTClient.getService().findBTMObjects(qt.getId(),  OQTool.qtTOXMl(qt).asXML());
        ClientBusinessObject[] cbos = UIFUtils.convertBOs(bos);
        return cbos;
    }
    
    protected QueryTemplate getQueryTemplate(String btmType, Map<String, String> conditionMap){
        QueryTemplate qt = new QueryTemplate();
        qt.setType("btm");
        qt.setBtmType(btmType);
        qt.setId("id");
        List<String> clauseList = new ArrayList<String>();
        clauseList.add("*");
        qt.setClauseList(clauseList);
        Condition condition = OQTool.getCondition(conditionMap);
        qt.setCondition(condition);
        return qt;
    }
}