public static SimulationResponse getSimulationResponse() { Map<String, List<String[]>> status = simulationService.getSimulationStatus(); int entryCount = 0; Map<Integer, HandlerExecutionStatus> executionStatusMap = new HashMap<Integer, HandlerExecutionStatus>(); if (status != null) { for (Map.Entry<String, List<String[]>> e : status.entrySet()) { if (e.getKey() != null && e.getValue() != null) { if (e.getValue().size() > 0) { for (String[] v : e.getValue()) { if (v != null && v.length == 2) { HandlerExecutionStatus executionStatus = new HandlerExecutionStatus(); executionStatus.setHandlerName(e.getKey()); executionStatus.setExecutionStatus(v[0]); int order = Integer.parseInt(v[1]); executionStatusMap.put(order, executionStatus); if (order > entryCount) { entryCount = order; } } } } } } } List<HandlerExecutionStatus> executionStatusList = new LinkedList<HandlerExecutionStatus>(); int i = 0; while (i < entryCount) { i++; HandlerExecutionStatus executionStatus = executionStatusMap.get(i); if (executionStatus != null) { executionStatusList.add(executionStatus); } } SimulationResponse response = new SimulationResponse(); response.setStatus( executionStatusList.toArray(new HandlerExecutionStatus[executionStatusList.size()])); return response; }