package com.huawei.hms.common.data; import android.content.ContentValues; import android.database.CharArrayBuffer; import android.database.Cursor; import android.database.CursorWindow; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; import com.huawei.hms.common.internal.Preconditions; import com.huawei.hms.common.internal.safeparcel.AbstractSafeParcelable; import com.huawei.hms.common.internal.safeparcel.SafeParcelWriter; import com.huawei.hms.common.sqlite.HMSCursorWrapper; import com.huawei.hms.support.log.HMSLog; import java.io.Closeable; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; /* loaded from: classes2.dex */ public final class DataHolder extends AbstractSafeParcelable implements Closeable { private static final String TAG = "DataHolder"; public static final String TYPE_BOOLEAN = "type_boolean"; public static final String TYPE_BYTE_ARRAY = "type_byte_array"; public static final String TYPE_DOUBLE = "type_double"; public static final String TYPE_FLOAT = "type_float"; public static final String TYPE_INT = "type_int"; public static final String TYPE_LONG = "type_long"; public static final String TYPE_STRING = "type_string"; private String[] columns; private Bundle columnsBundle; private CursorWindow[] cursorWindows; private int dataCount; private boolean isInstance; private boolean mClosed; private Bundle metadata; private int[] perCursorCounts; private int statusCode; private int version; public static final Parcelable.Creator CREATOR = new DataHolderCreator(); private static final Builder BUILDER = new DataHolderBuilderCreator(new String[0], null); /* loaded from: classes2.dex */ public static class Builder { private String[] a; private final ArrayList> b; private final String c; private final HashMap d; /* JADX WARN: Multi-variable type inference failed */ public DataHolder build(int i) { return new DataHolder(this, i, (Bundle) null); } /* JADX WARN: Removed duplicated region for block: B:12:0x003d */ /* JADX WARN: Removed duplicated region for block: B:9:0x0032 */ /* Code decompiled incorrectly, please refer to instructions dump. To view partially-correct add '--show-bad-code' argument */ public com.huawei.hms.common.data.DataHolder.Builder setDataForContentValuesHashMap(java.util.HashMap r4) { /* r3 = this; java.lang.String r0 = "contentValuesHashMap cannot be null" com.huawei.hms.common.internal.Preconditions.checkNotNull(r4, r0) java.lang.String r0 = r3.c if (r0 == 0) goto L2e java.lang.Object r0 = r4.get(r0) if (r0 == 0) goto L2e java.util.HashMap r1 = r3.d java.lang.Object r1 = r1.get(r0) java.lang.Integer r1 = (java.lang.Integer) r1 if (r1 == 0) goto L1f int r0 = r1.intValue() r1 = 1 goto L30 L1f: java.util.HashMap r1 = r3.d java.util.ArrayList> r2 = r3.b int r2 = r2.size() java.lang.Integer r2 = java.lang.Integer.valueOf(r2) r1.put(r0, r2) L2e: r0 = 0 r1 = r0 L30: if (r1 == 0) goto L3d java.util.ArrayList> r1 = r3.b r1.remove(r0) java.util.ArrayList> r1 = r3.b r1.add(r0, r4) goto L42 L3d: java.util.ArrayList> r0 = r3.b r0.add(r4) L42: return r3 */ throw new UnsupportedOperationException("Method not decompiled: com.huawei.hms.common.data.DataHolder.Builder.setDataForContentValuesHashMap(java.util.HashMap):com.huawei.hms.common.data.DataHolder$Builder"); } public Builder withRow(ContentValues contentValues) { Preconditions.checkNotNull(contentValues, "contentValues cannot be null"); HashMap hashMap = new HashMap<>(contentValues.size()); for (Map.Entry entry : contentValues.valueSet()) { hashMap.put(entry.getKey(), entry.getValue()); } return setDataForContentValuesHashMap(hashMap); } private Builder(String[] strArr, String str) { Preconditions.checkNotNull(strArr, "builderColumnsP cannot be null"); this.a = strArr; this.b = new ArrayList<>(); this.c = str; this.d = new HashMap<>(); } public DataHolder build(int i, Bundle bundle) { return new DataHolder(this, i, bundle, -1); } /* JADX INFO: Access modifiers changed from: package-private */ public Builder(String[] strArr, String str, DataHolderBuilderCreator dataHolderBuilderCreator) { this(strArr, null); } } /* loaded from: classes2.dex */ public static class DataHolderException extends RuntimeException { public DataHolderException(String str) { super(str); } } /* JADX WARN: Multi-variable type inference failed */ public static Builder builder(String[] strArr) { return new Builder(strArr, (String) null); } public static DataHolder empty(int i) { return new DataHolder(BUILDER, i, (Bundle) null); } private static CursorWindow[] getCursorWindows(HMSCursorWrapper hMSCursorWrapper) { int i; ArrayList arrayList = new ArrayList(); try { int count = hMSCursorWrapper.getCount(); CursorWindow window = hMSCursorWrapper.getWindow(); if (window == null || window.getStartPosition() != 0) { i = 0; } else { window.acquireReference(); hMSCursorWrapper.setWindow(null); arrayList.add(window); i = window.getNumRows(); } arrayList.addAll(iterCursorWrapper(hMSCursorWrapper, i, count)); return (CursorWindow[]) arrayList.toArray(new CursorWindow[arrayList.size()]); } catch (Throwable th) { try { StringBuilder sb = new StringBuilder("fail to getCursorWindows: "); sb.append(th.getMessage()); HMSLog.e(TAG, sb.toString()); return new CursorWindow[0]; } finally { hMSCursorWrapper.close(); } } } private static ArrayList iterCursorWindow(Builder builder, int i, List list) { CursorWindow cursorWindow; boolean z; ArrayList arrayList = new ArrayList<>(); CursorWindow cursorWindow2 = new CursorWindow((String) null); cursorWindow2.setNumColumns(builder.a.length); arrayList.add(cursorWindow2); for (int i2 = 0; i2 < i; i2++) { try { if (!cursorWindow2.allocRow()) { HMSLog.d(TAG, "Failed to allocate a row"); cursorWindow = new CursorWindow((String) null); try { cursorWindow.setStartPosition(i2); cursorWindow.setNumColumns(builder.a.length); if (!cursorWindow.allocRow()) { HMSLog.e(TAG, "Failed to retry to allocate a row"); return arrayList; } arrayList.add(cursorWindow); cursorWindow2 = cursorWindow; } catch (RuntimeException unused) { Iterator it = arrayList.iterator(); while (it.hasNext()) { it.next().close(); } HMSLog.w(TAG, "iter CursorWindow failed, RuntimeException occured."); cursorWindow2 = cursorWindow; } } HashMap hashMap = (HashMap) list.get(i2); z = true; for (int i3 = 0; i3 < builder.a.length && (z = putValue(cursorWindow2, hashMap.get(builder.a[i3]), i2, i3)); i3++) { } } catch (RuntimeException unused2) { cursorWindow = cursorWindow2; } if (!z) { StringBuilder sb = new StringBuilder(); sb.append("fail to put data for row "); sb.append(i2); HMSLog.d(TAG, sb.toString()); cursorWindow2.freeLastRow(); CursorWindow cursorWindow3 = new CursorWindow((String) null); cursorWindow3.setStartPosition(i2); cursorWindow3.setNumColumns(builder.a.length); arrayList.add(cursorWindow3); break; } continue; } return arrayList; } private static ArrayList iterCursorWrapper(HMSCursorWrapper hMSCursorWrapper, int i, int i2) { ArrayList arrayList = new ArrayList<>(); while (i < i2 && hMSCursorWrapper.moveToPosition(i)) { CursorWindow window = hMSCursorWrapper.getWindow(); if (window == null) { window = new CursorWindow((String) null); window.setStartPosition(i); hMSCursorWrapper.fillWindow(i, window); } else { window.acquireReference(); hMSCursorWrapper.setWindow(null); } if (window.getNumRows() == 0) { break; } arrayList.add(window); i = window.getNumRows() + window.getStartPosition(); } return arrayList; } private static boolean putValue(CursorWindow cursorWindow, Object obj, int i, int i2) throws IllegalArgumentException { if (obj == null) { return cursorWindow.putNull(i, i2); } if (obj instanceof Boolean) { return cursorWindow.putLong(((Boolean) obj).booleanValue() ? 1L : 0L, i, i2); } if (obj instanceof Integer) { return cursorWindow.putLong(((Integer) obj).intValue(), i, i2); } if (obj instanceof Long) { return cursorWindow.putLong(((Long) obj).longValue(), i, i2); } if (obj instanceof Float) { return cursorWindow.putDouble(((Float) obj).floatValue(), i, i2); } if (obj instanceof Double) { return cursorWindow.putDouble(((Double) obj).doubleValue(), i, i2); } if (obj instanceof String) { return cursorWindow.putString((String) obj, i, i2); } if (obj instanceof byte[]) { return cursorWindow.putBlob((byte[]) obj, i, i2); } throw new IllegalArgumentException("unsupported type for column: ".concat(String.valueOf(obj))); } public final void collectColumsAndCount() { this.columnsBundle = new Bundle(); String[] strArr = this.columns; int i = 0; if (strArr == null || strArr.length == 0) { this.dataCount = 0; return; } int i2 = 0; while (true) { String[] strArr2 = this.columns; if (i2 >= strArr2.length) { break; } this.columnsBundle.putInt(strArr2[i2], i2); i2++; } CursorWindow[] cursorWindowArr = this.cursorWindows; if (cursorWindowArr == null || cursorWindowArr.length == 0) { this.dataCount = 0; return; } this.perCursorCounts = new int[cursorWindowArr.length]; int i3 = 0; while (true) { CursorWindow[] cursorWindowArr2 = this.cursorWindows; if (i >= cursorWindowArr2.length) { this.dataCount = i3; return; } else { this.perCursorCounts[i] = i3; i3 = cursorWindowArr2[i].getStartPosition() + this.cursorWindows[i].getNumRows(); i++; } } } public final void copyToBuffer(String str, int i, int i2, CharArrayBuffer charArrayBuffer) { checkAvailable(str, i); this.cursorWindows[i2].copyStringToBuffer(i, this.columnsBundle.getInt(str), charArrayBuffer); } protected final void finalize() throws Throwable { if (this.isInstance && this.cursorWindows.length > 0 && !isClosed()) { close(); } super.finalize(); } /* JADX WARN: Can't fix incorrect switch cases order, some code will duplicate */ public final Object getValue(String str, int i, int i2, String str2) { char c; str2.hashCode(); str2.hashCode(); switch (str2.hashCode()) { case -1092271849: if (str2.equals(TYPE_FLOAT)) { c = 0; break; } c = 65535; break; case -870070237: if (str2.equals(TYPE_BOOLEAN)) { c = 1; break; } c = 65535; break; case -675993238: if (str2.equals(TYPE_INT)) { c = 2; break; } c = 65535; break; case 445002870: if (str2.equals(TYPE_DOUBLE)) { c = 3; break; } c = 65535; break; case 519136353: if (str2.equals(TYPE_LONG)) { c = 4; break; } c = 65535; break; case 878975158: if (str2.equals(TYPE_STRING)) { c = 5; break; } c = 65535; break; case 1300508295: if (str2.equals(TYPE_BYTE_ARRAY)) { c = 6; break; } c = 65535; break; default: c = 65535; break; } switch (c) { case 0: checkAvailable(str, i); return Float.valueOf(this.cursorWindows[i2].getFloat(i, this.columnsBundle.getInt(str))); case 1: checkAvailable(str, i); return Boolean.valueOf(this.cursorWindows[i2].getLong(i, this.columnsBundle.getInt(str)) == 1); case 2: checkAvailable(str, i); return Integer.valueOf(this.cursorWindows[i2].getInt(i, this.columnsBundle.getInt(str))); case 3: checkAvailable(str, i); return Double.valueOf(this.cursorWindows[i2].getDouble(i, this.columnsBundle.getInt(str))); case 4: checkAvailable(str, i); return Long.valueOf(this.cursorWindows[i2].getLong(i, this.columnsBundle.getInt(str))); case 5: checkAvailable(str, i); return this.cursorWindows[i2].getString(i, this.columnsBundle.getInt(str)); case 6: checkAvailable(str, i); return this.cursorWindows[i2].getBlob(i, this.columnsBundle.getInt(str)); default: return null; } } public final int getWindowIndex(int i) { int[] iArr; int i2 = 0; Preconditions.checkArgument(i >= 0 || i < this.dataCount, "rowIndex is out of index:".concat(String.valueOf(i))); while (true) { iArr = this.perCursorCounts; if (i2 >= iArr.length) { break; } if (i < iArr[i2]) { i2--; break; } i2++; } return i2 == iArr.length ? i2 - 1 : i2; } public final boolean hasColumn(String str) { return this.columnsBundle.containsKey(str); } public final boolean hasNull(String str, int i, int i2) { checkAvailable(str, i); return this.cursorWindows[i2].getType(i, this.columnsBundle.getInt(str)) == 0; } public final boolean isClosed() { boolean z; synchronized (this) { z = this.mClosed; } return z; } @Override // android.os.Parcelable public final void writeToParcel(Parcel parcel, int i) { if (parcel == null) { return; } int beginObjectHeader = SafeParcelWriter.beginObjectHeader(parcel); SafeParcelWriter.writeStringArray(parcel, 1, this.columns, false); SafeParcelWriter.writeTypedArray(parcel, 2, this.cursorWindows, i, false); SafeParcelWriter.writeInt(parcel, 3, getStatusCode()); SafeParcelWriter.writeBundle(parcel, 4, getMetadata(), false); SafeParcelWriter.writeInt(parcel, 1000, this.version); SafeParcelWriter.finishObjectHeader(parcel, beginObjectHeader); if ((i & 1) != 0) { close(); } } private void checkAvailable(String str, int i) { String concat; Bundle bundle = this.columnsBundle; if (bundle != null && bundle.containsKey(str)) { if (isClosed()) { concat = "buffer has been closed"; } else { concat = (i < 0 || i >= this.dataCount) ? "row is out of index:".concat(String.valueOf(i)) : ""; } } else { concat = "cannot find column: ".concat(String.valueOf(str)); } Preconditions.checkArgument(concat.isEmpty(), concat); } @Override // java.io.Closeable, java.lang.AutoCloseable public final void close() { synchronized (this) { if (!this.mClosed) { for (CursorWindow cursorWindow : this.cursorWindows) { cursorWindow.close(); } this.mClosed = true; } } } /* JADX INFO: Access modifiers changed from: package-private */ public DataHolder(int i, String[] strArr, CursorWindow[] cursorWindowArr, int i2, Bundle bundle) { this.mClosed = false; this.isInstance = true; this.version = i; this.columns = strArr; this.cursorWindows = cursorWindowArr; this.statusCode = i2; this.metadata = bundle; collectColumsAndCount(); } public DataHolder(String[] strArr, CursorWindow[] cursorWindowArr, int i, Bundle bundle) { Preconditions.checkNotNull(strArr, "columnsP cannot be null"); Preconditions.checkNotNull(cursorWindowArr, "cursorWindowP cannot be null"); this.mClosed = false; this.isInstance = true; this.version = 1; this.columns = strArr; this.cursorWindows = cursorWindowArr; this.statusCode = i; this.metadata = bundle; collectColumsAndCount(); } private DataHolder(HMSCursorWrapper hMSCursorWrapper, int i, Bundle bundle) { this(hMSCursorWrapper.getColumnNames(), getCursorWindows(hMSCursorWrapper), i, bundle); } public DataHolder(Cursor cursor, int i, Bundle bundle) { this(new HMSCursorWrapper(cursor), i, bundle); } private DataHolder(Builder builder, int i, Bundle bundle) { this(builder.a, getCursorWindows(builder, -1), i, (Bundle) null); } private DataHolder(Builder builder, int i, Bundle bundle, int i2) { this(builder.a, getCursorWindows(builder, -1), i, bundle); } private static CursorWindow[] getCursorWindows(Builder builder, int i) { if (builder.a.length == 0) { return new CursorWindow[0]; } if (i < 0 || i >= builder.b.size()) { i = builder.b.size(); } ArrayList iterCursorWindow = iterCursorWindow(builder, i, builder.b.subList(0, i)); return (CursorWindow[]) iterCursorWindow.toArray(new CursorWindow[iterCursorWindow.size()]); } public final int getStatusCode() { return this.statusCode; } public final Bundle getMetadata() { return this.metadata; } public final int getCount() { return this.dataCount; } }