package org.eclipse.paho.android.service;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.util.Iterator;
import java.util.UUID;
import org.eclipse.paho.android.service.MessageStore;
import org.eclipse.paho.client.mqttv3.MqttMessage;

/* JADX INFO: loaded from: classes.dex */
class DatabaseMessageStore implements MessageStore {
    private static final String ARRIVED_MESSAGE_TABLE_NAME = "MqttArrivedMessageTable";
    private static final String MTIMESTAMP = "mtimestamp";
    private static final String TAG = "DatabaseMessageStore";
    private SQLiteDatabase db = null;
    private MQTTDatabaseHelper mqttDb;
    private MqttTraceHandler traceHandler;

    private class DbStoredData implements MessageStore.StoredMessage {
        private String clientHandle;
        private MqttMessage message;
        private String messageId;
        private String topic;

        DbStoredData(String str, String str2, String str3, MqttMessage mqttMessage) {
            this.messageId = str;
            this.topic = str3;
            this.message = mqttMessage;
        }

        @Override // org.eclipse.paho.android.service.MessageStore.StoredMessage
        public String getClientHandle() {
            return this.clientHandle;
        }

        @Override // org.eclipse.paho.android.service.MessageStore.StoredMessage
        public MqttMessage getMessage() {
            return this.message;
        }

        @Override // org.eclipse.paho.android.service.MessageStore.StoredMessage
        public String getMessageId() {
            return this.messageId;
        }

        @Override // org.eclipse.paho.android.service.MessageStore.StoredMessage
        public String getTopic() {
            return this.topic;
        }
    }

    private static class MQTTDatabaseHelper extends SQLiteOpenHelper {
        private static final String DATABASE_NAME = "mqttAndroidService.db";
        private static final int DATABASE_VERSION = 1;
        private static final String TAG = "MQTTDatabaseHelper";
        private MqttTraceHandler traceHandler;

        public MQTTDatabaseHelper(MqttTraceHandler mqttTraceHandler, Context context) {
            super(context, DATABASE_NAME, (SQLiteDatabase.CursorFactory) null, 1);
            this.traceHandler = null;
            this.traceHandler = mqttTraceHandler;
        }

        @Override // android.database.sqlite.SQLiteOpenHelper
        public void onCreate(SQLiteDatabase sQLiteDatabase) {
            this.traceHandler.traceDebug(TAG, "onCreate {CREATE TABLE MqttArrivedMessageTable(messageId TEXT PRIMARY KEY, clientHandle TEXT, destinationName TEXT, payload BLOB, qos INTEGER, retained TEXT, duplicate TEXT, mtimestamp INTEGER);}");
            try {
                sQLiteDatabase.execSQL("CREATE TABLE MqttArrivedMessageTable(messageId TEXT PRIMARY KEY, clientHandle TEXT, destinationName TEXT, payload BLOB, qos INTEGER, retained TEXT, duplicate TEXT, mtimestamp INTEGER);");
                this.traceHandler.traceDebug(TAG, "created the table");
            } catch (SQLException e2) {
                this.traceHandler.traceException(TAG, "onCreate", e2);
                throw e2;
            }
        }

        @Override // android.database.sqlite.SQLiteOpenHelper
        public void onUpgrade(SQLiteDatabase sQLiteDatabase, int i, int i2) {
            this.traceHandler.traceDebug(TAG, "onUpgrade");
            try {
                sQLiteDatabase.execSQL("DROP TABLE IF EXISTS MqttArrivedMessageTable");
                onCreate(sQLiteDatabase);
                this.traceHandler.traceDebug(TAG, "onUpgrade complete");
            } catch (SQLException e2) {
                this.traceHandler.traceException(TAG, "onUpgrade", e2);
                throw e2;
            }
        }
    }

    private class MqttMessageHack extends MqttMessage {
        public MqttMessageHack(byte[] bArr) {
            super(bArr);
        }

        @Override // org.eclipse.paho.client.mqttv3.MqttMessage
        protected void setDuplicate(boolean z) {
            super.setDuplicate(z);
        }
    }

