Map<UUID, Template> allTemplateMap = new HashMap<UUID, Template>();
Map<UUID, Map<String, String>> templateFieldNameMap = new HashMap<UUID, Map<String,String>>();
for (Map<String, String> colValueMap : colValueMapList) {
Data data = new DataImpl();
UUID dataId = DataAccessFactory.getInstance().createUUID(colValueMap.get("id"));
UUID templateId = DataAccessFactory.getInstance().createUUID(colValueMap.get("templateId"));
Map<UUID, Object> objectMapUUID = new HashMap<UUID, Object>();
Map<String, Object> objectMapName = new HashMap<String, Object>();
data.setId(dataId);
data.setTemplateId(templateId);
data.setTemplateTypeId(DataAccessFactory.getInstance().createUUID(colValueMap.get("templateTypeId")));
data.setTitle(colValueMap.get("title"));
data.setDescription(colValueMap.get("description"));
data.setCreateUser(colValueMap.get("createUser"));
data.setCreateTime(colValueMap.get("createTime") == null ? null:Timestamp.valueOf(colValueMap.get("createTime")));
data.setLastModifyTime(colValueMap.get("lastModifyTime") == null ? null : Timestamp.valueOf(colValueMap.get("lastModifyTime")));
data.setAssignUser(colValueMap.get("assignUser"));
data.setStatusId(DataAccessFactory.getInstance().createUUID(colValueMap.get("statusId")));
if (allTemplateMap.get(templateId) == null) {
Template template = TemplateCache.getInstance().get(templateId);
if (template != null) {
allTemplateMap.put(templateId, template);
}
}
Template template = allTemplateMap.get(templateId);
for (String colName : colValueMap.keySet()) {
Field validField = null;
try {
if (colName.startsWith("field") && colValueMap.get(colName) != null && colValueMap.get(colName).length() > 0) {
String fieldIdStr = "";
if (templateFieldNameCache == null ) {
if (templateFieldNameMap.get(templateId) == null) {
Map<String, String> fieldNameMap = new FieldNameAccessSessionMySQL().queryTemplateFieldMap(templateId.getValue());
templateFieldNameMap.put(templateId, fieldNameMap);
}
fieldIdStr = templateFieldNameMap.get(templateId).get(colName);
}else {
fieldIdStr = templateFieldNameCache.get(colName);
}
UUID fieldId = DataAccessFactory.getInstance().createUUID(fieldIdStr);
validField = template.getField(fieldId);
if (validField == null) {
// System.out.println("can not find field in assembleData ,fieldIdStr :" + fieldIdStr );
continue;
}
if (validField.getType().equals(Type.t_selection))
{
if (validField.getDataType().equals(DataType.dt_single))
{
UUID dataValidId = DataAccessFactory.getInstance().createUUID(colValueMap.get(colName));
objectMapUUID.put(fieldId, dataValidId);
objectMapName.put(validField.getName(), dataValidId);
}
else if (validField.getDataType().equals(DataType.dt_multiple))
{
String [] alldatas = colValueMap.get(colName).split(",");
UUID[] dataValidIds = new UUID[alldatas.length];
for (int i = 0; i < alldatas.length; i++) {
dataValidIds[i] = DataAccessFactory.getInstance().createUUID(alldatas[i]);
}
objectMapUUID.put(fieldId, dataValidIds);
objectMapName.put(validField.getName(), dataValidIds);
}
}
else if (validField.getType().equals(Type.t_reference))
{
if (validField.getDataType().equals(DataType.dt_single))
{
UUID dataValidId = DataAccessFactory.getInstance().createUUID(colValueMap.get(colName));
objectMapUUID.put(fieldId, dataValidId);
objectMapName.put(validField.getName(), dataValidId);
}
else if (validField.getDataType().equals(DataType.dt_multiple))
{