package com.vci.client.portal.custom;
|
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.Iterator;
|
import java.util.List;
|
import java.util.Map;
|
|
import com.vci.omd.constants.FileObjectType;
|
import com.vci.omd.utils.ObjectTool;
|
import com.vci.client.portal.custom.CommonFileUI;
|
import com.vci.client.portal.custom.ICommonFileUI;
|
import com.vci.client.portal.custom.ICustomDefine;
|
import com.vci.client.portal.utility.PRMItem;
|
import com.vci.corba.common.VCIError;
|
import com.vci.corba.omd.data.BusinessObject;
|
|
public class CustomFileInterceptor implements ICustomDefine{
|
|
@Override
|
public void getCustomValue(String key, Map<String, PRMItem> customMap, List<Map<String, String>> datas) throws VCIError {
|
Iterator<String> itor = customMap.keySet().iterator();
|
while (itor.hasNext()) {
|
String ckey = itor.next();
|
PRMItem prm = customMap.get(ckey);
|
String fieldType = prm.getItemType();
|
List<String> fileIds = new ArrayList<String>();
|
for (Map<String, String> data : datas) {
|
String value = data.get(ckey);
|
if (value == null || value.trim().equals("")) {
|
continue;
|
}
|
fileIds.add(value);
|
}
|
ICommonFileUI fileUI = new CommonFileUI();
|
BusinessObject[] bos = fileUI.getMultiObjectFiles((String[]) fileIds
|
.toArray(new String[0]));
|
Map<String, List<BusinessObject>> idsMap = new HashMap<String, List<BusinessObject>>();
|
for (BusinessObject bo : bos) {
|
String fileId = ObjectTool.getBOAttributeValue(bo, FileObjectType.SELECT_DOCUMENT_ID);
|
List<BusinessObject> idList = idsMap.get(fileId);
|
if (idList == null) {
|
idList = new ArrayList<BusinessObject>();
|
}
|
idList.add(bo);
|
idsMap.put(fileId, idList);
|
}
|
for (Map<String, String> data : datas) {
|
String value = data.get(ckey);
|
if (value == null || value.trim().equals("")) {
|
data.put(fieldType + ":" + ckey.toLowerCase(), "");
|
continue;
|
}
|
List<BusinessObject> idList = idsMap.get(value);
|
if (idList == null || idList.size() == 0) {
|
data.put(fieldType + ":" + ckey.toLowerCase(), "");
|
continue;
|
}
|
StringBuffer idBuffer = new StringBuffer();
|
for (int i = 0; i < bos.length; ++i) {
|
if (i != 0) {
|
idBuffer.append(",");
|
}
|
idBuffer.append(bos[i].oid).append(":").append(bos[i].name);
|
}
|
data.put(fieldType + ":" + ckey.toLowerCase(), idBuffer.toString());
|
}
|
}
|
}
|
|
}
|