package androidx.sqlite.db; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; import android.text.TextUtils; import android.util.Log; import android.util.Pair; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; import c.d.b.a.a; import java.io.Closeable; import java.io.File; import java.io.IOException; import java.util.List; public interface SupportSQLiteOpenHelper extends Closeable { public static abstract class Callback { private static final String TAG = "SupportSQLite"; public final int version; public Callback(int i) { this.version = i; } private void deleteDatabaseFile(String str) { if (!str.equalsIgnoreCase(":memory:") && str.trim().length() != 0) { a.h0("deleting the database file: ", str, "SupportSQLite"); try { SQLiteDatabase.deleteDatabase(new File(str)); } catch (Exception e) { Log.w("SupportSQLite", "delete failed: ", e); } } } public void onConfigure(@NonNull SupportSQLiteDatabase supportSQLiteDatabase) { } /* JADX WARNING: Code restructure failed: missing block: B:11:0x0030, code lost: if (r0 != null) goto L_0x0032; */ /* JADX WARNING: Code restructure failed: missing block: B:12:0x0032, code lost: r3 = r0.iterator(); */ /* JADX WARNING: Code restructure failed: missing block: B:14:0x003a, code lost: if (r3.hasNext() != false) goto L_0x003c; */ /* JADX WARNING: Code restructure failed: missing block: B:15:0x003c, code lost: deleteDatabaseFile((java.lang.String) r3.next().second); */ /* JADX WARNING: Code restructure failed: missing block: B:16:0x004a, code lost: deleteDatabaseFile(r3.getPath()); */ /* JADX WARNING: Code restructure failed: missing block: B:17:0x0051, code lost: throw r1; */ /* JADX WARNING: Code restructure failed: missing block: B:7:0x002a, code lost: r1 = move-exception; */ /* JADX WARNING: Failed to process nested try/catch */ /* JADX WARNING: Removed duplicated region for block: B:7:0x002a A[ExcHandler: all (r1v2 'th' java.lang.Throwable A[CUSTOM_DECLARE]), PHI: r0 PHI: (r0v12 java.util.List>) = (r0v4 java.util.List>), (r0v6 java.util.List>), (r0v6 java.util.List>) binds: [B:5:0x0025, B:8:0x002c, B:10:?] A[DONT_GENERATE, DONT_INLINE], Splitter:B:5:0x0025] */ public void onCorruption(@NonNull SupportSQLiteDatabase supportSQLiteDatabase) { StringBuilder L = a.L("Corruption reported by sqlite on database: "); L.append(supportSQLiteDatabase.getPath()); Log.e("SupportSQLite", L.toString()); if (!supportSQLiteDatabase.isOpen()) { deleteDatabaseFile(supportSQLiteDatabase.getPath()); return; } List> list = null; try { list = supportSQLiteDatabase.getAttachedDbs(); supportSQLiteDatabase.close(); } catch (IOException unused) { } catch (Throwable th) { } if (list != null) { for (Pair pair : list) { deleteDatabaseFile((String) pair.second); } return; } deleteDatabaseFile(supportSQLiteDatabase.getPath()); } public abstract void onCreate(@NonNull SupportSQLiteDatabase supportSQLiteDatabase); public void onDowngrade(@NonNull SupportSQLiteDatabase supportSQLiteDatabase, int i, int i2) { throw new SQLiteException(a.n("Can't downgrade database from version ", i, " to ", i2)); } public void onOpen(@NonNull SupportSQLiteDatabase supportSQLiteDatabase) { } public abstract void onUpgrade(@NonNull SupportSQLiteDatabase supportSQLiteDatabase, int i, int i2); } public static class Configuration { @NonNull public final Callback callback; @NonNull public final Context context; @Nullable public final String name; public final boolean useNoBackupDirectory; public static class Builder { public Callback mCallback; public Context mContext; public String mName; public boolean mUseNoBackUpDirectory; public Builder(@NonNull Context context) { this.mContext = context; } @NonNull public Configuration build() { if (this.mCallback == null) { throw new IllegalArgumentException("Must set a callback to create the configuration."); } else if (this.mContext == null) { throw new IllegalArgumentException("Must set a non-null context to create the configuration."); } else if (!this.mUseNoBackUpDirectory || !TextUtils.isEmpty(this.mName)) { return new Configuration(this.mContext, this.mName, this.mCallback, this.mUseNoBackUpDirectory); } else { throw new IllegalArgumentException("Must set a non-null database name to a configuration that uses the no backup directory."); } } @NonNull public Builder callback(@NonNull Callback callback) { this.mCallback = callback; return this; } @NonNull public Builder name(@Nullable String str) { this.mName = str; return this; } @NonNull public Builder noBackupDirectory(boolean z2) { this.mUseNoBackUpDirectory = z2; return this; } } public Configuration(@NonNull Context context, @Nullable String str, @NonNull Callback callback) { this(context, str, callback, false); } public Configuration(@NonNull Context context, @Nullable String str, @NonNull Callback callback, boolean z2) { this.context = context; this.name = str; this.callback = callback; this.useNoBackupDirectory = z2; } @NonNull public static Builder builder(@NonNull Context context) { return new Builder(context); } } public interface Factory { @NonNull SupportSQLiteOpenHelper create(@NonNull Configuration configuration); } @Override // java.io.Closeable, java.lang.AutoCloseable void close(); @Nullable String getDatabaseName(); SupportSQLiteDatabase getReadableDatabase(); SupportSQLiteDatabase getWritableDatabase(); @RequiresApi(api = 16) void setWriteAheadLoggingEnabled(boolean z2); }