public static void generateDetailedCdr(Sms sms, EventType eventType, ErrorCode errorCode, String messageType, long statusCode, int mprocRuleId, String sourceAddrAndPort, String destAddrAndPort, int seqNumber, boolean generateReceiptCdr, boolean generateDetailedCdr) { generateDetailedCdr(sms.isMcDeliveryReceipt(), sms.getShortMessageText(), sms.getTlvSet(), sms.getTimestampA(), sms.getTimestampB(), sms.getTimestampC(), sms.getMessageId(), sms.getOrigEsmeName(), eventType, errorCode, messageType, statusCode, mprocRuleId, sourceAddrAndPort, destAddrAndPort, seqNumber, generateReceiptCdr, generateDetailedCdr); }
public static Sms createReceiptSms(Sms sms, boolean delivered, String extraString, boolean tempFailure) { Sms receipt = new Sms(); receipt.setDbId(UUID.randomUUID()); receipt.setSourceAddr(sms.getSmsSet().getDestAddr()); receipt.setSourceAddrNpi(sms.getSmsSet().getDestAddrNpi()); receipt.setSourceAddrTon(sms.getSmsSet().getDestAddrTon()); receipt.setSubmitDate(sms.getSubmitDate()); receipt.setMessageId(sms.getMessageId()); Date validityPeriod = MessageUtil.addHours(new Date(), 24); receipt.setValidityPeriod(validityPeriod); String rcpt = createDeliveryReceiptMessage(sms.getMessageIdText(), sms.getSubmitDate(), new Timestamp(System.currentTimeMillis()), sms.getSmsSet().getStatus().getCode(), sms.getShortMessageText(), delivered, extraString, tempFailure); // TODO: now we are sending all in GSM7 encoding receipt.setDataCoding(0); receipt.setShortMessageText(rcpt); receipt.setReceiptLocalMessageId(sms.getMessageId()); receipt.setOriginationType(OriginationType.LOCAL_ORIG); receipt.setEsmClass(ESME_DELIVERY_ACK | (sms.getEsmClass() & 0x03)); return receipt; }
@Override public int getDataCoding() { return sms.getDataCoding(); }
Sms sms = new Sms(); sms.setDbId(UUID.randomUUID()); sms.setOrigNetworkId(sms0.getOrigNetworkId()); sms.setSourceAddr(sms0.getSmsSet().getDestAddr()); sms.setSourceAddrNpi(sms0.getSmsSet().getDestAddrNpi()); sms.setSourceAddrTon(sms0.getSmsSet().getDestAddrTon()); } else { sms.setSourceAddr(sms0.getSourceAddr()); sms.setSourceAddrNpi(sms0.getSourceAddrNpi()); sms.setSourceAddrTon(sms0.getSourceAddrTon()); sms.setMessageId(sms0.getMessageId()); sms.setShortMessageText("???"); sms.setShortMessageBin(null); } else { sms.setShortMessageText(sms0.getShortMessageText()); sms.setShortMessageBin(sms0.getShortMessageBin()); sms.setSubmitDate(now); sms.setValidityPeriod(addHours(now, defaultValidityPeriodHours)); sms.setScheduleDeliveryTime(null); } else { sms.setSubmitDate(sms0.getSubmitDate()); sms.setValidityPeriod(sms0.getValidityPeriod()); sms.setScheduleDeliveryTime(sms0.getScheduleDeliveryTime());
Sms sms = new Sms(); sms.setStored(true); sms.setDbId(row.getUUID(Schema.COLUMN_ID)); sms.setDueSlot(row.getLong(Schema.COLUMN_DUE_SLOT)); sms.setSourceAddr(row.getString(Schema.COLUMN_ADDR_SRC_DIGITS)); sms.setSourceAddrTon(row.getInt(Schema.COLUMN_ADDR_SRC_TON)); sms.setSourceAddrNpi(row.getInt(Schema.COLUMN_ADDR_SRC_NPI)); if (addedOrigNetworkId) { sms.setOrigNetworkId(row.getInt(Schema.COLUMN_ORIG_NETWORK_ID)); sms.setMessageId(row.getLong(Schema.COLUMN_MESSAGE_ID)); sms.setMoMessageRef(row.getInt(Schema.COLUMN_MO_MESSAGE_REF)); sms.setOrigEsmeName(row.getString(Schema.COLUMN_ORIG_ESME_NAME)); sms.setOrigSystemId(row.getString(Schema.COLUMN_ORIG_SYSTEM_ID)); sms.setSubmitDate(getRowDate(row, Schema.COLUMN_SUBMIT_DATE)); sms.setServiceType(row.getString(Schema.COLUMN_SERVICE_TYPE)); sms.setEsmClass(row.getInt(Schema.COLUMN_ESM_CLASS)); sms.setProtocolId(row.getInt(Schema.COLUMN_PROTOCOL_ID)); sms.setPriority(row.getInt(Schema.COLUMN_PRIORITY)); sms.setRegisteredDelivery(row.getInt(Schema.COLUMN_REGISTERED_DELIVERY)); sms.setReplaceIfPresent(row.getInt(Schema.COLUMN_REPLACE)); sms.setDataCodingForDatabase(row.getInt(Schema.COLUMN_DATA_CODING)); sms.setDefaultMsgId(row.getInt(Schema.COLUMN_DEFAULT_MSG_ID)); sms.setShortMessageText(row.getString(Schema.COLUMN_MESSAGE_TEXT)); ByteBuffer bb = row.getBytes(Schema.COLUMN_MESSAGE_BIN); if (bb != null) {
private void setSmsFields(Sms sms, long dueSlot, BoundStatement boundStatement, boolean archive, boolean shortMessageNewStringFormat, boolean addedCorrId, boolean addedNetworkId, boolean addedOrigNetworkId, boolean addedPacket1) throws PersistenceException { boundStatement.setUUID(Schema.COLUMN_ID, sms.getDbId()); boundStatement.setString(Schema.COLUMN_TARGET_ID, sms.getSmsSet().getTargetId()); if (addedNetworkId) { boundStatement.setInt(Schema.COLUMN_NETWORK_ID, sms.getSmsSet().getNetworkId()); boundStatement.setString(Schema.COLUMN_ADDR_DST_DIGITS, sms.getSmsSet().getDestAddr()); boundStatement.setInt(Schema.COLUMN_ADDR_DST_TON, sms.getSmsSet().getDestAddrTon()); boundStatement.setInt(Schema.COLUMN_ADDR_DST_NPI, sms.getSmsSet().getDestAddrNpi()); if (sms.getSourceAddr() != null) { boundStatement.setString(Schema.COLUMN_ADDR_SRC_DIGITS, sms.getSourceAddr()); } else { boundStatement.setToNull(Schema.COLUMN_ADDR_SRC_DIGITS); boundStatement.setInt(Schema.COLUMN_ADDR_SRC_TON, sms.getSourceAddrTon()); boundStatement.setInt(Schema.COLUMN_ADDR_SRC_NPI, sms.getSourceAddrNpi()); if (addedOrigNetworkId) { boundStatement.setInt(Schema.COLUMN_ORIG_NETWORK_ID, sms.getOrigNetworkId()); boundStatement.setInt(Schema.COLUMN_DUE_DELAY, sms.getSmsSet().getDueDelay()); if (sms.getSmsSet().getStatus() != null) boundStatement.setInt(Schema.COLUMN_SM_STATUS, sms.getSmsSet().getStatus().getCode()); else boundStatement.setToNull(Schema.COLUMN_SM_STATUS); boundStatement.setBool(Schema.COLUMN_ALERTING_SUPPORTED, sms.getSmsSet().isAlertingSupported()); boundStatement.setLong(Schema.COLUMN_MESSAGE_ID, sms.getMessageId());
public static MProcNewMessage createNewEmptyMessage(int defaultValidityPeriodHours, int maxValidityPeriodHours, OriginationType originationType) { Sms sms = new Sms(); sms.setDbId(UUID.randomUUID()); sms.setOrigNetworkId(0); sms.setSourceAddr("111"); sms.setSourceAddrNpi(1); sms.setSourceAddrTon(1); sms.setMessageId(0); sms.setShortMessageText("???"); sms.setShortMessageBin(null); sms.setSubmitDate(now); sms.setValidityPeriod(addHours(now, defaultValidityPeriodHours)); sms.setScheduleDeliveryTime(null); sms.setDataCoding(0); sms.setNationalLanguageLockingShift(0); sms.setNationalLanguageSingleShift(0); sms.setEsmClass(1); // datagram mode, normal message, no UDH sms.setPriority(0); sms.setRegisteredDelivery(0); sms.setOrigSystemId(null); sms.setOrigEsmeName(null); sms.setOriginationType(originationType);
if (!generateReceiptCdr && smsEvent.isMcDeliveryReceipt()) msgParts = 1; } else { DataCodingScheme dataCodingScheme = new DataCodingSchemeImpl(smsEvent.getDataCoding()); msgParts = MessageUtil.calculateMsgParts(smsEvent.getShortMessageText(), dataCodingScheme, smsEvent.getNationalLanguageLockingShift(), smsEvent.getNationalLanguageSingleShift()); charNumbers = smsEvent.getShortMessageText().length(); } else { charNumbers = 0; Long receiptLocalMessageId = smsEvent.getReceiptLocalMessageId(); if (smsEvent.getMsgPartsSeqNumbers().contains(seqNumber - 1)) { msgPartDelTime = smsEvent.getMsgPartDelTime(seqNumber) - smsEvent.getMsgPartDelTime(seqNumber - 1); } else if (smsEvent.getMsgPartsSeqNumbers().contains(seqNumber)) { msgPartDelTime = smsEvent.getMsgPartDelTime(seqNumber) - smsEvent.getSubmitDate().getTime(); DeliveryReceiptData deliveryReceiptData = MessageUtil.parseDeliveryReceipt(smsEvent.getShortMessageText(), smsEvent.getTlvSet()); String st = null; int tlvMessageState = -1; sb.append(DATE_FORMAT.format(smsEvent.getSubmitDate())) .append(CdrGenerator.CDR_SEPARATOR) .append(smsEvent.getSourceAddr()) .append(CdrGenerator.CDR_SEPARATOR) .append(smsEvent.getSourceAddrTon())
public static Sms createSmsStatusReport(Sms sms, boolean delivered, TargetAddress ta, boolean origNetworkIdForReceipts) { Sms smsStatusReport = new Sms(); smsStatusReport.setDbId(UUID.randomUUID()); smsStatusReport.setSourceAddr(sms.getSmsSet().getDestAddr()); smsStatusReport.setSourceAddrNpi(sms.getSmsSet().getDestAddrNpi()); smsStatusReport.setSourceAddrTon(sms.getSmsSet().getDestAddrTon()); smsStatusReport.setSubmitDate(sms.getSubmitDate()); smsStatusReport.setMessageId(sms.getMessageId()); Date validityPeriod = MessageUtil.addHours(new Date(), 24); smsStatusReport.setValidityPeriod(validityPeriod); if (sms.getSmsSet().getStatus() == ErrorCode.VALIDITY_PERIOD_EXPIRED) { statusVal = Status.SMS_VALIDITY_PERIOD_EXPIRED; } else { smsStatusReport.setDataCoding(0); smsStatusReport.setShortMessageText(rcpt); smsStatusReport.setEsmClass(sms.getEsmClass() & 0x03); smsStatusReport.setMoMessageRef(sms.getMoMessageRef()); smsStatusReport.setSubmitDate(sms.getSubmitDate()); backSmsSet.setDestAddrTon(ta.getAddrTon()); if (origNetworkIdForReceipts) backSmsSet.setNetworkId(sms.getOrigNetworkId()); else backSmsSet.setNetworkId(sms.getSmsSet().getNetworkId());
if (sms.getStored()) { PreparedStatementCollection psc = this.getStatementCollection(sms.getDueSlot()); if (sms.getTargetIdOnDeliveryStart() != null) { targetId = sms.getTargetIdOnDeliveryStart(); } else { targetId = sms.getSmsSet().getTargetId(); Date scheduledDeliveryDate = c2_getTimeForDueSlot(sms.getDueSlot()); PreparedStatement ps = psc.updateInSystem; BoundStatement boundStatement = new BoundStatement(ps); boundStatement.bind(isSystemStatus, currentSessionUUID, sms.getDueSlot(), targetId, sms.getDbId()); ResultSet res = session.execute(boundStatement); } catch (Exception e1) {
return; Date deliveryDate = sms.getDeliverDate(); if (deliveryDate == null) deliveryDate = new Date(); boundStatement.setLong(Schema.COLUMN_MESSAGE_ID, sms.getMessageId()); boundStatement.setString(Schema.COLUMN_ADDR_DST_DIGITS, sms.getSmsSet().getDestAddr()); boundStatement.setUUID(Schema.COLUMN_ID, sms.getDbId()); ResultSet res = session.execute(boundStatement); } catch (Exception e1) { try { SmsSetCache.getInstance().putDeliveredRemoteMsgIdValue(dlvMessageId, dlvDestId, sms.getMessageId(), 30); boundStatement.setString(Schema.COLUMN_REMOTE_MESSAGE_ID, dlvMessageId); boundStatement.setString(Schema.COLUMN_DEST_ID, dlvDestId); boundStatement.setLong(Schema.COLUMN_MESSAGE_ID, sms.getMessageId()); ResultSet res = session.execute(boundStatement); } catch (Exception e1) { String msg = "Failed createRecordArchive - 3 !, dlvMessageId=" + dlvMessageId + ", dlvDestId=" + dlvDestId + ", messageId=" + sms.getMessageId() + " - " + e1.getMessage();
@Override public String getOrigEsmeName() { return sms.getOrigEsmeName(); }
public QuerySmResponse c2_getQuerySmResponse(long messageId) throws PersistenceException { Sms sms = c2_getRecordArchiveForMessageId(messageId); if (sms == null) { // TODO: we need to check if we have a message in a list of "in progress message" // we do not have implemented it now and treated all undelivered messages as "ENROUTE" return new QuerySmResponse(MessageState.ENROUTE, null, 0); } else { ErrorCode code = sms.getSmsSet().getStatus(); if (code == ErrorCode.SUCCESS) { return new QuerySmResponse(MessageState.DELIVERED, sms.getDeliverDate(), 0); } else if (code == ErrorCode.VALIDITY_PERIOD_EXPIRED) { return new QuerySmResponse(MessageState.EXPIRED, sms.getDeliverDate(), code.getCode()); } else { return new QuerySmResponse(MessageState.UNDELIVERABLE, sms.getDeliverDate(), code.getCode()); } } }
public boolean checkSmsPresent(Sms sms) { List<Segment> lst = this.segmList; int segmCnt = lst.size(); for (int i1 = 0; i1 < segmCnt; i1++) { Segment segm = lst.get(i1); ArrayList<Sms> al = segm.smsList; if (al != null) { int mCnt = al.size(); for (int i2 = 0; i2 < mCnt; i2++) { Sms smsa = al.get(i2); if (smsa.getDbId().equals(sms.getDbId())) { return true; } } } } return false; }
private void doSetDestCluster(SmsSet smsSet) { // Step 1: Check first if this SMS is for SMPP SmsRouteManagement smsRouteManagement = SmsRouteManagement.getInstance(); //Quick and dirty fix for SMSC-171 String orignatingEsmeName = smsSet.getSms(0).getOrigEsmeName(); String destClusterName = smsRouteManagement.getEsmeClusterName(smsSet.getDestAddrTon(), smsSet.getDestAddrNpi(), smsSet.getDestAddr(), orignatingEsmeName, smsSet.getNetworkId()); // Step 2: If no SMPP's found, check if its for SIP // TODO: we possibly do not need to send a SIP-originated message back to SIP if (destClusterName == null) { destClusterName = smsRouteManagement.getSipClusterName(smsSet.getDestAddrTon(), smsSet.getDestAddrNpi(), smsSet.getDestAddr(), smsSet.getNetworkId()); if (destClusterName == null) { // Step 2: If no SIP's found, its for SS7 smsSet.setType(SmType.SMS_FOR_SS7); } else { smsSet.setType(SmType.SMS_FOR_SIP); } } else { // smsSet.setType(destClusterName != null ? SmType.SMS_FOR_ESME // : SmType.SMS_FOR_SS7); smsSet.setType(SmType.SMS_FOR_ESME); } smsSet.setDestClusterName(destClusterName); }
@Override public int getDataCoding() { return sms.getDataCoding(); }