d0.smali

.class public final Landroidx/room/d0;
.super Landroidx/sqlite/db/b$a;
.source "SourceFile"


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Landroidx/room/d0$b;,
        Landroidx/room/d0$a;
    }
.end annotation


# instance fields
.field public b:Landroidx/room/c;

.field public final c:Landroidx/room/d0$a;

.field public final d:Ljava/lang/String;

.field public final e:Ljava/lang/String;


# direct methods
.method public constructor <init>(Landroidx/room/c;Landroidx/room/d0$a;Ljava/lang/String;Ljava/lang/String;)V
    .registers 6

    .line 1
    iget v0, p2, Landroidx/room/d0$a;->version:I

    invoke-direct {p0, v0}, Landroidx/sqlite/db/b$a;-><init>(I)V

    .line 2
    iput-object p1, p0, Landroidx/room/d0;->b:Landroidx/room/c;

    .line 3
    iput-object p2, p0, Landroidx/room/d0;->c:Landroidx/room/d0$a;

    .line 4
    iput-object p3, p0, Landroidx/room/d0;->d:Ljava/lang/String;

    .line 5
    iput-object p4, p0, Landroidx/room/d0;->e:Ljava/lang/String;

    return-void
.end method


# virtual methods
.method public final b()V
    .registers 1

    return-void
.end method

