Search in sources :

Example 11 with XMLStreamException

use of javolution.xml.stream.XMLStreamException in project smscgateway by RestComm.

the class HomeRoutingManagement method load.

public synchronized void load() {
    // if (ccMccmncCollection != null && ccMccmnsTableVersionLoaded == ccMccmnsTableVersionActual)
    // return;
    ccMccmncCollection = new CcMccmncCollection();
    XMLObjectReader reader = null;
    try {
        FileInputStream fis = new FileInputStream(persistFile.toString());
        try {
            System.out.println("fis.available():" + fis.available());
        } catch (IOException e) {
            e.printStackTrace();
        }
        reader = XMLObjectReader.newInstance(fis);
        try {
            reader.setBinding(binding);
            ccMccmncCollection = reader.read(CC_MCCMNS_COLLECTION, CcMccmncCollection.class);
            logger.info("Successfully loaded CcMccmnsCollection: " + persistFile);
        } finally {
            reader.close();
        }
    } catch (FileNotFoundException ex) {
        logger.warn("CcMccmnsCollection: file not found: " + persistFile.toString());
        try {
            this.store();
        } catch (Exception e) {
        }
    } catch (XMLStreamException ex) {
        logger.error("Error while loading CcMccmnsCollection from file" + persistFile.toString(), ex);
    }
// ccMccmnsTableVersionLoaded = ccMccmnsTableVersionActual;
}
Also used : XMLStreamException(javolution.xml.stream.XMLStreamException) FileNotFoundException(java.io.FileNotFoundException) XMLObjectReader(javolution.xml.XMLObjectReader) IOException(java.io.IOException) FileInputStream(java.io.FileInputStream) XMLStreamException(javolution.xml.stream.XMLStreamException) IOException(java.io.IOException) FileNotFoundException(java.io.FileNotFoundException)

Example 12 with XMLStreamException

use of javolution.xml.stream.XMLStreamException in project smscgateway by RestComm.

the class NN_DBOper method createRecord.