    public DatabaseMessageStore(MqttService mqttService, Context context) {
        this.mqttDb = null;
        this.traceHandler = null;
        this.traceHandler = mqttService;
        this.mqttDb = new MQTTDatabaseHelper(this.traceHandler, context);
        this.traceHandler.traceDebug(TAG, "DatabaseMessageStore<init> complete");
    }

    private int getArrivedRowCount(String str) {
        Cursor cursorQuery = this.db.query(ARRIVED_MESSAGE_TABLE_NAME, new String[]{MqttServiceConstants.MESSAGE_ID}, "clientHandle=?", new String[]{str}, null, null, null);
        int i = cursorQuery.moveToFirst() ? cursorQuery.getInt(0) : 0;
        cursorQuery.close();
        return i;
    }

    @Override // org.eclipse.paho.android.service.MessageStore
    public void clearArrivedMessages(String str) {
        int iDelete;
        this.db = this.mqttDb.getWritableDatabase();
        String[] strArr = {str};
        if (str == null) {
            this.traceHandler.traceDebug(TAG, "clearArrivedMessages: clearing the table");
            iDelete = this.db.delete(ARRIVED_MESSAGE_TABLE_NAME, null, null);
        } else {
            this.traceHandler.traceDebug(TAG, "clearArrivedMessages: clearing the table of " + str + " messages");
            iDelete = this.db.delete(ARRIVED_MESSAGE_TABLE_NAME, "clientHandle=?", strArr);
        }
        this.traceHandler.traceDebug(TAG, "clearArrivedMessages: rows affected = " + iDelete);
    }

    @Override // org.eclipse.paho.android.service.MessageStore
    public void close() {
        SQLiteDatabase sQLiteDatabase = this.db;
        if (sQLiteDatabase != null) {
            sQLiteDatabase.close();
        }
    }

    @Override // org.eclipse.paho.android.service.MessageStore
    public boolean discardArrived(String str, String str2) {
        this.db = this.mqttDb.getWritableDatabase();
        this.traceHandler.traceDebug(TAG, "discardArrived{" + str + "}, {" + str2 + "}");
        try {
            int iDelete = this.db.delete(ARRIVED_MESSAGE_TABLE_NAME, "messageId=? AND clientHandle=?", new String[]{str2, str});
            if (iDelete == 1) {
                int arrivedRowCount = getArrivedRowCount(str);
                this.traceHandler.traceDebug(TAG, "discardArrived - Message deleted successfully. - messages in db for this clientHandle " + arrivedRowCount);
                return true;
            }
            this.traceHandler.traceError(TAG, "discardArrived - Error deleting message {" + str2 + "} from database: Rows affected = " + iDelete);
            return false;
        } catch (SQLException e2) {
            this.traceHandler.traceException(TAG, "discardArrived", e2);
            throw e2;
        }
    }

