All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.mobicents.smsc.cassandra.PreparedStatementCollection_C3 Maven / Gradle / Ivy

There is a newer version: 7.4.179
Show newest version
/*
 * TeleStax, Open Source Cloud Communications  Copyright 2012. 
 * and individual contributors
 * by the @authors tag. See the copyright.txt in the distribution for a
 * full listing of individual contributors.
 *
 * This is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation; either version 2.1 of
 * the License, or (at your option) any later version.
 *
 * This software is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this software; if not, write to the Free
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */

package org.mobicents.smsc.cassandra;

import com.datastax.driver.core.PreparedStatement;

public class PreparedStatementCollection_C3 {

    private DBOperations_C2 dbOperation;
    private String tName;
    private boolean shortMessageNewStringFormat;
    private boolean addedCorrId;
    private boolean addedNetworkId;
    private boolean addedOrigNetworkId;

    protected PreparedStatement createDueSlotForTargetId;
    protected PreparedStatement getDueSlotForTargetId;
    protected PreparedStatement createRecordCurrent;
    protected PreparedStatement getRecordData;
    protected PreparedStatement getRecordData2;
    protected PreparedStatement updateInSystem;
    protected PreparedStatement updateAlertingSupport;
    protected PreparedStatement createRecordArchive;

    public PreparedStatementCollection_C3(DBOperations_C2 dbOperation, String tName, int ttlCurrent, int ttlArchive) {
        this.dbOperation = dbOperation;
        this.tName = tName;

        // check table version format
        try {
            shortMessageNewStringFormat = false;
            String s1 = "select \"" + Schema.COLUMN_MESSAGE_TEXT + "\" FROM \"" + Schema.FAMILY_SLOT_MESSAGES_TABLE + tName + "\" limit 1;";
            dbOperation.session.execute(s1);
            shortMessageNewStringFormat = true;
        } catch (Exception e) {
        }
        try {
            addedCorrId = false;
            String s1 = "select \"" + Schema.COLUMN_CORR_ID + "\" FROM \"" + Schema.FAMILY_SLOT_MESSAGES_TABLE + tName + "\" limit 1;";
            dbOperation.session.execute(s1);
            addedCorrId = true;
        } catch (Exception e) {
        }
        try {
            addedNetworkId = false;
            String s1 = "select \"" + Schema.COLUMN_NETWORK_ID + "\" FROM \"" + Schema.FAMILY_SLOT_MESSAGES_TABLE + tName + "\" limit 1;";
            dbOperation.session.execute(s1);
            addedNetworkId = true;
        } catch (Exception e) {
        }
        try {
            addedOrigNetworkId = false;
            String s1 = "select \"" + Schema.COLUMN_ORIG_NETWORK_ID + "\" FROM \"" + Schema.FAMILY_SLOT_MESSAGES_TABLE + tName + "\" limit 1;";
            dbOperation.session.execute(s1);
            addedOrigNetworkId = true;
        } catch (Exception e) {
        }

        try {
            String s1 = getFillUpdateFields();
            String s11 = getFillUpdateFields_Archive();
            String s2 = getFillUpdateFields2();
            String s22 = getFillUpdateFields2_Archive();
            String s3a, s3b;
            if (ttlCurrent > 0) {
                s3a = "USING TTL " + ttlCurrent;
            } else {
                s3a = "";
            }
            if (ttlArchive > 0) {
                s3b = "USING TTL " + ttlArchive;
            } else {
                s3b = "";
            }

            String sa = "INSERT INTO \"" + Schema.FAMILY_DST_SLOT_TABLE + tName + "\" (\"" + Schema.COLUMN_TARGET_ID + "\", \"" + Schema.COLUMN_DUE_SLOT
                    + "\") VALUES (?, ?) " + s3a + ";";
            createDueSlotForTargetId = dbOperation.session.prepare(sa);
            sa = "SELECT \"" + Schema.COLUMN_DUE_SLOT + "\" FROM \"" + Schema.FAMILY_DST_SLOT_TABLE + tName + "\" where \"" + Schema.COLUMN_TARGET_ID
                    + "\"=?;";
            getDueSlotForTargetId = dbOperation.session.prepare(sa);
            sa = "INSERT INTO \"" + Schema.FAMILY_SLOT_MESSAGES_TABLE + tName + "\" (" + s1 + ") VALUES (" + s2 + ") " + s3a + ";";
            createRecordCurrent = dbOperation.session.prepare(sa);
            sa = "SELECT * FROM \"" + Schema.FAMILY_SLOT_MESSAGES_TABLE + tName + "\" where \"" + Schema.COLUMN_DUE_SLOT
                    + "\"=?;";
            getRecordData = dbOperation.session.prepare(sa);
            sa = "SELECT * FROM \"" + Schema.FAMILY_SLOT_MESSAGES_TABLE + tName + "\" where \"" + Schema.COLUMN_DUE_SLOT + "\"=? and \""
                    + Schema.COLUMN_TARGET_ID + "\"=?;";
            getRecordData2 = dbOperation.session.prepare(sa);
            sa = "UPDATE \"" + Schema.FAMILY_SLOT_MESSAGES_TABLE + tName + "\" " + s3a + " SET \"" + Schema.COLUMN_IN_SYSTEM + "\"=?, \""
                    + Schema.COLUMN_SMSC_UUID + "\"=? where \"" + Schema.COLUMN_DUE_SLOT + "\"=? and \"" + Schema.COLUMN_TARGET_ID + "\"=? and \""
                    + Schema.COLUMN_ID + "\"=?;";
            updateInSystem = dbOperation.session.prepare(sa);
            sa = "UPDATE \"" + Schema.FAMILY_SLOT_MESSAGES_TABLE + tName + "\" " + s3a + " SET \"" + Schema.COLUMN_ALERTING_SUPPORTED + "\"=? where \""
                    + Schema.COLUMN_DUE_SLOT + "\"=? and \"" + Schema.COLUMN_TARGET_ID + "\"=? and \"" + Schema.COLUMN_ID + "\"=?;";
            updateAlertingSupport = dbOperation.session.prepare(sa);
            sa = "INSERT INTO \"" + Schema.FAMILY_MESSAGES + tName + "\" (" + s1 + s11 + ") VALUES (" + s2 + s22 + ") " + s3b + ";";
            createRecordArchive = dbOperation.session.prepare(sa);
        } catch (Throwable e) {
            e.printStackTrace();
        }
    }