.method public final c(Landroidx/sqlite/db/a;)V
    .registers 5

    .line 1
    check-cast p1, Landroidx/sqlite/db/framework/a;

    const-string v0, "SELECT count(*) FROM sqlite_master WHERE name != \'android_metadata\'"

    invoke-virtual {p1, v0}, Landroidx/sqlite/db/framework/a;->J0(Ljava/lang/String;)Landroid/database/Cursor;

    move-result-object v0

    .line 2
    :try_start_8
    invoke-interface {v0}, Landroid/database/Cursor;->moveToFirst()Z

    move-result v1

    const/4 v2, 0x0

    if-eqz v1, :cond_16

    invoke-interface {v0, v2}, Landroid/database/Cursor;->getInt(I)I

    move-result v1
    :try_end_13
    .catchall {:try_start_8 .. :try_end_13} :catchall_49

    if-nez v1, :cond_16

    const/4 v2, 0x1

    .line 3
    :cond_16
    invoke-interface {v0}, Landroid/database/Cursor;->close()V

    .line 4
    iget-object v0, p0, Landroidx/room/d0;->c:Landroidx/room/d0$a;

    invoke-virtual {v0, p1}, Landroidx/room/d0$a;->createAllTables(Landroidx/sqlite/db/a;)V

    if-nez v2, :cond_40

    .line 5
    iget-object v0, p0, Landroidx/room/d0;->c:Landroidx/room/d0$a;

    invoke-virtual {v0, p1}, Landroidx/room/d0$a;->onValidateSchema(Landroidx/sqlite/db/a;)Landroidx/room/d0$b;

    move-result-object v0

    .line 6
    iget-boolean v1, v0, Landroidx/room/d0$b;->a:Z

    if-eqz v1, :cond_2b

    goto :goto_40

    .line 7
    :cond_2b
    new-instance p1, Ljava/lang/IllegalStateException;

    const-string v1, "Pre-packaged database has an invalid schema: "

    .line 8
    invoke-static {v1}, Landroid/support/v4/media/c;->c(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    .line 9
    iget-object v0, v0, Landroidx/room/d0$b;->b:Ljava/lang/String;

    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-direct {p1, v0}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V

    throw p1

    .line 10
    :cond_40
    :goto_40
    invoke-virtual {p0, p1}, Landroidx/room/d0;->g(Landroidx/sqlite/db/a;)V

    .line 11
    iget-object v0, p0, Landroidx/room/d0;->c:Landroidx/room/d0$a;

    invoke-virtual {v0, p1}, Landroidx/room/d0$a;->onCreate(Landroidx/sqlite/db/a;)V

    return-void

    :catchall_49
    move-exception p1

    .line 12
    invoke-interface {v0}, Landroid/database/Cursor;->close()V

    .line 13
    throw p1
.end method

.method public final d(Landroidx/sqlite/db/a;II)V
    .registers 4

    invoke-virtual {p0, p1, p2, p3}, Landroidx/room/d0;->f(Landroidx/sqlite/db/a;II)V

    return-void
.end method

.method public final e(Landroidx/sqlite/db/a;)V
    .registers 6

    .line 1
    check-cast p1, Landroidx/sqlite/db/framework/a;

    const-string v0, "SELECT 1 FROM sqlite_master WHERE type = \'table\' AND name=\'room_master_table\'"

    invoke-virtual {p1, v0}, Landroidx/sqlite/db/framework/a;->J0(Ljava/lang/String;)Landroid/database/Cursor;

    move-result-object v0

    .line 2
    :try_start_8
    invoke-interface {v0}, Landroid/database/Cursor;->moveToFirst()Z

    move-result v1

    const/4 v2, 0x0

    if-eqz v1, :cond_17

    invoke-interface {v0, v2}, Landroid/database/Cursor;->getInt(I)I

    move-result v1
    :try_end_13
    .catchall {:try_start_8 .. :try_end_13} :catchall_85

    if-eqz v1, :cond_17

    const/4 v1, 0x1

    goto :goto_18

    :cond_17
    const/4 v1, 0x0

    .line 3
    :goto_18
    invoke-interface {v0}, Landroid/database/Cursor;->close()V

    const/4 v0, 0x0

    if-eqz v1, :cond_56

    .line 4
    new-instance v1, Lorg/greenrobot/eventbus/h;

    const-string v3, "SELECT identity_hash FROM room_master_table WHERE id = 42 LIMIT 1"

    .line 5
    invoke-direct {v1, v3, v0}, Lorg/greenrobot/eventbus/h;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V

    .line 6
    invoke-interface {p1, v1}, Landroidx/sqlite/db/a;->p(Landroidx/sqlite/db/d;)Landroid/database/Cursor;

    move-result-object v1

    .line 7
    :try_start_29
    invoke-interface {v1}, Landroid/database/Cursor;->moveToFirst()Z

    move-result v3

    if-eqz v3, :cond_34

    .line 8
    invoke-interface {v1, v2}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;

    move-result-object v2
    :try_end_33
    .catchall {:try_start_29 .. :try_end_33} :catchall_51

    goto :goto_35

    :cond_34
    move-object v2, v0

    .line 9
    :goto_35
    invoke-interface {v1}, Landroid/database/Cursor;->close()V

    .line 10
    iget-object v1, p0, Landroidx/room/d0;->d:Ljava/lang/String;

    invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v1

    if-nez v1, :cond_68

    iget-object v1, p0, Landroidx/room/d0;->e:Ljava/lang/String;

    invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v1

    if-eqz v1, :cond_49

    goto :goto_68

    .line 11
    :cond_49
    new-instance p1, Ljava/lang/IllegalStateException;

    const-string v0, "Room cannot verify the data integrity. Looks like you\'ve changed schema but forgot to update the version number. You can simply fix this by increasing the version number."

    invoke-direct {p1, v0}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V

    throw p1

    :catchall_51
    move-exception p1

    .line 12
    invoke-interface {v1}, Landroid/database/Cursor;->close()V

    .line 13
    throw p1

    .line 14
    :cond_56
    iget-object v1, p0, Landroidx/room/d0;->c:Landroidx/room/d0$a;

    invoke-virtual {v1, p1}, Landroidx/room/d0$a;->onValidateSchema(Landroidx/sqlite/db/a;)Landroidx/room/d0$b;

    move-result-object v1

    .line 15
    iget-boolean v2, v1, Landroidx/room/d0$b;->a:Z

    if-eqz v2, :cond_70

    .line 16
    iget-object v1, p0, Landroidx/room/d0;->c:Landroidx/room/d0$a;

    invoke-virtual {v1, p1}, Landroidx/room/d0$a;->onPostMigrate(Landroidx/sqlite/db/a;)V

    .line 17
    invoke-virtual {p0, p1}, Landroidx/room/d0;->g(Landroidx/sqlite/db/a;)V

    .line 18
    :cond_68
    :goto_68
    iget-object v1, p0, Landroidx/room/d0;->c:Landroidx/room/d0$a;

    invoke-virtual {v1, p1}, Landroidx/room/d0$a;->onOpen(Landroidx/sqlite/db/a;)V

    .line 19
    iput-object v0, p0, Landroidx/room/d0;->b:Landroidx/room/c;

    return-void

    .line 20
    :cond_70
    new-instance p1, Ljava/lang/IllegalStateException;

    const-string v0, "Pre-packaged database has an invalid schema: "

    .line 21
    invoke-static {v0}, Landroid/support/v4/media/c;->c(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    .line 22
    iget-object v1, v1, Landroidx/room/d0$b;->b:Ljava/lang/String;

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-direct {p1, v0}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V

    throw p1

    :catchall_85
    move-exception p1

    .line 23
    invoke-interface {v0}, Landroid/database/Cursor;->close()V

    .line 24
    throw p1
.end method

.method public final f(Landroidx/sqlite/db/a;II)V
    .registers 14

    .line 1
    iget-object v0, p0, Landroidx/room/d0;->b:Landroidx/room/c;

    const/4 v1, 0x1

    if-eqz v0, :cond_bf

    .line 2
    iget-object v0, v0, Landroidx/room/c;->d:Landroidx/room/c0$d;

    invoke-static {v0}, Ljava/util/Objects;->requireNonNull(Ljava/lang/Object;)Ljava/lang/Object;

    if-ne p2, p3, :cond_12

    .line 3
    invoke-static {}, Ljava/util/Collections;->emptyList()Ljava/util/List;

    move-result-object v0

    goto/16 :goto_7c

    :cond_12
    if-le p3, p2, :cond_16

    const/4 v2, 0x1

    goto :goto_17

    :cond_16
    const/4 v2, 0x0

    .line 4
    :goto_17
    new-instance v3, Ljava/util/ArrayList;

    invoke-direct {v3}, Ljava/util/ArrayList;-><init>()V

    move v4, p2

    :goto_1d
    if-eqz v2, :cond_22

    if-ge v4, p3, :cond_7b

    goto :goto_24

    :cond_22
    if-le v4, p3, :cond_7b

    .line 5
    :goto_24
    iget-object v5, v0, Landroidx/room/c0$d;->a:Ljava/util/HashMap;

    invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v6

    invoke-virtual {v5, v6}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v5

    check-cast v5, Ljava/util/TreeMap;

    const/4 v6, 0x0

    if-nez v5, :cond_34

    goto :goto_77

    :cond_34
    if-eqz v2, :cond_3b

    .line 6
    invoke-virtual {v5}, Ljava/util/TreeMap;->descendingKeySet()Ljava/util/NavigableSet;

    move-result-object v7

    goto :goto_3f

    .line 7
    :cond_3b
    invoke-virtual {v5}, Ljava/util/TreeMap;->keySet()Ljava/util/Set;

    move-result-object v7

    .line 8
    :goto_3f
    invoke-interface {v7}, Ljava/util/Set;->iterator()Ljava/util/Iterator;

    move-result-object v7

    :cond_43
    invoke-interface {v7}, Ljava/util/Iterator;->hasNext()Z

    move-result v8

    if-eqz v8, :cond_72

    invoke-interface {v7}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v8

    check-cast v8, Ljava/lang/Integer;

    invoke-virtual {v8}, Ljava/lang/Integer;->intValue()I

    move-result v8

    if-eqz v2, :cond_5a

    if-gt v8, p3, :cond_60

    if-le v8, v4, :cond_60

    goto :goto_5e

    :cond_5a
    if-lt v8, p3, :cond_60

    if-ge v8, v4, :cond_60

    :goto_5e
    const/4 v9, 0x1

    goto :goto_61

    :cond_60
    const/4 v9, 0x0

    :goto_61
    if-eqz v9, :cond_43

    .line 9
    invoke-static {v8}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v4

    invoke-virtual {v5, v4}, Ljava/util/TreeMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v4

    check-cast v4, Landroidx/room/migration/b;

    invoke-virtual {v3, v4}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

    const/4 v4, 0x1

    goto :goto_75

    :cond_72
    const/4 v5, 0x0

    move v8, v4

    const/4 v4, 0x0

    :goto_75
    if-nez v4, :cond_79

    :goto_77
    move-object v0, v6

    goto :goto_7c

    :cond_79
    move v4, v8

    goto :goto_1d

    :cond_7b
    move-object v0, v3

    :goto_7c
    if-eqz v0, :cond_bf

    .line 10
    iget-object v2, p0, Landroidx/room/d0;->c:Landroidx/room/d0$a;

    invoke-virtual {v2, p1}, Landroidx/room/d0$a;->onPreMigrate(Landroidx/sqlite/db/a;)V

    .line 11
    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v0

    :goto_87
    invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z

    move-result v2

    if-eqz v2, :cond_97

    invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Landroidx/room/migration/b;

    .line 12
    invoke-virtual {v2, p1}, Landroidx/room/migration/b;->a(Landroidx/sqlite/db/a;)V

    goto :goto_87

    .line 13
    :cond_97
    iget-object v0, p0, Landroidx/room/d0;->c:Landroidx/room/d0$a;

    invoke-virtual {v0, p1}, Landroidx/room/d0$a;->onValidateSchema(Landroidx/sqlite/db/a;)Landroidx/room/d0$b;

    move-result-object v0

    .line 14
    iget-boolean v2, v0, Landroidx/room/d0$b;->a:Z

    if-eqz v2, :cond_aa

    .line 15
    iget-object v0, p0, Landroidx/room/d0;->c:Landroidx/room/d0$a;

    invoke-virtual {v0, p1}, Landroidx/room/d0$a;->onPostMigrate(Landroidx/sqlite/db/a;)V

    .line 16
    invoke-virtual {p0, p1}, Landroidx/room/d0;->g(Landroidx/sqlite/db/a;)V

    goto :goto_c0

    .line 17
    :cond_aa
    new-instance p1, Ljava/lang/IllegalStateException;

    const-string p2, "Migration didn\'t properly handle: "

    .line 18
    invoke-static {p2}, Landroid/support/v4/media/c;->c(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object p2

    .line 19
    iget-object p3, v0, Landroidx/room/d0$b;->b:Ljava/lang/String;

    invoke-virtual {p2, p3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p2

    invoke-direct {p1, p2}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V

    throw p1

    :cond_bf
    const/4 v1, 0x0

    :goto_c0
    if-nez v1, :cond_fb

    .line 20
    iget-object v0, p0, Landroidx/room/d0;->b:Landroidx/room/c;

    if-eqz v0, :cond_d7

    .line 21
    invoke-virtual {v0, p2, p3}, Landroidx/room/c;->a(II)Z

    move-result v0

    if-nez v0, :cond_d7

    .line 22
    iget-object p2, p0, Landroidx/room/d0;->c:Landroidx/room/d0$a;

    invoke-virtual {p2, p1}, Landroidx/room/d0$a;->dropAllTables(Landroidx/sqlite/db/a;)V

    .line 23
    iget-object p2, p0, Landroidx/room/d0;->c:Landroidx/room/d0$a;

    invoke-virtual {p2, p1}, Landroidx/room/d0$a;->createAllTables(Landroidx/sqlite/db/a;)V

    goto :goto_fb

    .line 24
    :cond_d7
    new-instance p1, Ljava/lang/IllegalStateException;

    new-instance v0, Ljava/lang/StringBuilder;

    invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V

    const-string v1, "A migration from "

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    const-string p2, " to "

    invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    const-string p2, " was required but not found. Please provide the necessary Migration path via RoomDatabase.Builder.addMigration(Migration ...) or allow for destructive migrations via one of the RoomDatabase.Builder.fallbackToDestructiveMigration* methods."

    invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p2

    invoke-direct {p1, p2}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V

    throw p1

    :cond_fb
    :goto_fb
    return-void
.end method

.method public final g(Landroidx/sqlite/db/a;)V
    .registers 5

    .line 1
    check-cast p1, Landroidx/sqlite/db/framework/a;

    const-string v0, "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)"

    invoke-virtual {p1, v0}, Landroidx/sqlite/db/framework/a;->Y(Ljava/lang/String;)V

    .line 2
    iget-object v0, p0, Landroidx/room/d0;->d:Ljava/lang/String;

    .line 3
    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v2, "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, \'"

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v0, "\')"

    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    .line 4
    invoke-interface {p1, v0}, Landroidx/sqlite/db/a;->Y(Ljava/lang/String;)V

    return-void
.end method