Search in sources :

Example 1 with ReplaceIfPresentFlag

use of org.jsmpp.bean.ReplaceIfPresentFlag in project camel by apache.

the class SmppSubmitMultiCommand method execute.

@Override
public void execute(Exchange exchange) throws SmppException {
    SubmitMulti[] submitMulties = createSubmitMulti(exchange);
    List<SubmitMultiResult> results = new ArrayList<SubmitMultiResult>(submitMulties.length);
    for (SubmitMulti submitMulti : submitMulties) {
        SubmitMultiResult result;
        if (log.isDebugEnabled()) {
            log.debug("Sending multiple short messages for exchange id '{}'...", exchange.getExchangeId());
        }
        try {
            result = session.submitMultiple(submitMulti.getServiceType(), TypeOfNumber.valueOf(submitMulti.getSourceAddrTon()), NumberingPlanIndicator.valueOf(submitMulti.getSourceAddrNpi()), submitMulti.getSourceAddr(), (Address[]) submitMulti.getDestAddresses(), new ESMClass(submitMulti.getEsmClass()), submitMulti.getProtocolId(), submitMulti.getPriorityFlag(), submitMulti.getScheduleDeliveryTime(), submitMulti.getValidityPeriod(), new RegisteredDelivery(submitMulti.getRegisteredDelivery()), new ReplaceIfPresentFlag(submitMulti.getReplaceIfPresentFlag()), DataCodings.newInstance(submitMulti.getDataCoding()), submitMulti.getSmDefaultMsgId(), submitMulti.getShortMessage(), submitMulti.getOptionalParameters());
            results.add(result);
        } catch (Exception e) {
            throw new SmppException(e);
        }
    }
    if (log.isDebugEnabled()) {
        log.debug("Sent multiple short messages for exchange id '{}' and received results '{}'", exchange.getExchangeId(), results);
    }
    List<String> messageIDs = new ArrayList<String>(results.size());
    // {messageID : [{destAddr : address, error : errorCode}]}
    Map<String, List<Map<String, Object>>> errors = new HashMap<String, List<Map<String, Object>>>();
    for (SubmitMultiResult result : results) {
        UnsuccessDelivery[] deliveries = result.getUnsuccessDeliveries();
        if (deliveries != null) {
            List<Map<String, Object>> undelivered = new ArrayList<Map<String, Object>>();
            for (UnsuccessDelivery delivery : deliveries) {
                Map<String, Object> error = new HashMap<String, Object>();
                error.put(SmppConstants.DEST_ADDR, delivery.getDestinationAddress().getAddress());
                error.put(SmppConstants.ERROR, delivery.getErrorStatusCode());
                undelivered.add(error);
            }
            if (!undelivered.isEmpty()) {
                errors.put(result.getMessageId(), undelivered);
            }
        }
        messageIDs.add(result.getMessageId());
    }
    Message message = getResponseMessage(exchange);
    message.setHeader(SmppConstants.ID, messageIDs);
    message.setHeader(SmppConstants.SENT_MESSAGE_COUNT, messageIDs.size());
    if (!errors.isEmpty()) {
        message.setHeader(SmppConstants.ERROR, errors);
    }
}
Also used : ReplaceIfPresentFlag(org.jsmpp.bean.ReplaceIfPresentFlag) Message(org.apache.camel.Message) HashMap(java.util.HashMap) ESMClass(org.jsmpp.bean.ESMClass) ArrayList(java.util.ArrayList) SubmitMultiResult(org.jsmpp.bean.SubmitMultiResult) RegisteredDelivery(org.jsmpp.bean.RegisteredDelivery) UnsuccessDelivery(org.jsmpp.bean.UnsuccessDelivery) ArrayList(java.util.ArrayList) List(java.util.List) SubmitMulti(org.jsmpp.bean.SubmitMulti) HashMap(java.util.HashMap) Map(java.util.Map)

Aggregations

ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 List (java.util.List)1 Map (java.util.Map)1 Message (org.apache.camel.Message)1 ESMClass (org.jsmpp.bean.ESMClass)1 RegisteredDelivery (org.jsmpp.bean.RegisteredDelivery)1 ReplaceIfPresentFlag (org.jsmpp.bean.ReplaceIfPresentFlag)1 SubmitMulti (org.jsmpp.bean.SubmitMulti)1 SubmitMultiResult (org.jsmpp.bean.SubmitMultiResult)1 UnsuccessDelivery (org.jsmpp.bean.UnsuccessDelivery)1