    public String getTName() {
        return tName;
    }

    public boolean getShortMessageNewStringFormat() {
        return shortMessageNewStringFormat;
    }

    public boolean getAddedCorrId() {
        return this.addedCorrId;
    }

    public boolean getAddedNetworkId() {
        return this.addedNetworkId;
    }

    public boolean getAddedOrigNetworkId() {
        return this.addedOrigNetworkId;
    }

    private String getFillUpdateFields() {
        StringBuilder sb = new StringBuilder();

        sb.append("\"");
        sb.append(Schema.COLUMN_ID);
        sb.append("\", \"");
        sb.append(Schema.COLUMN_TARGET_ID);
        if (addedNetworkId) {
            sb.append("\", \"");
            sb.append(Schema.COLUMN_NETWORK_ID);
        }
        if (addedOrigNetworkId) {
            sb.append("\", \"");
            sb.append(Schema.COLUMN_ORIG_NETWORK_ID);
        }
        sb.append("\", \"");
        sb.append(Schema.COLUMN_DUE_SLOT);
        sb.append("\", \"");
        sb.append(Schema.COLUMN_IN_SYSTEM);
        sb.append("\", \"");
        sb.append(Schema.COLUMN_SMSC_UUID);
        sb.append("\", \"");

        sb.append(Schema.COLUMN_ADDR_DST_DIGITS);
        sb.append("\", \"");
        sb.append(Schema.COLUMN_ADDR_DST_TON);
        sb.append("\", \"");
        sb.append(Schema.COLUMN_ADDR_DST_NPI);
        sb.append("\", \"");

        sb.append(Schema.COLUMN_ADDR_SRC_DIGITS);
        sb.append("\", \"");
        sb.append(Schema.COLUMN_ADDR_SRC_TON);
        sb.append("\", \"");
        sb.append(Schema.COLUMN_ADDR_SRC_NPI);
        sb.append("\", \"");

        sb.append(Schema.COLUMN_DUE_DELAY);
        sb.append("\", \"");
        sb.append(Schema.COLUMN_SM_STATUS);
        sb.append("\", \"");
        sb.append(Schema.COLUMN_ALERTING_SUPPORTED);
        sb.append("\", \"");

        sb.append(Schema.COLUMN_MESSAGE_ID);
        sb.append("\", \"");
        sb.append(Schema.COLUMN_MO_MESSAGE_REF);
        sb.append("\", \"");
        sb.append(Schema.COLUMN_ORIG_ESME_NAME);
        sb.append("\", \"");
        sb.append(Schema.COLUMN_ORIG_SYSTEM_ID);
        sb.append("\", \"");
        sb.append(Schema.COLUMN_SUBMIT_DATE);
        sb.append("\", \"");
        sb.append(Schema.COLUMN_DELIVERY_DATE);
        sb.append("\", \"");

        sb.append(Schema.COLUMN_SERVICE_TYPE);
        sb.append("\", \"");
        sb.append(Schema.COLUMN_ESM_CLASS);
        sb.append("\", \"");
        sb.append(Schema.COLUMN_PROTOCOL_ID);
        sb.append("\", \"");
        sb.append(Schema.COLUMN_PRIORITY);
        sb.append("\", \"");
        sb.append(Schema.COLUMN_REGISTERED_DELIVERY);
        sb.append("\", \"");
        sb.append(Schema.COLUMN_REPLACE);
        sb.append("\", \"");
        sb.append(Schema.COLUMN_DATA_CODING);
        sb.append("\", \"");
        sb.append(Schema.COLUMN_DEFAULT_MSG_ID);
        sb.append("\", \"");

        sb.append(Schema.COLUMN_MESSAGE);
        sb.append("\", \"");
        if (shortMessageNewStringFormat) {
            sb.append(Schema.COLUMN_MESSAGE_TEXT);
            sb.append("\", \"");
            sb.append(Schema.COLUMN_MESSAGE_BIN);
            sb.append("\", \"");
        }
        sb.append(Schema.COLUMN_SCHEDULE_DELIVERY_TIME);
        sb.append("\", \"");
        sb.append(Schema.COLUMN_VALIDITY_PERIOD);
        sb.append("\", \"");
        sb.append(Schema.COLUMN_DELIVERY_COUNT);
        sb.append("\", \"");
        sb.append(Schema.COLUMN_OPTIONAL_PARAMETERS);
        sb.append("\", \"");
        sb.append(Schema.COLUMN_IMSI);
        if (this.addedCorrId) {
            sb.append("\", \"");
            sb.append(Schema.COLUMN_CORR_ID);
        }
        sb.append("\"");

        return sb.toString();
    }