// SCHEMA 1 ************************
public void createRecord(long dueSlot, Sms sms) throws PersistenceException {
    PreparedStatementCollection2 psc = getStatementCollection(sms.getSubmitDate());
    try {
        PreparedStatement ps = psc.createRecordData;
        BoundStatement boundStatement = new BoundStatement(ps);
        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());
        boundStatement.setUUID(Schema.COLUMN_ID, sms.getDbId());
        boundStatement.setString(Schema.COLUMN_TARGET_ID, sms.getSmsSet().getTargetId());
        boundStatement.setLong(Schema.COLUMN_DUE_SLOT, dueSlot);
        if (sms.getSourceAddr() != null) {
            boundStatement.setString(Schema.COLUMN_ADDR_SRC_DIGITS, sms.getSourceAddr());
        }
        boundStatement.setInt(Schema.COLUMN_ADDR_SRC_TON, sms.getSourceAddrTon());
        boundStatement.setInt(Schema.COLUMN_ADDR_SRC_NPI, sms.getSourceAddrNpi());
        boundStatement.setInt(Schema.COLUMN_DUE_DELAY, sms.getSmsSet().getDueDelay());
        if (sms.getSmsSet().getStatus() != null)
            boundStatement.setInt(Schema.COLUMN_SM_STATUS, sms.getSmsSet().getStatus().getCode());
        boundStatement.setBool(Schema.COLUMN_ALERTING_SUPPORTED, sms.getSmsSet().isAlertingSupported());
        boundStatement.setLong(Schema.COLUMN_MESSAGE_ID, sms.getMessageId());
        boundStatement.setInt(Schema.COLUMN_MO_MESSAGE_REF, sms.getMoMessageRef());
        if (sms.getOrigEsmeName() != null) {
            boundStatement.setString(Schema.COLUMN_ORIG_ESME_NAME, sms.getOrigEsmeName());
        }
        if (sms.getOrigSystemId() != null) {
            boundStatement.setString(Schema.COLUMN_ORIG_SYSTEM_ID, sms.getOrigSystemId());
        }
        if (sms.getSubmitDate() != null) {
            DBOperations.setBoundStatementDate(boundStatement, Schema.COLUMN_SUBMIT_DATE, sms.getSubmitDate());
        }
        if (sms.getServiceType() != null) {
            boundStatement.setString(Schema.COLUMN_SERVICE_TYPE, sms.getServiceType());
        }
        boundStatement.setInt(Schema.COLUMN_ESM_CLASS, sms.getEsmClass());
        boundStatement.setInt(Schema.COLUMN_PROTOCOL_ID, sms.getProtocolId());
        boundStatement.setInt(Schema.COLUMN_PRIORITY, sms.getPriority());
        boundStatement.setInt(Schema.COLUMN_REGISTERED_DELIVERY, sms.getRegisteredDelivery());
        boundStatement.setInt(Schema.COLUMN_REPLACE, sms.getReplaceIfPresent());
        boundStatement.setInt(Schema.COLUMN_DATA_CODING, sms.getDataCoding());
        boundStatement.setInt(Schema.COLUMN_DEFAULT_MSG_ID, sms.getDefaultMsgId());
        if (sms.getShortMessage() != null) {
            boundStatement.setBytes(Schema.COLUMN_MESSAGE, ByteBuffer.wrap(sms.getShortMessage()));
        }
        if (sms.getScheduleDeliveryTime() != null) {
            DBOperations.setBoundStatementDate(boundStatement, Schema.COLUMN_SCHEDULE_DELIVERY_TIME, sms.getScheduleDeliveryTime());
        }
        if (sms.getValidityPeriod() != null) {
            DBOperations.setBoundStatementDate(boundStatement, Schema.COLUMN_VALIDITY_PERIOD, sms.getValidityPeriod());
        }
        boundStatement.setInt(Schema.COLUMN_DELIVERY_COUNT, sms.getDeliveryCount());
        if (sms.getTlvSet().getOptionalParameterCount() > 0) {
            try {
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                XMLObjectWriter writer = XMLObjectWriter.newInstance(baos);
                writer.setIndentation("\t");
                writer.write(sms.getTlvSet(), TLV_SET, TlvSet.class);
                writer.close();
                byte[] rawData = baos.toByteArray();
                String serializedEvent = new String(rawData);
                boundStatement.setString(Schema.COLUMN_OPTIONAL_PARAMETERS, serializedEvent);
            } catch (XMLStreamException e) {
                String msg = "XMLStreamException when serializing optional parameters for '" + sms.getDbId() + "'!";
                throw new PersistenceException(msg, e);
            }
        }
        ResultSet res = session.execute(boundStatement);
        ps = psc.createRecordSlots;
        boundStatement = new BoundStatement(ps);
        boundStatement.setLong(Schema.COLUMN_DUE_SLOT, dueSlot);
        boundStatement.setString(Schema.COLUMN_TARGET_ID, sms.getSmsSet().getTargetId());
        res = session.execute(boundStatement);
        ps = psc.createRecordDests;
        boundStatement = new BoundStatement(ps);
        boundStatement.setString(Schema.COLUMN_TARGET_ID, sms.getSmsSet().getTargetId());
        boundStatement.setUUID(Schema.COLUMN_ID, sms.getDbId());
        boundStatement.setBool(Schema.COLUMN_SENT, false);
        res = session.execute(boundStatement);
    } catch (Exception e1) {
        String msg = "Failed createRecord !";
        throw new PersistenceException(msg, e1);
    }
}
Also used : XMLStreamException(javolution.xml.stream.XMLStreamException) PersistenceException(org.mobicents.smsc.cassandra.PersistenceException) ResultSet(com.datastax.driver.core.ResultSet) PreparedStatement(com.datastax.driver.core.PreparedStatement) XMLObjectWriter(javolution.xml.XMLObjectWriter) ByteArrayOutputStream(java.io.ByteArrayOutputStream) BoundStatement(com.datastax.driver.core.BoundStatement) XMLStreamException(javolution.xml.stream.XMLStreamException) PersistenceException(org.mobicents.smsc.cassandra.PersistenceException) InvalidQueryException(com.datastax.driver.core.exceptions.InvalidQueryException)

Example 13 with XMLStreamException

use of javolution.xml.stream.XMLStreamException in project smscgateway by RestComm.

the class DBOperations method createSms.

