Initial version -- added millennium read funcionality
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
package com.google.android.gms.common.data;
|
||||
|
||||
import com.google.android.gms.common.internal.Preconditions;
|
||||
import com.google.errorprone.annotations.ResultIgnorabilityUnspecified;
|
||||
import java.util.ArrayList;
|
||||
|
||||
/* JADX INFO: compiled from: com.google.android.gms:play-services-base@@18.4.0 */
|
||||
/* JADX INFO: loaded from: classes2.dex */
|
||||
public abstract class EntityBuffer<T> extends AbstractDataBuffer<T> {
|
||||
private boolean zaa;
|
||||
private ArrayList zab;
|
||||
|
||||
protected EntityBuffer(DataHolder dataHolder) {
|
||||
super(dataHolder);
|
||||
this.zaa = false;
|
||||
}
|
||||
|
||||
private final void zab() {
|
||||
synchronized (this) {
|
||||
if (!this.zaa) {
|
||||
int count = ((DataHolder) Preconditions.checkNotNull(this.mDataHolder)).getCount();
|
||||
ArrayList arrayList = new ArrayList();
|
||||
this.zab = arrayList;
|
||||
if (count > 0) {
|
||||
arrayList.add(0);
|
||||
String primaryDataMarkerColumn = getPrimaryDataMarkerColumn();
|
||||
String string = this.mDataHolder.getString(primaryDataMarkerColumn, 0, this.mDataHolder.getWindowIndex(0));
|
||||
for (int i = 1; i < count; i++) {
|
||||
int windowIndex = this.mDataHolder.getWindowIndex(i);
|
||||
String string2 = this.mDataHolder.getString(primaryDataMarkerColumn, i, windowIndex);
|
||||
if (string2 == null) {
|
||||
throw new NullPointerException("Missing value for markerColumn: " + primaryDataMarkerColumn + ", at row: " + i + ", for window: " + windowIndex);
|
||||
}
|
||||
if (!string2.equals(string)) {
|
||||
this.zab.add(Integer.valueOf(i));
|
||||
string = string2;
|
||||
}
|
||||
}
|
||||
}
|
||||
this.zaa = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override // com.google.android.gms.common.data.AbstractDataBuffer, com.google.android.gms.common.data.DataBuffer
|
||||
@ResultIgnorabilityUnspecified
|
||||
public final T get(int i) {
|
||||
int iIntValue;
|
||||
int iIntValue2;
|
||||
zab();
|
||||
int iZaa = zaa(i);
|
||||
int i2 = 0;
|
||||
if (i >= 0 && i != this.zab.size()) {
|
||||
if (i == this.zab.size() - 1) {
|
||||
iIntValue = ((DataHolder) Preconditions.checkNotNull(this.mDataHolder)).getCount();
|
||||
iIntValue2 = ((Integer) this.zab.get(i)).intValue();
|
||||
} else {
|
||||
iIntValue = ((Integer) this.zab.get(i + 1)).intValue();
|
||||
iIntValue2 = ((Integer) this.zab.get(i)).intValue();
|
||||
}
|
||||
int i3 = iIntValue - iIntValue2;
|
||||
if (i3 == 1) {
|
||||
int iZaa2 = zaa(i);
|
||||
int windowIndex = ((DataHolder) Preconditions.checkNotNull(this.mDataHolder)).getWindowIndex(iZaa2);
|
||||
String childDataMarkerColumn = getChildDataMarkerColumn();
|
||||
if (childDataMarkerColumn == null || this.mDataHolder.getString(childDataMarkerColumn, iZaa2, windowIndex) != null) {
|
||||
i2 = 1;
|
||||
}
|
||||
} else {
|
||||
i2 = i3;
|
||||
}
|
||||
}
|
||||
return getEntry(iZaa, i2);
|
||||
}
|
||||
|
||||
protected String getChildDataMarkerColumn() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override // com.google.android.gms.common.data.AbstractDataBuffer, com.google.android.gms.common.data.DataBuffer
|
||||
public int getCount() {
|
||||
zab();
|
||||
return this.zab.size();
|
||||
}
|
||||
|
||||
protected abstract T getEntry(int i, int i2);
|
||||
|
||||
protected abstract String getPrimaryDataMarkerColumn();
|
||||
|
||||
final int zaa(int i) {
|
||||
if (i >= 0 && i < this.zab.size()) {
|
||||
return ((Integer) this.zab.get(i)).intValue();
|
||||
}
|
||||
throw new IllegalArgumentException("Position " + i + " is out of bounds for this buffer");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user