package com.google.android.datatransport.runtime.scheduling.persistence;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabaseLockedException;
import android.os.SystemClock;
import android.util.Base64;
import android.util.Log;
import com.google.android.datatransport.runtime.e;
import com.google.android.datatransport.runtime.scheduling.persistence.SQLiteEventStore;
import com.google.android.gms.measurement.api.AppMeasurementSdk;
import defpackage.ci7;
import defpackage.dva;
import defpackage.e11;
import defpackage.f67;
import defpackage.fi7;
import defpackage.h11;
import defpackage.hi7;
import defpackage.hq2;
import defpackage.jna;
import defpackage.nl2;
import defpackage.r11;
import defpackage.s86;
import defpackage.tg5;
import defpackage.vg9;
import defpackage.wg9;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.ListIterator;
import java.util.Objects;
import java.util.Set;
import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Provider;
import javax.inject.Singleton;

/* JADX INFO: loaded from: classes.dex */
@Singleton
@dva
public class SQLiteEventStore implements hq2, wg9, e11 {
    public static final nl2 f = new nl2("proto");
    public final SchemaManager a;
    public final r11 b;
    public final r11 c;
    public final com.google.android.datatransport.runtime.scheduling.persistence.c d;
    public final Provider e;

    public interface b<T, U> {
        Object apply(Object obj);
    }

    public static class c {
        public final String a;
        public final String b;

        public c(String str, String str2) {
            this.a = str;
            this.b = str2;
        }
    }

    public interface d<T> {
    }

    @Inject
    public SQLiteEventStore(@jna r11 r11Var, @s86 r11 r11Var2, com.google.android.datatransport.runtime.scheduling.persistence.c cVar, SchemaManager schemaManager, @Named("PACKAGE_NAME") Provider<String> provider) {
        this.a = schemaManager;
        this.b = r11Var;
        this.c = r11Var2;
        this.d = cVar;
        this.e = provider;
    }

    public static Long l(SQLiteDatabase sQLiteDatabase, com.google.android.datatransport.runtime.j jVar) {
        StringBuilder sb = new StringBuilder("backend_name = ? and priority = ?");
        ArrayList arrayList = new ArrayList(Arrays.asList(jVar.b(), String.valueOf(hi7.a(jVar.d()))));
        if (jVar.c() != null) {
            sb.append(" and extras = ?");
            arrayList.add(Base64.encodeToString(jVar.c(), 0));
        } else {
            sb.append(" and extras is null");
        }
        Cursor cursorQuery = sQLiteDatabase.query("transport_contexts", new String[]{"_id"}, sb.toString(), (String[]) arrayList.toArray(new String[0]), null, null, null);
        try {
            return !cursorQuery.moveToNext() ? null : Long.valueOf(cursorQuery.getLong(0));
        } finally {
            cursorQuery.close();
        }
    }

    public static String u(Iterable iterable) {
        StringBuilder sb = new StringBuilder("(");
        Iterator it = iterable.iterator();
        while (it.hasNext()) {
            sb.append(((f67) it.next()).b());
            if (it.hasNext()) {
                sb.append(',');
            }
        }
        sb.append(')');
        return sb.toString();
    }

    public static Object w(Cursor cursor, b bVar) {
        try {
            return bVar.apply(cursor);
        } finally {
            cursor.close();
        }
    }

    @Override // defpackage.e11
    public final void a() {
        n(new k(this, 0));
    }

    @Override // defpackage.hq2
    public final long aq(com.google.android.datatransport.runtime.j jVar) {
        Cursor cursorRawQuery = k().rawQuery("SELECT next_request_ms FROM transport_contexts WHERE backend_name = ? and priority = ?", new String[]{jVar.b(), String.valueOf(hi7.a(jVar.d()))});
        try {
            Long lValueOf = cursorRawQuery.moveToNext() ? Long.valueOf(cursorRawQuery.getLong(0)) : 0L;
            cursorRawQuery.close();
            return lValueOf.longValue();
        } catch (Throwable th) {
            cursorRawQuery.close();
            throw th;
        }
    }

