.class public final Landroidx/room/util/CursorUtil; .super Ljava/lang/Object; .source "CursorUtil.kt" # annotations .annotation system Ldalvik/annotation/SourceDebugExtension; value = "SMAP\nCursorUtil.kt\nKotlin\n*S Kotlin\n*F\n+ 1 CursorUtil.kt\nandroidx/room/util/CursorUtil\n+ 2 _Arrays.kt\nkotlin/collections/ArraysKt___ArraysKt\n+ 3 fake.kt\nkotlin/jvm/internal/FakeKt\n*L\n1#1,183:1\n145#1,7:184\n13608#2,3:191\n1#3:194\n*S KotlinDebug\n*F\n+ 1 CursorUtil.kt\nandroidx/room/util/CursorUtil\n*L\n39#1:184,7\n127#1:191,3\n*E\n" .end annotation .annotation runtime Lkotlin/Metadata; d1 = { "\u00000\n\u0000\n\u0002\u0018\u0002\n\u0002\u0008\u0002\n\u0002\u0010\u0008\n\u0002\u0008\u0002\n\u0002\u0010\u000e\n\u0000\n\u0002\u0010\u0011\n\u0002\u0008\u0005\n\u0002\u0010\u0015\n\u0002\u0008\u0004\n\u0002\u0018\u0002\n\u0002\u0008\u0002\u001a\u000e\u0010\u0000\u001a\u00020\u00012\u0006\u0010\u0002\u001a\u00020\u0001\u001a\u0018\u0010\u0003\u001a\u00020\u00042\u0006\u0010\u0005\u001a\u00020\u00012\u0006\u0010\u0006\u001a\u00020\u0007H\u0002\u001a#\u0010\u0003\u001a\u00020\u00042\u000c\u0010\u0008\u001a\u0008\u0012\u0004\u0012\u00020\u00070\t2\u0006\u0010\u0006\u001a\u00020\u0007H\u0007\u00a2\u0006\u0002\u0010\n\u001a\u0016\u0010\u000b\u001a\u00020\u00042\u0006\u0010\u0002\u001a\u00020\u00012\u0006\u0010\u0006\u001a\u00020\u0007\u001a\u0016\u0010\u000c\u001a\u00020\u00042\u0006\u0010\u0002\u001a\u00020\u00012\u0006\u0010\u0006\u001a\u00020\u0007\u001a)\u0010\r\u001a\u00020\u00012\u0006\u0010\u0005\u001a\u00020\u00012\u000c\u0010\u0008\u001a\u0008\u0012\u0004\u0012\u00020\u00070\t2\u0006\u0010\u000e\u001a\u00020\u000f\u00a2\u0006\u0002\u0010\u0010\u001a/\u0010\u0011\u001a\u0002H\u0012\"\u0004\u0008\u0000\u0010\u0012*\u00020\u00012\u0012\u0010\u0013\u001a\u000e\u0012\u0004\u0012\u00020\u0001\u0012\u0004\u0012\u0002H\u00120\u0014H\u0086\u0008\u00f8\u0001\u0000\u00a2\u0006\u0002\u0010\u0015\u0082\u0002\u0007\n\u0005\u0008\u009920\u0001\u00a8\u0006\u0016" } d2 = { "copyAndClose", "Landroid/database/Cursor;", "c", "findColumnIndexBySuffix", "", "cursor", "name", "", "columnNames", "", "([Ljava/lang/String;Ljava/lang/String;)I", "getColumnIndex", "getColumnIndexOrThrow", "wrapMappedColumns", "mapping", "", "(Landroid/database/Cursor;[Ljava/lang/String;[I)Landroid/database/Cursor;", "useCursor", "R", "block", "Lkotlin/Function1;", "(Landroid/database/Cursor;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;", "room-runtime_release" } k = 0x2 mv = { 0x1, 0x7, 0x1 } xi = 0x30 .end annotation # direct methods .method public static final copyAndClose(Landroid/database/Cursor;)Landroid/database/Cursor; .locals 9 const-string v0, "c" invoke-static {p0, v0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V .line 185 move-object v0, p0 check-cast v0, Ljava/io/Closeable; :try_start_0 move-object v1, v0 check-cast v1, Landroid/database/Cursor; .line 40 new-instance v2, Landroid/database/MatrixCursor; invoke-interface {v1}, Landroid/database/Cursor;->getColumnNames()[Ljava/lang/String; move-result-object v3 invoke-interface {v1}, Landroid/database/Cursor;->getCount()I move-result v4 invoke-direct {v2, v3, v4}, Landroid/database/MatrixCursor;->([Ljava/lang/String;I)V .line 41 :goto_0 invoke-interface {v1}, Landroid/database/Cursor;->moveToNext()Z move-result v3 const/4 v4, 0x0 if-eqz v3, :cond_6 .line 42 invoke-interface {v1}, Landroid/database/Cursor;->getColumnCount()I move-result v3 new-array v3, v3, [Ljava/lang/Object; .line 43 invoke-interface {p0}, Landroid/database/Cursor;->getColumnCount()I move-result v5 const/4 v6, 0x0 :goto_1 if-ge v6, v5, :cond_5 .line 44 invoke-interface {v1, v6}, Landroid/database/Cursor;->getType(I)I move-result v7 if-eqz v7, :cond_4 const/4 v8, 0x1 if-eq v7, v8, :cond_3 const/4 v8, 0x2 if-eq v7, v8, :cond_2 const/4 v8, 0x3 if-eq v7, v8, :cond_1 const/4 v8, 0x4 if-ne v7, v8, :cond_0 .line 49 invoke-interface {v1, v6}, Landroid/database/Cursor;->getBlob(I)[B move-result-object v7 aput-object v7, v3, v6 goto :goto_2 .line 50 :cond_0 new-instance p0, Ljava/lang/IllegalStateException; invoke-direct {p0}, Ljava/lang/IllegalStateException;->()V throw p0 .line 48 :cond_1 invoke-interface {v1, v6}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; move-result-object v7 aput-object v7, v3, v6 goto :goto_2 .line 47 :cond_2 invoke-interface {v1, v6}, Landroid/database/Cursor;->getDouble(I)D move-result-wide v7 invoke-static {v7, v8}, Ljava/lang/Double;->valueOf(D)Ljava/lang/Double; move-result-object v7 aput-object v7, v3, v6 goto :goto_2 .line 46 :cond_3 invoke-interface {v1, v6}, Landroid/database/Cursor;->getLong(I)J move-result-wide v7 invoke-static {v7, v8}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; move-result-object v7 aput-object v7, v3, v6 goto :goto_2 .line 45 :cond_4 aput-object v4, v3, v6 :goto_2 add-int/lit8 v6, v6, 0x1 goto :goto_1 .line 53 :cond_5 invoke-virtual {v2, v3}, Landroid/database/MatrixCursor;->addRow([Ljava/lang/Object;)V :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 goto :goto_0 .line 185 :cond_6 invoke-static {v0, v4}, Lkotlin/io/CloseableKt;->closeFinally(Ljava/io/Closeable;Ljava/lang/Throwable;)V .line 190 check-cast v2, Landroid/database/Cursor; return-object v2 :catchall_0 move-exception p0 .line 185 :try_start_1 throw p0 :try_end_1 .catchall {:try_start_1 .. :try_end_1} :catchall_1 :catchall_1 move-exception v1 invoke-static {v0, p0}, Lkotlin/io/CloseableKt;->closeFinally(Ljava/io/Closeable;Ljava/lang/Throwable;)V throw v1 .end method .method private static final findColumnIndexBySuffix(Landroid/database/Cursor;Ljava/lang/String;)I .locals 0 const/4 p0, -0x1 return p0 .end method .method public static final findColumnIndexBySuffix([Ljava/lang/String;Ljava/lang/String;)I .locals 12 const-string v0, "columnNames" invoke-static {p0, v0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V const-string v0, "name" invoke-static {p1, v0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V .line 125 new-instance v0, Ljava/lang/StringBuilder; const-string v1, "." invoke-direct {v0, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 .line 126 new-instance v2, Ljava/lang/StringBuilder; invoke-direct {v2, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v1 const/16 v2, 0x60 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v1 .line 192 array-length v3, p0 const/4 v4, 0x0 move v5, v4 move v6, v5 :goto_0 if-ge v5, v3, :cond_2 aget-object v7, p0, v5 add-int/lit8 v8, v6, 0x1 .line 129 invoke-virtual {v7}, Ljava/lang/String;->length()I move-result v9 invoke-virtual {p1}, Ljava/lang/String;->length()I move-result v10 const/4 v11, 0x2 add-int/2addr v10, v11 if-lt v9, v10, :cond_1 const/4 v9, 0x0 .line 130 invoke-static {v7, v0, v4, v11, v9}, Lkotlin/text/StringsKt;->endsWith$default(Ljava/lang/String;Ljava/lang/String;ZILjava/lang/Object;)Z move-result v10 if-eqz v10, :cond_0 return v6 .line 132 :cond_0 invoke-virtual {v7, v4}, Ljava/lang/String;->charAt(I)C move-result v10 if-ne v10, v2, :cond_1 invoke-static {v7, v1, v4, v11, v9}, Lkotlin/text/StringsKt;->endsWith$default(Ljava/lang/String;Ljava/lang/String;ZILjava/lang/Object;)Z move-result v7 if-eqz v7, :cond_1 return v6 :cond_1 add-int/lit8 v5, v5, 0x1 move v6, v8 goto :goto_0 :cond_2 const/4 p0, -0x1 return p0 .end method .method public static final getColumnIndex(Landroid/database/Cursor;Ljava/lang/String;)I .locals 2 const-string v0, "c" invoke-static {p0, v0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V const-string v0, "name" invoke-static {p1, v0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V .line 67 invoke-interface {p0, p1}, Landroid/database/Cursor;->getColumnIndex(Ljava/lang/String;)I move-result v0 if-ltz v0, :cond_0 return v0 .line 71 :cond_0 new-instance v0, Ljava/lang/StringBuilder; const-string v1, "`" invoke-direct {v0, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 const/16 v1, 0x60 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 invoke-interface {p0, v0}, Landroid/database/Cursor;->getColumnIndex(Ljava/lang/String;)I move-result v0 if-ltz v0, :cond_1 goto :goto_0 .line 75 :cond_1 invoke-static {p0, p1}, Landroidx/room/util/CursorUtil;->findColumnIndexBySuffix(Landroid/database/Cursor;Ljava/lang/String;)I move-result v0 :goto_0 return v0 .end method .method public static final getColumnIndexOrThrow(Landroid/database/Cursor;Ljava/lang/String;)I .locals 10 const-string v0, "c" invoke-static {p0, v0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V const-string v0, "name" invoke-static {p1, v0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V .line 89 invoke-static {p0, p1}, Landroidx/room/util/CursorUtil;->getColumnIndex(Landroid/database/Cursor;Ljava/lang/String;)I move-result v0 if-ltz v0, :cond_0 return v0 .line 94 :cond_0 :try_start_0 invoke-interface {p0}, Landroid/database/Cursor;->getColumnNames()[Ljava/lang/String; move-result-object p0 const-string v0, "c.columnNames" invoke-static {p0, v0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V move-object v1, p0 check-cast v1, [Ljava/lang/Object; const/4 v2, 0x0 const/4 v3, 0x0 const/4 v4, 0x0 const/4 v5, 0x0 const/4 v6, 0x0 const/4 v7, 0x0 const/16 v8, 0x3f const/4 v9, 0x0 invoke-static/range {v1 .. v9}, Lkotlin/collections/ArraysKt;->joinToString$default([Ljava/lang/Object;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/String; move-result-object p0 :try_end_0 .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 goto :goto_0 :catch_0 move-exception p0 const-string v0, "Cannot collect column names for debug purposes" .line 96 check-cast p0, Ljava/lang/Throwable; const-string v1, "RoomCursorUtil" invoke-static {v1, v0, p0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I const-string p0, "unknown" .line 99 :goto_0 new-instance v0, Ljava/lang/IllegalArgumentException; .line 100 new-instance v1, Ljava/lang/StringBuilder; const-string v2, "column \'" invoke-direct {v1, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p1 const-string v1, "\' does not exist. Available columns: " invoke-virtual {p1, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p1 invoke-virtual {p1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p0 invoke-virtual {p0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p0 .line 99 invoke-direct {v0, p0}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V throw v0 .end method .method public static final useCursor(Landroid/database/Cursor;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; .locals 2 .annotation system Ldalvik/annotation/Signature; value = { "(", "Landroid/database/Cursor;", "Lkotlin/jvm/functions/Function1<", "-", "Landroid/database/Cursor;", "+TR;>;)TR;" } .end annotation const-string v0, "" invoke-static {p0, v0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V const-string v0, "block" invoke-static {p1, v0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V .line 146 check-cast p0, Ljava/io/Closeable; const/4 v0, 0x1 :try_start_0 invoke-interface {p1, p0}, Lkotlin/jvm/functions/Function1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; move-result-object p1 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 invoke-static {v0}, Lkotlin/jvm/internal/InlineMarker;->finallyStart(I)V const/4 v1, 0x0 invoke-static {p0, v1}, Lkotlin/io/CloseableKt;->closeFinally(Ljava/io/Closeable;Ljava/lang/Throwable;)V invoke-static {v0}, Lkotlin/jvm/internal/InlineMarker;->finallyEnd(I)V return-object p1 :catchall_0 move-exception p1 :try_start_1 throw p1 :try_end_1 .catchall {:try_start_1 .. :try_end_1} :catchall_1 :catchall_1 move-exception v1 invoke-static {v0}, Lkotlin/jvm/internal/InlineMarker;->finallyStart(I)V invoke-static {p0, p1}, Lkotlin/io/CloseableKt;->closeFinally(Ljava/io/Closeable;Ljava/lang/Throwable;)V invoke-static {v0}, Lkotlin/jvm/internal/InlineMarker;->finallyEnd(I)V throw v1 .end method .method public static final wrapMappedColumns(Landroid/database/Cursor;[Ljava/lang/String;[I)Landroid/database/Cursor; .locals 2 const-string v0, "cursor" invoke-static {p0, v0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V const-string v0, "columnNames" invoke-static {p1, v0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V const-string v0, "mapping" invoke-static {p2, v0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V .line 172 array-length v0, p1 array-length v1, p2 if-ne v0, v1, :cond_0 .line 173 new-instance v0, Landroidx/room/util/CursorUtil$wrapMappedColumns$2; invoke-direct {v0, p0, p1, p2}, Landroidx/room/util/CursorUtil$wrapMappedColumns$2;->(Landroid/database/Cursor;[Ljava/lang/String;[I)V check-cast v0, Landroid/database/Cursor; return-object v0 .line 172 :cond_0 new-instance p0, Ljava/lang/IllegalStateException; const-string p1, "Expected columnNames.length == mapping.length" invoke-virtual {p1}, Ljava/lang/Object;->toString()Ljava/lang/String; move-result-object p1 invoke-direct {p0, p1}, Ljava/lang/IllegalStateException;->(Ljava/lang/String;)V throw p0 .end method