jimu-decompiled/sources/com/liulishuo/filedownloader/database/SqliteDatabaseImpl.java
2025-05-13 19:24:51 +02:00

348 lines
15 KiB
Java

package com.liulishuo.filedownloader.database;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.text.TextUtils;
import android.util.SparseArray;
import com.liulishuo.filedownloader.database.FileDownloadDatabase;
import com.liulishuo.filedownloader.model.ConnectionModel;
import com.liulishuo.filedownloader.model.FileDownloadModel;
import com.liulishuo.filedownloader.util.FileDownloadHelper;
import com.liulishuo.filedownloader.util.FileDownloadLog;
import com.liulishuo.filedownloader.util.FileDownloadUtils;
import com.ubt.jimu.controller.data.widget.JockstickDataConverter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/* loaded from: classes.dex */
public class SqliteDatabaseImpl implements FileDownloadDatabase {
private final SQLiteDatabase a = new SqliteDatabaseOpenHelper(FileDownloadHelper.a()).getWritableDatabase();
public class Maintainer implements FileDownloadDatabase.Maintainer {
private final SparseArray<FileDownloadModel> a;
private MaintainerIterator b;
private final SparseArray<FileDownloadModel> c;
private final SparseArray<List<ConnectionModel>> d;
Maintainer(SqliteDatabaseImpl sqliteDatabaseImpl) {
this(null, null);
}
@Override // com.liulishuo.filedownloader.database.FileDownloadDatabase.Maintainer
public void a(int i, FileDownloadModel fileDownloadModel) {
this.a.put(i, fileDownloadModel);
}
@Override // com.liulishuo.filedownloader.database.FileDownloadDatabase.Maintainer
public void a(FileDownloadModel fileDownloadModel) {
}
@Override // com.liulishuo.filedownloader.database.FileDownloadDatabase.Maintainer
public void b(FileDownloadModel fileDownloadModel) {
SparseArray<FileDownloadModel> sparseArray = this.c;
if (sparseArray != null) {
sparseArray.put(fileDownloadModel.getId(), fileDownloadModel);
}
}
@Override // com.liulishuo.filedownloader.database.FileDownloadDatabase.Maintainer
public void c() {
MaintainerIterator maintainerIterator = this.b;
if (maintainerIterator != null) {
maintainerIterator.a();
}
int size = this.a.size();
if (size < 0) {
return;
}
SqliteDatabaseImpl.this.a.beginTransaction();
for (int i = 0; i < size; i++) {
try {
int keyAt = this.a.keyAt(i);
FileDownloadModel fileDownloadModel = this.a.get(keyAt);
SqliteDatabaseImpl.this.a.delete("filedownloader", "_id = ?", new String[]{String.valueOf(keyAt)});
SqliteDatabaseImpl.this.a.insert("filedownloader", null, fileDownloadModel.toContentValues());
if (fileDownloadModel.getConnectionCount() > 1) {
List<ConnectionModel> d = SqliteDatabaseImpl.this.d(keyAt);
if (d.size() > 0) {
SqliteDatabaseImpl.this.a.delete("filedownloaderConnection", "id = ?", new String[]{String.valueOf(keyAt)});
for (ConnectionModel connectionModel : d) {
connectionModel.a(fileDownloadModel.getId());
SqliteDatabaseImpl.this.a.insert("filedownloaderConnection", null, connectionModel.f());
}
}
}
} finally {
SqliteDatabaseImpl.this.a.endTransaction();
}
}
if (this.c != null && this.d != null) {
int size2 = this.c.size();
for (int i2 = 0; i2 < size2; i2++) {
int id = this.c.valueAt(i2).getId();
List<ConnectionModel> d2 = SqliteDatabaseImpl.this.d(id);
if (d2 != null && d2.size() > 0) {
this.d.put(id, d2);
}
}
}
SqliteDatabaseImpl.this.a.setTransactionSuccessful();
}
@Override // java.lang.Iterable
public Iterator<FileDownloadModel> iterator() {
MaintainerIterator maintainerIterator = SqliteDatabaseImpl.this.new MaintainerIterator();
this.b = maintainerIterator;
return maintainerIterator;
}
Maintainer(SparseArray<FileDownloadModel> sparseArray, SparseArray<List<ConnectionModel>> sparseArray2) {
this.a = new SparseArray<>();
this.c = sparseArray;
this.d = sparseArray2;
}
}
class MaintainerIterator implements Iterator<FileDownloadModel> {
private final Cursor a;
private final List<Integer> b = new ArrayList();
private int c;
MaintainerIterator() {
this.a = SqliteDatabaseImpl.this.a.rawQuery("SELECT * FROM filedownloader", null);
}
void a() {
this.a.close();
if (this.b.isEmpty()) {
return;
}
String join = TextUtils.join(", ", this.b);
if (FileDownloadLog.a) {
FileDownloadLog.a(this, "delete %s", join);
}
SqliteDatabaseImpl.this.a.execSQL(FileDownloadUtils.a("DELETE FROM %s WHERE %s IN (%s);", "filedownloader", FileDownloadModel.ID, join));
SqliteDatabaseImpl.this.a.execSQL(FileDownloadUtils.a("DELETE FROM %s WHERE %s IN (%s);", "filedownloaderConnection", JockstickDataConverter.ID, join));
}
@Override // java.util.Iterator
public boolean hasNext() {
return this.a.moveToNext();
}
@Override // java.util.Iterator
public void remove() {
this.b.add(Integer.valueOf(this.c));
}
/* JADX WARN: Can't rename method to resolve collision */
@Override // java.util.Iterator
public FileDownloadModel next() {
FileDownloadModel b = SqliteDatabaseImpl.b(this.a);
this.c = b.getId();
return b;
}
}
@Override // com.liulishuo.filedownloader.database.FileDownloadDatabase
public void a(int i) {
}
@Override // com.liulishuo.filedownloader.database.FileDownloadDatabase
public void b(int i) {
this.a.execSQL("DELETE FROM filedownloaderConnection WHERE id = " + i);
}
@Override // com.liulishuo.filedownloader.database.FileDownloadDatabase
public void c(int i) {
}
@Override // com.liulishuo.filedownloader.database.FileDownloadDatabase
public void c(int i, long j) {
ContentValues contentValues = new ContentValues();
contentValues.put(FileDownloadModel.STATUS, (Byte) (byte) -2);
contentValues.put(FileDownloadModel.SOFAR, Long.valueOf(j));
a(i, contentValues);
}
@Override // com.liulishuo.filedownloader.database.FileDownloadDatabase
public void clear() {
this.a.delete("filedownloader", null, null);
this.a.delete("filedownloaderConnection", null, null);
}
@Override // com.liulishuo.filedownloader.database.FileDownloadDatabase
public List<ConnectionModel> d(int i) {
ArrayList arrayList = new ArrayList();
Cursor cursor = null;
try {
cursor = this.a.rawQuery(FileDownloadUtils.a("SELECT * FROM %s WHERE %s = ?", "filedownloaderConnection", JockstickDataConverter.ID), new String[]{Integer.toString(i)});
while (cursor.moveToNext()) {
ConnectionModel connectionModel = new ConnectionModel();
connectionModel.a(i);
connectionModel.b(cursor.getInt(cursor.getColumnIndex("connectionIndex")));
connectionModel.c(cursor.getLong(cursor.getColumnIndex("startOffset")));
connectionModel.a(cursor.getLong(cursor.getColumnIndex("currentOffset")));
connectionModel.b(cursor.getLong(cursor.getColumnIndex("endOffset")));
arrayList.add(connectionModel);
}
return arrayList;
} finally {
if (cursor != null) {
cursor.close();
}
}
}
@Override // com.liulishuo.filedownloader.database.FileDownloadDatabase
public FileDownloadModel e(int i) {
Cursor rawQuery;
Cursor cursor = null;
try {
rawQuery = this.a.rawQuery(FileDownloadUtils.a("SELECT * FROM %s WHERE %s = ?", "filedownloader", FileDownloadModel.ID), new String[]{Integer.toString(i)});
} catch (Throwable th) {
th = th;
}
try {
if (!rawQuery.moveToNext()) {
if (rawQuery != null) {
rawQuery.close();
}
return null;
}
FileDownloadModel b = b(rawQuery);
if (rawQuery != null) {
rawQuery.close();
}
return b;
} catch (Throwable th2) {
cursor = rawQuery;
th = th2;
if (cursor != null) {
cursor.close();
}
throw th;
}
}
@Override // com.liulishuo.filedownloader.database.FileDownloadDatabase
public boolean remove(int i) {
return this.a.delete("filedownloader", "_id = ?", new String[]{String.valueOf(i)}) != 0;
}
public void b(FileDownloadModel fileDownloadModel) {
this.a.insert("filedownloader", null, fileDownloadModel.toContentValues());
}
@Override // com.liulishuo.filedownloader.database.FileDownloadDatabase
public void a(ConnectionModel connectionModel) {
this.a.insert("filedownloaderConnection", null, connectionModel.f());
}
@Override // com.liulishuo.filedownloader.database.FileDownloadDatabase
public void b(int i, long j) {
ContentValues contentValues = new ContentValues();
contentValues.put(FileDownloadModel.STATUS, (Byte) (byte) 3);
contentValues.put(FileDownloadModel.SOFAR, Long.valueOf(j));
a(i, contentValues);
}
@Override // com.liulishuo.filedownloader.database.FileDownloadDatabase
public void a(int i, int i2, long j) {
ContentValues contentValues = new ContentValues();
contentValues.put("currentOffset", Long.valueOf(j));
this.a.update("filedownloaderConnection", contentValues, "id = ? AND connectionIndex = ?", new String[]{Integer.toString(i), Integer.toString(i2)});
}
/* JADX INFO: Access modifiers changed from: private */
public static FileDownloadModel b(Cursor cursor) {
FileDownloadModel fileDownloadModel = new FileDownloadModel();
fileDownloadModel.setId(cursor.getInt(cursor.getColumnIndex(FileDownloadModel.ID)));
fileDownloadModel.setUrl(cursor.getString(cursor.getColumnIndex("url")));
fileDownloadModel.setPath(cursor.getString(cursor.getColumnIndex(FileDownloadModel.PATH)), cursor.getShort(cursor.getColumnIndex(FileDownloadModel.PATH_AS_DIRECTORY)) == 1);
fileDownloadModel.setStatus((byte) cursor.getShort(cursor.getColumnIndex(FileDownloadModel.STATUS)));
fileDownloadModel.setSoFar(cursor.getLong(cursor.getColumnIndex(FileDownloadModel.SOFAR)));
fileDownloadModel.setTotal(cursor.getLong(cursor.getColumnIndex(FileDownloadModel.TOTAL)));
fileDownloadModel.setErrMsg(cursor.getString(cursor.getColumnIndex(FileDownloadModel.ERR_MSG)));
fileDownloadModel.setETag(cursor.getString(cursor.getColumnIndex(FileDownloadModel.ETAG)));
fileDownloadModel.setFilename(cursor.getString(cursor.getColumnIndex(FileDownloadModel.FILENAME)));
fileDownloadModel.setConnectionCount(cursor.getInt(cursor.getColumnIndex(FileDownloadModel.CONNECTION_COUNT)));
return fileDownloadModel;
}
@Override // com.liulishuo.filedownloader.database.FileDownloadDatabase
public void a(int i, int i2) {
ContentValues contentValues = new ContentValues();
contentValues.put(FileDownloadModel.CONNECTION_COUNT, Integer.valueOf(i2));
this.a.update("filedownloader", contentValues, "_id = ? ", new String[]{Integer.toString(i)});
}
@Override // com.liulishuo.filedownloader.database.FileDownloadDatabase
public void a(FileDownloadModel fileDownloadModel) {
if (fileDownloadModel == null) {
FileDownloadLog.e(this, "update but model == null!", new Object[0]);
} else if (e(fileDownloadModel.getId()) != null) {
this.a.update("filedownloader", fileDownloadModel.toContentValues(), "_id = ? ", new String[]{String.valueOf(fileDownloadModel.getId())});
} else {
b(fileDownloadModel);
}
}
@Override // com.liulishuo.filedownloader.database.FileDownloadDatabase
public void a(int i, String str, long j, long j2, int i2) {
ContentValues contentValues = new ContentValues();
contentValues.put(FileDownloadModel.SOFAR, Long.valueOf(j));
contentValues.put(FileDownloadModel.TOTAL, Long.valueOf(j2));
contentValues.put(FileDownloadModel.ETAG, str);
contentValues.put(FileDownloadModel.CONNECTION_COUNT, Integer.valueOf(i2));
a(i, contentValues);
}
@Override // com.liulishuo.filedownloader.database.FileDownloadDatabase
public void a(int i, long j, String str, String str2) {
ContentValues contentValues = new ContentValues();
contentValues.put(FileDownloadModel.STATUS, (Byte) (byte) 2);
contentValues.put(FileDownloadModel.TOTAL, Long.valueOf(j));
contentValues.put(FileDownloadModel.ETAG, str);
contentValues.put(FileDownloadModel.FILENAME, str2);
a(i, contentValues);
}
@Override // com.liulishuo.filedownloader.database.FileDownloadDatabase
public void a(int i, Throwable th, long j) {
ContentValues contentValues = new ContentValues();
contentValues.put(FileDownloadModel.ERR_MSG, th.toString());
contentValues.put(FileDownloadModel.STATUS, (Byte) (byte) -1);
contentValues.put(FileDownloadModel.SOFAR, Long.valueOf(j));
a(i, contentValues);
}
@Override // com.liulishuo.filedownloader.database.FileDownloadDatabase
public void a(int i, Throwable th) {
ContentValues contentValues = new ContentValues();
contentValues.put(FileDownloadModel.ERR_MSG, th.toString());
contentValues.put(FileDownloadModel.STATUS, (Byte) (byte) 5);
a(i, contentValues);
}
@Override // com.liulishuo.filedownloader.database.FileDownloadDatabase
public void a(int i, long j) {
remove(i);
}
@Override // com.liulishuo.filedownloader.database.FileDownloadDatabase
public FileDownloadDatabase.Maintainer a() {
return new Maintainer(this);
}
public FileDownloadDatabase.Maintainer a(SparseArray<FileDownloadModel> sparseArray, SparseArray<List<ConnectionModel>> sparseArray2) {
return new Maintainer(sparseArray, sparseArray2);
}
private void a(int i, ContentValues contentValues) {
this.a.update("filedownloader", contentValues, "_id = ? ", new String[]{String.valueOf(i)});
}
}