Search in sources :

Example 1 with DeliveryReceiptDataImpl

use of org.mobicents.smsc.mproc.impl.DeliveryReceiptDataImpl in project smscgateway by RestComm.

the class MessageUtil method parseDeliveryReceipt.

public static DeliveryReceiptData parseDeliveryReceipt(String msg, TlvSet tlvSet) {
    if (msg == null || msg.length() < 102)
        return null;
    String[] namesList = new String[] { DELIVERY_ACK_ID, DELIVERY_ACK_SUB, DELIVERY_ACK_DLVRD, DELIVERY_ACK_SUBMIT_DATE, DELIVERY_ACK_DONE_DATE, DELIVERY_ACK_STAT, DELIVERY_ACK_ERR, DELIVERY_ACK_TEXT };
    String lcMessage = msg.toLowerCase();
    int pos = 0;
    ArrayList<String> values = new ArrayList<String>(8);
    for (int i1 = 0; i1 < namesList.length; i1++) {
        String fieldName = namesList[i1];
        int newPos = lcMessage.indexOf(fieldName, pos);
        if (newPos < 0) {
            if (fieldName.equals(DELIVERY_ACK_TEXT))
                break;
            else
                return null;
        }
        if (i1 == 0) {
            if (newPos != 0)
                return null;
        } else {
            if (newPos >= 0) {
                values.add(msg.substring(pos, newPos));
            }
        }
        pos = newPos + fieldName.length();
    }
    values.add(msg.substring(pos));
    DeliveryReceiptDataImpl deliveryReceiptData = new DeliveryReceiptDataImpl();
    String idVal = values.get(0);
    String submittedVal = values.get(1);
    String deliveredVal = values.get(2);
    String submitDateVal = values.get(3);
    String doneDateVal = values.get(4);
    String statusVal = values.get(5);
    String errorVal = values.get(6);
    String textVal = null;
    if (values.size() >= 8)
        textVal = values.get(7);
    SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHHmm");
    SimpleDateFormat sdf2 = new SimpleDateFormat("yyMMddHHmmss");
    deliveryReceiptData.setMessageId(idVal);
    try {
        int msgSubmitted = Integer.parseInt(submittedVal);
        deliveryReceiptData.setMsgSubmitted(msgSubmitted);
    } catch (NumberFormatException e) {
    }
    try {
        int msgDelivered = Integer.parseInt(deliveredVal);
        deliveryReceiptData.setMsgDelivered(msgDelivered);
    } catch (NumberFormatException e) {
    }
    try {
        Date submitDate;
        if (submitDateVal.length() == 10)
            submitDate = sdf.parse(submitDateVal);
        else
            submitDate = sdf2.parse(submitDateVal);
        deliveryReceiptData.setSubmitDate(submitDate);
    } catch (ParseException e) {
    }
    try {
        Date doneDate;
        if (doneDateVal.length() == 10)
            doneDate = sdf.parse(doneDateVal);
        else
            doneDate = sdf2.parse(doneDateVal);
        deliveryReceiptData.setDoneDate(doneDate);
    } catch (ParseException e) {
    }
    deliveryReceiptData.setStatus(statusVal);
    try {
        int error = Integer.parseInt(errorVal);
        deliveryReceiptData.setError(error);
    } catch (NumberFormatException e) {
    }
    deliveryReceiptData.setText(textVal);
    Tlv tlv = tlvSet.getOptionalParameter(SmppConstants.TAG_RECEIPTED_MSG_ID);
    if (tlv != null) {
        // String val = new String(data);
        try {
            String val = tlv.getValueAsString();
            deliveryReceiptData.setTlvReceiptedMessageId(val);
        } catch (TlvConvertException e) {
        }
    }
    tlv = tlvSet.getOptionalParameter(SmppConstants.TAG_MSG_STATE);
    if (tlv != null) {
        try {
            byte val = tlv.getValueAsByte();
            deliveryReceiptData.setTlvMessageState(new Integer(val));
        } catch (TlvConvertException e) {
        }
    }
    return deliveryReceiptData;
}
Also used : TlvConvertException(com.cloudhopper.smpp.tlv.TlvConvertException) ArrayList(java.util.ArrayList) Date(java.util.Date) DeliveryReceiptDataImpl(org.mobicents.smsc.mproc.impl.DeliveryReceiptDataImpl) ParseException(java.text.ParseException) SimpleDateFormat(java.text.SimpleDateFormat) Tlv(com.cloudhopper.smpp.tlv.Tlv)

Aggregations

Tlv (com.cloudhopper.smpp.tlv.Tlv)1 TlvConvertException (com.cloudhopper.smpp.tlv.TlvConvertException)1 ParseException (java.text.ParseException)1 SimpleDateFormat (java.text.SimpleDateFormat)1 ArrayList (java.util.ArrayList)1 Date (java.util.Date)1 DeliveryReceiptDataImpl (org.mobicents.smsc.mproc.impl.DeliveryReceiptDataImpl)1