    @Override // org.eclipse.paho.android.service.MessageStore
    public Iterator<MessageStore.StoredMessage> getAllArrivedMessages(final String str) {
        return new Iterator<MessageStore.StoredMessage>() { // from class: org.eclipse.paho.android.service.DatabaseMessageStore.1

            /* JADX INFO: renamed from: c, reason: collision with root package name */
            private Cursor f1792c;
            private boolean hasNext;
            private final String[] selectionArgs;

            {
                this.selectionArgs = new String[]{str};
                DatabaseMessageStore databaseMessageStore = DatabaseMessageStore.this;
                databaseMessageStore.db = databaseMessageStore.mqttDb.getWritableDatabase();
                if (str == null) {
                    this.f1792c = DatabaseMessageStore.this.db.query(DatabaseMessageStore.ARRIVED_MESSAGE_TABLE_NAME, null, null, null, null, null, "mtimestamp ASC");
                } else {
                    this.f1792c = DatabaseMessageStore.this.db.query(DatabaseMessageStore.ARRIVED_MESSAGE_TABLE_NAME, null, "clientHandle=?", this.selectionArgs, null, null, "mtimestamp ASC");
                }
                this.hasNext = this.f1792c.moveToFirst();
            }

            protected void finalize() throws Throwable {
                this.f1792c.close();
                super.finalize();
            }

            @Override // java.util.Iterator
            public boolean hasNext() {
                if (!this.hasNext) {
                    this.f1792c.close();
                }
                return this.hasNext;
            }

            @Override // java.util.Iterator
            public void remove() {
                throw new UnsupportedOperationException();
            }

            @Override // java.util.Iterator
            public MessageStore.StoredMessage next() {
                Cursor cursor = this.f1792c;
                String string = cursor.getString(cursor.getColumnIndex(MqttServiceConstants.MESSAGE_ID));
                Cursor cursor2 = this.f1792c;
                String string2 = cursor2.getString(cursor2.getColumnIndex(MqttServiceConstants.CLIENT_HANDLE));
                Cursor cursor3 = this.f1792c;
                String string3 = cursor3.getString(cursor3.getColumnIndex(MqttServiceConstants.DESTINATION_NAME));
                Cursor cursor4 = this.f1792c;
                byte[] blob = cursor4.getBlob(cursor4.getColumnIndex(MqttServiceConstants.PAYLOAD));
                Cursor cursor5 = this.f1792c;
                int i = cursor5.getInt(cursor5.getColumnIndex(MqttServiceConstants.QOS));
                Cursor cursor6 = this.f1792c;
                boolean z = Boolean.parseBoolean(cursor6.getString(cursor6.getColumnIndex(MqttServiceConstants.RETAINED)));
                Cursor cursor7 = this.f1792c;
                boolean z2 = Boolean.parseBoolean(cursor7.getString(cursor7.getColumnIndex(MqttServiceConstants.DUPLICATE)));
                MqttMessageHack mqttMessageHack = DatabaseMessageStore.this.new MqttMessageHack(blob);
                mqttMessageHack.setQos(i);
                mqttMessageHack.setRetained(z);
                mqttMessageHack.setDuplicate(z2);
                this.hasNext = this.f1792c.moveToNext();
                return DatabaseMessageStore.this.new DbStoredData(string, string2, string3, mqttMessageHack);
            }
        };
    }

    @Override // org.eclipse.paho.android.service.MessageStore
    public String storeArrived(String str, String str2, MqttMessage mqttMessage) {
        this.db = this.mqttDb.getWritableDatabase();
        this.traceHandler.traceDebug(TAG, "storeArrived{" + str + "}, {" + mqttMessage.toString() + "}");
        byte[] payload = mqttMessage.getPayload();
        int qos = mqttMessage.getQos();
        boolean zIsRetained = mqttMessage.isRetained();
        boolean zIsDuplicate = mqttMessage.isDuplicate();
        ContentValues contentValues = new ContentValues();
        String string = UUID.randomUUID().toString();
        contentValues.put(MqttServiceConstants.MESSAGE_ID, string);
        contentValues.put(MqttServiceConstants.CLIENT_HANDLE, str);
        contentValues.put(MqttServiceConstants.DESTINATION_NAME, str2);
        contentValues.put(MqttServiceConstants.PAYLOAD, payload);
        contentValues.put(MqttServiceConstants.QOS, Integer.valueOf(qos));
        contentValues.put(MqttServiceConstants.RETAINED, Boolean.valueOf(zIsRetained));
        contentValues.put(MqttServiceConstants.DUPLICATE, Boolean.valueOf(zIsDuplicate));
        contentValues.put(MTIMESTAMP, Long.valueOf(System.currentTimeMillis()));
        try {
            this.db.insertOrThrow(ARRIVED_MESSAGE_TABLE_NAME, null, contentValues);
            int arrivedRowCount = getArrivedRowCount(str);
            this.traceHandler.traceDebug(TAG, "storeArrived: inserted message with id of {" + string + "} - Number of messages in database for this clientHandle = " + arrivedRowCount);
            return string;
        } catch (SQLException e2) {
            this.traceHandler.traceException(TAG, "onUpgrade", e2);
            throw e2;
        }
    }
}
