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
package com.vci.client.uif.engine.client.renderer;
 
import java.util.Iterator;
import java.util.List;
import java.util.Map;
 
import com.vci.client.common.objects.UserObject;
import com.vci.client.portal.utility.PRMItem;
import com.vci.client.uif.engine.common.UserObjectMap;
import com.vci.corba.common.VCIError;
 
/**
 * Table中用户名列自定义显示处理类
 * @author xiongchao
 *
 */
public class UserNameInTableCellRenderer extends CustomColumnRenderer{
 
    public UserNameInTableCellRenderer(){
        super();
    }
    
    @Override
    public void getCustomValue(String columnName, Map<String, PRMItem> prmMap,
            List<Map<String, String>> cols) throws VCIError {
        // 尝试检查key中是否有参数,如果有则截取参数(用户名所在属性的key)
        String param = "";
        int paramIndex = columnName.indexOf("?");
        if(paramIndex > 0){
            param = columnName.substring(paramIndex + 1);
            columnName = columnName.substring(0, paramIndex);
        }
        Iterator<Map<String, String>> itor = cols.iterator();
        PRMItem prm = prmMap.get(columnName);
        String columForRebuild = prm.getItemValue();
        // 如果用户名参数不为空,则按定义的
        if(param != null && !"".equals(param)){
            columForRebuild = param;
        }
        while (itor.hasNext()) {
            Map<String, String> map = itor.next();
            String accoutNum = map.get(prm.getItemField());    // 优先根据属性定义的名称从valuemap中取值
            if(accoutNum == null || accoutNum.equals("")){
                accoutNum = map.get(columForRebuild);        // 如果没有取到值,则按传入的key从valuemap中取值
                if(accoutNum == null || accoutNum.equals("")){
                    continue;
                }
            }
 
            UserObject useObj = UserObjectMap.getInstance().getUserObjectByName(accoutNum);
            if(useObj == null){
                map.put(columnName, accoutNum);
                continue;
            }
 
            //通过账号获取用户名。
            String trueName = useObj.getTrueName();
            String showName = "";
            //构建新的字符串
            if(trueName != null && !trueName.equals("")){
                showName = accoutNum +"("+ trueName +")";
            }else{
                showName = accoutNum;
            }
            //将新的字符串put进map。
            map.put(columnName, showName);
        }
    }
 
}