    @Override // defpackage.hq2
    public final boolean ar(com.google.android.datatransport.runtime.j jVar) {
        Boolean bool;
        SQLiteDatabase sQLiteDatabaseK = k();
        sQLiteDatabaseK.beginTransaction();
        try {
            Long l = l(sQLiteDatabaseK, jVar);
            if (l == null) {
                bool = Boolean.FALSE;
            } else {
                Cursor cursorRawQuery = k().rawQuery("SELECT 1 FROM events WHERE context_id = ? LIMIT 1", new String[]{l.toString()});
                try {
                    Boolean boolValueOf = Boolean.valueOf(cursorRawQuery.moveToNext());
                    cursorRawQuery.close();
                    bool = boolValueOf;
                } catch (Throwable th) {
                    cursorRawQuery.close();
                    throw th;
                }
            }
            sQLiteDatabaseK.setTransactionSuccessful();
            sQLiteDatabaseK.endTransaction();
            return bool.booleanValue();
        } catch (Throwable th2) {
            sQLiteDatabaseK.endTransaction();
            throw th2;
        }
    }

    @Override // defpackage.hq2
    public final void ax(Iterable iterable) {
        if (iterable.iterator().hasNext()) {
            String str = "UPDATE events SET num_attempts = num_attempts + 1 WHERE _id in " + u(iterable);
            SQLiteDatabase sQLiteDatabaseK = k();
            sQLiteDatabaseK.beginTransaction();
            try {
                sQLiteDatabaseK.compileStatement(str).execute();
                Cursor cursorRawQuery = sQLiteDatabaseK.rawQuery("SELECT COUNT(*), transport_name FROM events WHERE num_attempts >= 16 GROUP BY transport_name", null);
                while (cursorRawQuery.moveToNext()) {
                    try {
                        h(cursorRawQuery.getInt(0), tg5.b.MAX_RETRIES_REACHED, cursorRawQuery.getString(1));
                    } catch (Throwable th) {
                        cursorRawQuery.close();
                        throw th;
                    }
                }
                cursorRawQuery.close();
                sQLiteDatabaseK.compileStatement("DELETE FROM events WHERE num_attempts >= 16").execute();
                sQLiteDatabaseK.setTransactionSuccessful();
            } finally {
                sQLiteDatabaseK.endTransaction();
            }
        }
    }

    @Override // defpackage.wg9
    public final Object b(wg9.a aVar) {
        SQLiteDatabase sQLiteDatabaseK = k();
        r11 r11Var = this.c;
        long jA = r11Var.a();
        while (true) {
            try {
                sQLiteDatabaseK.beginTransaction();
                try {
                    Object objExecute = aVar.execute();
                    sQLiteDatabaseK.setTransactionSuccessful();
                    return objExecute;
                } finally {
                    sQLiteDatabaseK.endTransaction();
                }
            } catch (SQLiteDatabaseLockedException e) {
                if (r11Var.a() >= ((long) this.d.a()) + jA) {
                    throw new vg9("Timed out while trying to acquire the lock.", e);
                }
                SystemClock.sleep(50L);
            }
        }
    }

    @Override // defpackage.hq2
    public final Iterable be(final com.google.android.datatransport.runtime.j jVar) {
        return (Iterable) n(new b() { // from class: com.google.android.datatransport.runtime.scheduling.persistence.i
            @Override // com.google.android.datatransport.runtime.scheduling.persistence.SQLiteEventStore.b
            public final Object apply(Object obj) {
                SQLiteDatabase sQLiteDatabase = (SQLiteDatabase) obj;
                SQLiteEventStore sQLiteEventStore = this.a;
                c cVar = sQLiteEventStore.d;
                int iC = cVar.c();
                com.google.android.datatransport.runtime.j jVar2 = jVar;
                ArrayList arrayListP = sQLiteEventStore.p(sQLiteDatabase, jVar2, iC);
                for (ci7 ci7Var : ci7.values()) {
                    if (ci7Var != jVar2.d()) {
                        int iC2 = cVar.c() - arrayListP.size();
                        if (iC2 <= 0) {
                            break;
                        }
                        arrayListP.addAll(sQLiteEventStore.p(sQLiteDatabase, jVar2.e(ci7Var), iC2));
                    }
                }
                HashMap map = new HashMap();
                StringBuilder sb = new StringBuilder("event_id IN (");
                for (int i = 0; i < arrayListP.size(); i++) {
                    sb.append(((f67) arrayListP.get(i)).b());
                    if (i < arrayListP.size() - 1) {
                        sb.append(',');
                    }
                }
                sb.append(')');
                SQLiteEventStore.w(sQLiteDatabase.query("event_metadata", new String[]{"event_id", AppMeasurementSdk.ConditionalUserProperty.NAME, AppMeasurementSdk.ConditionalUserProperty.VALUE}, sb.toString(), null, null, null, null), new k(map, 1));
                ListIterator listIterator = arrayListP.listIterator();
                while (listIterator.hasNext()) {
                    f67 f67Var = (f67) listIterator.next();
                    if (map.containsKey(Long.valueOf(f67Var.b()))) {
                        e.a aVarN = f67Var.a().n();
                        for (SQLiteEventStore.c cVar2 : (Set) map.get(Long.valueOf(f67Var.b()))) {
                            aVarN.a(cVar2.a, cVar2.b);
                        }
                        listIterator.set(new b(f67Var.b(), f67Var.c(), aVarN.b()));
                    }
                }
                return arrayListP;
            }
        });
    }

