private static List<ReconcilationDTO> getDTO(String line, List<Order> orders) { List<ReconcilationDTO> result = new ArrayList<ReconcilationDTO>(); String[] parts = StringUtil.split(line, "|"); if (parts != null) { if (parts[0].equals("1")) { try { int count = 0; for (String part : parts) { if (part.contains("FS")) { part = part.replace("FS ", "FS") .replace("AND ", "") .replace("-", " ") .replace("REF:", "") .replace(",", " "); String as[] = StringUtil.split(part, " "); for (String documentNumber : as) { if (documentNumber != null && documentNumber.trim().length() > 0) { ReconcilationDTO dto = new ReconcilationDTO(); dto.setRefNumber(documentNumber.trim()); result.add(dto); } } } } if (result.size() == 0) { ReconcilationDTO dto = new ReconcilationDTO(); dto.setRefNumber(""); dto.setComment("No reference number"); dto.setName(line); result.add(dto); } for (String part : parts) { if (part.toLowerCase().contains("bank")) { for (ReconcilationDTO dto : result) dto.setBank(part); } else if (part.equalsIgnoreCase("MUR")) { for (ReconcilationDTO dto : result) dto.setAmount(parts[count + 1]); } else if (count == 3) { for (ReconcilationDTO dto : result) dto.setName(part); } else if (count == 2) { for (ReconcilationDTO dto : result) dto.setAccountNumber(part); } count = count + 1; } Order order = null; if (result.size() > 0) order = searchFromCode(orders, result.get(0).getRefNumber()); if (order != null) { for (ReconcilationDTO dto : result) { dto.setComment(dto.getComment() + " Order found"); dto.setOk(true); } } else { for (ReconcilationDTO dto : result) { dto.setComment(dto.getComment() + " Order not found"); dto.setOk(false); } } } catch (Exception e) { for (ReconcilationDTO dto : result) { dto.setComment("Cannot parse line"); dto.setName(line); } } } } return result; }