protected SmsSet createSms(final Row row, SmsSet smsSet, boolean shortMessageNewStringFormat, boolean addedCorrId, boolean addedNetworkId, boolean addedOrigNetworkId, boolean addedPacket1, boolean getMessageInProcessing) throws PersistenceException {
    if (row == null) {
        return smsSet;
    }
    int inSystem = row.getInt(Schema.COLUMN_IN_SYSTEM);
    UUID smscUuid = row.getUUID(Schema.COLUMN_SMSC_UUID);
    if (!getMessageInProcessing && (inSystem == IN_SYSTEM_SENT || inSystem == IN_SYSTEM_INPROCESS && smscUuid.equals(currentSessionUUID))) {
        // inSystem it is in processing or processed - skip this
        return smsSet;
    }
    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));
    if (shortMessageNewStringFormat) {
        sms.setShortMessageText(row.getString(Schema.COLUMN_MESSAGE_TEXT));
        ByteBuffer bb = row.getBytes(Schema.COLUMN_MESSAGE_BIN);
        if (bb != null) {
            byte[] buf = new byte[bb.limit() - bb.position()];
            bb.get(buf);
            sms.setShortMessageBin(buf);
        }
    } else {
        ByteBuffer bb = row.getBytes(Schema.COLUMN_MESSAGE);
        if (bb != null) {
            byte[] buf = new byte[bb.limit() - bb.position()];
            bb.get(buf);
            sms.setShortMessage(buf);
            // convert to a new format
            byte[] shortMessage = sms.getShortMessage();
            byte[] textPart = shortMessage;
            byte[] udhData = null;
            boolean udhExists = false;
            DataCodingScheme dcs = new DataCodingSchemeImpl(sms.getDataCoding());
            String msg = null;
            if (dcs.getCharacterSet() == CharacterSet.GSM8) {
                udhData = shortMessage;
            } else {
                if ((sms.getEsmClass() & SmppConstants.ESM_CLASS_UDHI_MASK) != 0) {
                    udhExists = true;
                }
                if (udhExists && shortMessage != null && shortMessage.length > 2) {
                    // UDH exists
                    int udhLen = (shortMessage[0] & 0xFF) + 1;
                    if (udhLen <= shortMessage.length) {
                        textPart = new byte[shortMessage.length - udhLen];
                        udhData = new byte[udhLen];
                        System.arraycopy(shortMessage, udhLen, textPart, 0, textPart.length);
                        System.arraycopy(shortMessage, 0, udhData, 0, udhLen);
                    }
                }
                switch(dcs.getCharacterSet()) {
                    case GSM7:
                        msg = new String(textPart);
                        break;
                    case UCS2:
                        Charset ucs2Charset = Charset.forName("UTF-16BE");
                        bb = ByteBuffer.wrap(textPart);
                        CharBuffer bf = ucs2Charset.decode(bb);
                        msg = bf.toString();
                        break;
                    default:
                        udhData = sms.getShortMessage();
                        break;
                }
            }
            sms.setShortMessageText(msg);
            sms.setShortMessageBin(udhData);
        }
    }
    sms.setScheduleDeliveryTime(getRowDate(row, Schema.COLUMN_SCHEDULE_DELIVERY_TIME));
    sms.setValidityPeriod(getRowDate(row, Schema.COLUMN_VALIDITY_PERIOD));
    sms.setDeliveryCount(row.getInt(Schema.COLUMN_DELIVERY_COUNT));
    if (addedPacket1) {
        sms.setOriginatorSccpAddress(row.getString(Schema.COLUMN_ORIGINATOR_SCCP_ADDRESS));
        // TODO: extra columns for further usage
        sms.setStatusReportRequest(row.getBool(Schema.COLUMN_STATUS_REPORT_REQUEST));
        sms.setDeliveryAttempt(row.getInt(Schema.COLUMN_DELIVERY_ATTEMPT));
        sms.setUserData(row.getString(Schema.COLUMN_USER_DATA));
        sms.setExtraData(row.getString(Schema.COLUMN_EXTRA_DATA));
        sms.setExtraData_2(row.getString(Schema.COLUMN_EXTRA_DATA_2));
        sms.setExtraData_3(row.getString(Schema.COLUMN_EXTRA_DATA_3));
        sms.setExtraData_4(row.getString(Schema.COLUMN_EXTRA_DATA_4));
    }
    String s = row.getString(Schema.COLUMN_OPTIONAL_PARAMETERS);
    if (s != null) {
        try {
            ByteArrayInputStream bais = new ByteArrayInputStream(s.getBytes());
            XMLObjectReader reader = XMLObjectReader.newInstance(bais);
            TlvSet copy = reader.read(TLV_SET, TlvSet.class);
            sms.getTlvSet().clearAllOptionalParameter();
            sms.getTlvSet().addAllOptionalParameter(copy.getOptionalParameters());
        } catch (XMLStreamException e) {
            String msg = "XMLStreamException when deserializing optional parameters for '" + sms.getDbId() + "'!";
            throw new PersistenceException(msg, e);
        }
    }
    if (smsSet == null) {
        smsSet = new SmsSet();
        String destAddr = null;
        int destAddrTon = -1;
        int destAddrNpi = -1;
        destAddr = row.getString(Schema.COLUMN_ADDR_DST_DIGITS);
        destAddrTon = row.getInt(Schema.COLUMN_ADDR_DST_TON);
        destAddrNpi = row.getInt(Schema.COLUMN_ADDR_DST_NPI);
        if (destAddr == null || destAddrTon == -1 || destAddrNpi == -1) {
            throw new PersistenceException("destAddr or destAddrTon or destAddrNpi is absent for ID='" + sms.getDbId() + "'");
        }
        smsSet.setDestAddr(destAddr);
        smsSet.setDestAddrTon(destAddrTon);
        smsSet.setDestAddrNpi(destAddrNpi);
        if (getMessageInProcessing) {
            smsSet.setInSystem(inSystem);
            smsSet.setStatus(ErrorCode.fromInt(row.getInt(Schema.COLUMN_SM_STATUS)));
        }
        if (addedNetworkId) {
            smsSet.setNetworkId(row.getInt(Schema.COLUMN_NETWORK_ID));
        } else {
            String tagId = row.getString(Schema.COLUMN_TARGET_ID);
            if (tagId != null) {
                String[] ss = tagId.split("_");
                if (ss.length == 4) {
                    String s1 = ss[3];
                    try {
                        int networkId = Integer.parseInt(s1);
                        smsSet.setNetworkId(networkId);
                    } catch (Exception e) {
                    }
                }
            }
        }
        if (addedCorrId)
            smsSet.setCorrelationId(row.getString(Schema.COLUMN_CORR_ID));
        else
            smsSet.setCorrelationId(row.getString(Schema.COLUMN_IMSI));
    }
    int dueDelay = row.getInt(Schema.COLUMN_DUE_DELAY);
    if (dueDelay > smsSet.getDueDelay())
        smsSet.setDueDelay(dueDelay);
    boolean alertingSupported = row.getBool(Schema.COLUMN_ALERTING_SUPPORTED);
    if (alertingSupported)
        smsSet.setAlertingSupported(true);
    smsSet.addSms(sms);
    return smsSet;
}
Also used : DataCodingScheme(org.mobicents.protocols.ss7.map.api.smstpdu.DataCodingScheme) CharBuffer(java.nio.CharBuffer) Charset(java.nio.charset.Charset) DataCodingSchemeImpl(org.mobicents.protocols.ss7.map.smstpdu.DataCodingSchemeImpl) ByteBuffer(java.nio.ByteBuffer) XMLStreamException(javolution.xml.stream.XMLStreamException) InvalidQueryException(com.datastax.driver.core.exceptions.InvalidQueryException) XMLStreamException(javolution.xml.stream.XMLStreamException) ByteArrayInputStream(java.io.ByteArrayInputStream) Sms(org.mobicents.smsc.library.Sms) XMLObjectReader(javolution.xml.XMLObjectReader) TlvSet(org.restcomm.smpp.parameter.TlvSet) UUID(java.util.UUID) SmsSet(org.mobicents.smsc.library.SmsSet)