    private String getFillUpdateFields_Archive() {
        StringBuilder sb = new StringBuilder();

        sb.append(", \"");
        sb.append(Schema.COLUMN_NNN_DIGITS);
        sb.append("\", \"");
        sb.append(Schema.COLUMN_NNN_AN);
        sb.append("\", \"");
        sb.append(Schema.COLUMN_NNN_NP);
        sb.append("\", \"");
        sb.append(Schema.COLUMN_SM_TYPE);
        sb.append("\"");

        return sb.toString();
    }

    private String getFillUpdateFields2() {
        int cnt;
        if (shortMessageNewStringFormat) {
            cnt = 36;
        } else {
            cnt = 34;
        }
        if (this.addedCorrId)
            cnt++;
        if (this.addedNetworkId)
            cnt++;
        if (this.addedOrigNetworkId)
            cnt++;

        StringBuilder sb = new StringBuilder();
        int i2 = 0;
        for (int i1 = 0; i1 < cnt; i1++) {
            if (i2 == 0)
                i2 = 1;
            else
                sb.append(", ");
            sb.append("?");
        }
        return sb.toString();
    }

    private String getFillUpdateFields2_Archive() {
        int cnt;
        cnt = 4;

        StringBuilder sb = new StringBuilder();
        for (int i1 = 0; i1 < cnt; i1++) {
            sb.append(", ?");
        }
        return sb.toString();
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy