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