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 prmMap, List> 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> itor = cols.iterator(); PRMItem prm = prmMap.get(columnName); String columForRebuild = prm.getItemValue(); // 如果用户名参数不为空,则按定义的 if(param != null && !"".equals(param)){ columForRebuild = param; } while (itor.hasNext()) { Map 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); } } }