HashMap<String, Model> labels = new HashMap<String, Model>();
for(int i=0; i< rows.length(); i++){
JSONObject obj = (JSONObject)rows.get(i);
Model model = new Model();
//always present guiId
String guiId = obj.getString("id");
model.setGuiId(guiId);
try{
model.setId(obj.getInt("modelId"));
}catch(Throwable t){
//nothing
model.setId(null);
}
try{
model.setParentId(obj.getInt("parentId"));
}catch(Throwable t){
//nothing
model.setParentId(null);
}
try{
model.setCode(obj.getString("code"));
try{
model.setDescription(obj.getString("description"));
}catch(Throwable t){
//nothing
model.setDescription(null);
}
String labelKey ;
try{
labelKey = obj.getString("label");
}catch(Throwable t){
labelKey = java.util.UUID.randomUUID().toString();
}
model.setLabel(labelKey);
if(!labels.containsKey(labelKey)){
labels.put(labelKey, model);
}else{
//skip it
continue;
}
model.setName(obj.getString("name"));
model.setTypeCd(obj.getString("type"));
model.setTypeId(obj.getInt("typeId"));
try{
model.setTypeDescription(obj.getString("typeDescr"));
}catch(Throwable t){
//nothing
model.setTypeDescription(null);
}
try{
model.setKpiId(obj.getInt("kpiId"));
}catch(Throwable t){
//nothing
model.setKpiId(null);
}
// add the udpValues to Model Instance Definition, that will be serialized
List<UdpValue> udpValues = new ArrayList<UdpValue>();
JSONArray jsonArray = null;
try{
jsonArray = obj.getJSONArray("udpValues");
}catch(Throwable t){
jsonArray = new JSONArray();
}
logger.debug("found udpValues Array containing number of Udp "+jsonArray.length());
for(int j=0; j< jsonArray.length(); j++){
JSONObject objJS = (JSONObject)jsonArray.get(j);
// only label and value information are retrieved by JSON object
String labelJ = objJS.getString("name");
String value = objJS.getString("value");
UdpValue udpValue = new UdpValue();
// reference id is the kpi id
udpValue.setLabel(obj.getString("label"));
udpValue.setValue(value);
udpValue.setReferenceId(model.getId());
// get the UDP to get ID (otherwise could be taken in js page)
Udp udp = DAOFactory.getUdpDAO().loadByLabelAndFamily(labelJ, "MODEL");
Domain familyDomain = DAOFactory.getDomainDAO().loadDomainById(udp.getFamilyId());
logger.debug("Udp value assigning value "+value+" to UDP with label "+udp.getLabel()+ " and Model Instance with label "+ model.getLabel());
udpValue.setLabel(udp.getLabel());
udpValue.setName(udp.getName());
udpValue.setFamily(familyDomain != null ? familyDomain.getValueCd() : null);
udpValue.setUdpId(udp.getUdpId());
udpValues.add(udpValue);
}
model.setUdpValues(udpValues);
String value = obj.getString("toSave");
}catch(Throwable t){
logger.debug("Deserialization error on node: "+guiId);
}