    @Override // defpackage.hq2
    public final void bu(final long j, final com.google.android.datatransport.runtime.j jVar) {
        n(new b() { // from class: com.google.android.datatransport.runtime.scheduling.persistence.j
            @Override // com.google.android.datatransport.runtime.scheduling.persistence.SQLiteEventStore.b
            public final Object apply(Object obj) {
                SQLiteDatabase sQLiteDatabase = (SQLiteDatabase) obj;
                nl2 nl2Var = SQLiteEventStore.f;
                ContentValues contentValues = new ContentValues();
                contentValues.put("next_request_ms", Long.valueOf(j));
                com.google.android.datatransport.runtime.j jVar2 = jVar;
                if (sQLiteDatabase.update("transport_contexts", contentValues, "backend_name = ? and priority = ?", new String[]{jVar2.b(), String.valueOf(hi7.a(jVar2.d()))}) < 1) {
                    contentValues.put("backend_name", jVar2.b());
                    contentValues.put("priority", Integer.valueOf(hi7.a(jVar2.d())));
                    sQLiteDatabase.insert("transport_contexts", null, contentValues);
                }
                return null;
            }
        });
    }

    @Override // defpackage.hq2
    public final f67 ca(com.google.android.datatransport.runtime.j jVar, com.google.android.datatransport.runtime.e eVar) {
        ci7 ci7VarD = jVar.d();
        eVar.l();
        if (Log.isLoggable("TRuntime.".concat("SQLiteEventStore"), 3)) {
            new StringBuilder("Storing event with priority=").append(ci7VarD);
        }
        long jLongValue = ((Long) n(new f(this, eVar, jVar, 1))).longValue();
        if (jLongValue < 1) {
            return null;
        }
        return new com.google.android.datatransport.runtime.scheduling.persistence.b(jLongValue, jVar, eVar);
    }

    @Override // java.io.Closeable, java.lang.AutoCloseable
    public final void close() {
        this.a.close();
    }

    @Override // defpackage.e11
    public final h11 d() {
        int i = h11.e;
        h11.a aVar = new h11.a();
        HashMap map = new HashMap();
        SQLiteDatabase sQLiteDatabaseK = k();
        sQLiteDatabaseK.beginTransaction();
        try {
            h11 h11Var = (h11) w(sQLiteDatabaseK.rawQuery("SELECT log_source, reason, events_dropped_count FROM log_event_dropped", new String[0]), new f(this, map, aVar, 0));
            sQLiteDatabaseK.setTransactionSuccessful();
            return h11Var;
        } finally {
            sQLiteDatabaseK.endTransaction();
        }
    }

