public static List<ReconcilationDTO> analyse(InputStream fstream, List<Order> orders) { List<ReconcilationDTO> rs = new ArrayList<ReconcilationDTO>(); try { DataInputStream in = new DataInputStream(fstream); BufferedReader br = new BufferedReader(new InputStreamReader(in)); String strLine; String sdate = ""; while ((strLine = br.readLine()) != null) { // System.out.println(strLine); if (strLine != null) { if (strLine.startsWith("0")) { sdate = StringUtil.split(strLine, "|")[2]; SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); sdate = new SimpleDateFormat("dd MMM yyyy").format(format.parse(sdate)); } else if (strLine.startsWith("1")) { List<ReconcilationDTO> dtos = getDTO(strLine, orders); for (ReconcilationDTO dto : dtos) { dto.setDate(sdate); rs.add(dto); } } } } in.close(); } catch (Exception e) { System.err.println("Error: " + e.getMessage()); } return rs; }
public static boolean createItem(ReconcilationDTO tr, CashBook cb) { String ref = tr.getRefNumber(); String amount = tr.getAmount(); try { if (StringUtil.isNotEmpty(ref) && StringUtil.isNotEmpty(amount)) { // BigDecimal bAmount = new BigDecimal(amount); // CashBookEntry entry = cb.createEntry(System.currentTimeMillis() + "" + // StringUtil.nextString(10)); // entry.setAccountCode( ref); // entry.setSummary("Installment " + ref + " "+ tr.getDate()); // entry.setTitle(entry.getSummary()); // entry.setTotal(bAmount); // entry.setDateOfTransaction(new SimpleDateFormat("dd MMM yyyy").parse(tr.getDate())); // entry.save(); String nm = new Date().getTime() + StringUtil.nextString(10); String code = StringUtil.nextString(10); String sql = "insert into WFS_FILE (clazz, dateCreated, lastModified, name, parent_id, summary, title, code, paymentMethod,total, accountCode, dateOfTransaction, DTYPE, absolutePath, size, status, commentable, dislikeit, likeit,ratable) values " + "('org.castafiore.accounting.CashBookEntry',now(),now(),'" + nm + "', " + "'/root/users/elieandsons/Applications/e-Shop/elieandsons/DefaultCashBook', " + "'Installment " + tr.getName() + " " + tr.getDate() + "', 'Installment " + tr.getName() + " " + tr.getDate() + "', '" + code + "', 'Standing Order', '" + tr.getAmount() + "', '" + tr.getName() + "',now() ,'CashBookEntry','/root/users/elieandsons/Applications/e-Shop/elieandsons/DefaultCashBook/" + nm + "',1,1,true,1,1, true);"; SpringUtil.getBeanOfType(Dao.class).getSession().createSQLQuery(sql).executeUpdate(); return true; } } catch (Exception e) { e.printStackTrace(); } return false; }
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; }