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;
}
Aggregations