public String getBankName(SMSMessage message) { Matcher m = bankNamePattern.matcher(message.getAddress()); while (m.find()) { return m.group(1); } return null; }
public String getAccountNumber(SMSMessage message) { String bankName = getBankName(message); if (bankName != null && bankName.length() >= 0) { Matcher m = accountNumberPattern.matcher(message.getBody()); while (m.find()) { return "XX" + m.group(1); } } return null; }
public boolean isTransactionMessage(SMSMessage message) { int sum = 0; for (String currency : currencyKeywords) sum += message.getBody().toLowerCase().indexOf(currency.toLowerCase()) > 1 ? 2 : 0; for (String debit : debitKeywords) sum += message.getBody().toLowerCase().indexOf(debit.toLowerCase()) > 1 ? 1 : 0; for (String account : accountKeywords) sum += message.getBody().toLowerCase().indexOf(account.toLowerCase()) > 1 ? 1 : 0; for (String credit : creditKeywords) sum += message.getBody().toLowerCase().indexOf(credit.toLowerCase()) > 1 ? 1 : 0; for (String loan : loanKeywords) sum += message.getBody().toLowerCase().indexOf(loan.toLowerCase()) > 1 ? 1 : 0; for (String bill : billKeywords) sum += message.getBody().toLowerCase().indexOf(bill.toLowerCase()) > 1 ? 1 : 0; return sum > 2; }
protected SMSMessage mapCursor(Cursor cursor) { SMSMessage message = new SMSMessage(); message.setBody(cursor.getString(cursor.getColumnIndex("body"))); message.setSubject(cursor.getString(cursor.getColumnIndex("subject"))); message.setType(cursor.getString(cursor.getColumnIndex("type"))); message.setAddress(cursor.getString(cursor.getColumnIndex("address"))); message.setDate(cursor.getString(cursor.getColumnIndex("date"))); message.setId(cursor.getString(cursor.getColumnIndex("_id"))); message.setLocked(cursor.getString(cursor.getColumnIndex("locked"))); message.setPerson(cursor.getString(cursor.getColumnIndex("person"))); message.setProtocol(cursor.getString(cursor.getColumnIndex("protocol"))); message.setRead(cursor.getString(cursor.getColumnIndex("read"))); message.setReply_path_present(cursor.getString(cursor.getColumnIndex("reply_path_present"))); message.setStatus(cursor.getString(cursor.getColumnIndex("status"))); message.setThread_id(cursor.getString(cursor.getColumnIndex("thread_id"))); message.setService_center(cursor.getString(cursor.getColumnIndex("service_center"))); return message; }
/** * Open HTTP connection and send SMS * * @param SMSMessage * @return SMSResponse * @throws IOException * @throws SQLException * @throws IllegalArgumentException * @throws UnsupportedEncodingException */ public SMSResponse push(SMSMessage oMsg) throws IOException, SQLException, IllegalArgumentException, UnsupportedEncodingException { if (DebugFile.trace) { DebugFile.writeln("Begin SMSPushRealidadFutura.push([SMSMessage])"); DebugFile.incIdent(); } SMSResponse oRsp; BufferedReader oRdr; String sErr, sLin, sFrm = ""; if (oPrp.getProperty("from") != null) sFrm = "&from=" + oPrp.getProperty("from"); String sMsisdn = oMsg.msisdnNumber(); if (sMsisdn.startsWith("+")) sMsisdn = sMsisdn.substring(1); String sQry = sUrl + "username="******"&password="******"&to=" + sMsisdn + "&text=" + URLEncoder.encode(oMsg.textBody(), "ISO8859_1"); if (DebugFile.trace) { DebugFile.writeln( "new URL(" + sUrl + "username="******"&password=..." + sFrm + "&to=" + sMsisdn + "&text=...)"); } URL oUrl = new URL(sQry); HttpURLConnection oCon = (HttpURLConnection) oUrl.openConnection(); int iStatusCode = oCon.getResponseCode(); if (DebugFile.trace) { DebugFile.writeln("response code is " + String.valueOf(iStatusCode)); } switch (iStatusCode) { case 200: oRdr = new BufferedReader(new InputStreamReader(oCon.getInputStream(), "UTF-8")); sLin = oRdr.readLine(); while (null != sLin) { sLin = oRdr.readLine(); } // wend oRdr.close(); oRsp = new SMSResponse( oMsg.messageId(), new Date(), SMSResponse.ErrorCode.NONE, SMSResponse.StatusCode.POSITIVE_ACK, ""); break; case 422: SMSResponse.ErrorCode eErr = SMSResponse.ErrorCode.UNKNOWN_ERROR; oRdr = new BufferedReader(new InputStreamReader(oCon.getErrorStream(), "UTF-8")); sErr = ""; sLin = oRdr.readLine(); while (null != sLin) { if (sLin.indexOf("número de móvil válido") > 0) eErr = SMSResponse.ErrorCode.INVALID_MSISDN; if (sLin.indexOf("es demasiado largo") > 0) eErr = SMSResponse.ErrorCode.TEXT_TOO_LONG; if (sLin.indexOf("Usuario o contraseña erróneos") > 0) eErr = SMSResponse.ErrorCode.AUTHENTICATION_FAILURE; sErr += sLin + "\n"; sLin = oRdr.readLine(); } // wend oRdr.close(); oRsp = new SMSResponse( oMsg.messageId(), new Date(), eErr, SMSResponse.StatusCode.NEGATIVE_FAILED_DELIVERY, sErr); break; default: throw new IOException("Invalid HTTP response Code " + String.valueOf(iStatusCode)); } // end switch oCon.disconnect(); if (DebugFile.trace) { DebugFile.decIdent(); DebugFile.writeln("End SMSPushRealidadFutura.push() : " + oRsp.toString()); } return oRsp; } // push