Aggregations

XMLStreamException (javolution.xml.stream.XMLStreamException)13 XMLObjectReader (javolution.xml.XMLObjectReader)9 FileInputStream (java.io.FileInputStream)6 XMLObjectWriter (javolution.xml.XMLObjectWriter)4 InvalidQueryException (com.datastax.driver.core.exceptions.InvalidQueryException)3 ByteArrayOutputStream (java.io.ByteArrayOutputStream)3 ByteBuffer (java.nio.ByteBuffer)3 FastList (javolution.util.FastList)3 PersistenceException (org.mobicents.smsc.cassandra.PersistenceException)3 BoundStatement (com.datastax.driver.core.BoundStatement)2 PreparedStatement (com.datastax.driver.core.PreparedStatement)2 ResultSet (com.datastax.driver.core.ResultSet)2 ByteArrayInputStream (java.io.ByteArrayInputStream)2 FileNotFoundException (java.io.FileNotFoundException)2 IOException (java.io.IOException)2 Charset (java.nio.charset.Charset)2 DataCodingScheme (org.mobicents.protocols.ss7.map.api.smstpdu.DataCodingScheme)2 DataCodingSchemeImpl (org.mobicents.protocols.ss7.map.smstpdu.DataCodingSchemeImpl)2 Sms (org.mobicents.smsc.library.Sms)2 SmsSet (org.mobicents.smsc.library.SmsSet)2