    @Override // defpackage.hq2
    public final int e() {
        long jA = this.b.a() - this.d.b();
        SQLiteDatabase sQLiteDatabaseK = k();
        sQLiteDatabaseK.beginTransaction();
        try {
            String[] strArr = {String.valueOf(jA)};
            Cursor cursorRawQuery = sQLiteDatabaseK.rawQuery("SELECT COUNT(*), transport_name FROM events WHERE timestamp_ms < ? GROUP BY transport_name", strArr);
            while (cursorRawQuery.moveToNext()) {
                try {
                    h(cursorRawQuery.getInt(0), tg5.b.MESSAGE_TOO_OLD, cursorRawQuery.getString(1));
                } catch (Throwable th) {
                    cursorRawQuery.close();
                    throw th;
                }
            }
            cursorRawQuery.close();
            int iDelete = sQLiteDatabaseK.delete("events", "timestamp_ms < ?", strArr);
            sQLiteDatabaseK.setTransactionSuccessful();
            return iDelete;
        } finally {
            sQLiteDatabaseK.endTransaction();
        }
    }

    @Override // defpackage.e11
    public final void h(final long j, final tg5.b bVar, final String str) {
        n(new b() { // from class: com.google.android.datatransport.runtime.scheduling.persistence.l
            @Override // com.google.android.datatransport.runtime.scheduling.persistence.SQLiteEventStore.b
            public final Object apply(Object obj) {
                SQLiteDatabase sQLiteDatabase = (SQLiteDatabase) obj;
                nl2 nl2Var = SQLiteEventStore.f;
                int i = bVar.a;
                String string = Integer.toString(i);
                String str2 = str;
                Cursor cursorRawQuery = sQLiteDatabase.rawQuery("SELECT 1 FROM log_event_dropped WHERE log_source = ? AND reason = ?", new String[]{str2, string});
                try {
                    nl2 nl2Var2 = SQLiteEventStore.f;
                    boolean z = cursorRawQuery.getCount() > 0;
                    cursorRawQuery.close();
                    long j2 = j;
                    if (z) {
                        sQLiteDatabase.execSQL(fi7.e(j2, "UPDATE log_event_dropped SET events_dropped_count = events_dropped_count + ", " WHERE log_source = ? AND reason = ?"), new String[]{str2, Integer.toString(i)});
                        return null;
                    }
                    ContentValues contentValues = new ContentValues();
                    contentValues.put("log_source", str2);
                    contentValues.put("reason", Integer.valueOf(i));
                    contentValues.put("events_dropped_count", Long.valueOf(j2));
                    sQLiteDatabase.insert("log_event_dropped", null, contentValues);
                    return null;
                } catch (Throwable th) {
                    cursorRawQuery.close();
                    throw th;
                }
            }
        });
    }

    public final SQLiteDatabase k() {
        SchemaManager schemaManager = this.a;
        Objects.requireNonNull(schemaManager);
        r11 r11Var = this.c;
        long jA = r11Var.a();
        while (true) {
            try {
                return schemaManager.getWritableDatabase();
            } catch (SQLiteDatabaseLockedException e) {
                if (r11Var.a() >= ((long) this.d.a()) + jA) {
                    throw new vg9("Timed out while trying to open db.", e);
                }
                SystemClock.sleep(50L);
            }
        }
    }

    @Override // defpackage.hq2
    public final void m(Iterable iterable) {
        if (iterable.iterator().hasNext()) {
            k().compileStatement("DELETE FROM events WHERE _id in " + u(iterable)).execute();
        }
    }

    public final Object n(b bVar) {
        SQLiteDatabase sQLiteDatabaseK = k();
        sQLiteDatabaseK.beginTransaction();
        try {
            Object objApply = bVar.apply(sQLiteDatabaseK);
            sQLiteDatabaseK.setTransactionSuccessful();
            return objApply;
        } finally {
            sQLiteDatabaseK.endTransaction();
        }
    }

    public final ArrayList p(SQLiteDatabase sQLiteDatabase, com.google.android.datatransport.runtime.j jVar, int i) {
        ArrayList arrayList = new ArrayList();
        Long l = l(sQLiteDatabase, jVar);
        if (l == null) {
            return arrayList;
        }
        w(sQLiteDatabase.query("events", new String[]{"_id", "transport_name", "timestamp_ms", "uptime_ms", "payload_encoding", "payload", "code", "inline", "product_id", "pseudonymous_id", "experiment_ids_clear_blob", "experiment_ids_encrypted_blob"}, "context_id = ?", new String[]{l.toString()}, null, null, null, String.valueOf(i)), new f(this, arrayList, jVar, 2));
        return arrayList;
    }

    @Override // defpackage.hq2
    public final Iterable t() {
        return (Iterable) n(new h(0));
    }
}
