添加重置状态的api,当下载信息不改变,只是替换了服务器的对应的文件,可用Aria.download(this).load(url).resetState()重置下载状态

This commit is contained in:
AriaLyy
2018-01-02 21:47:41 +08:00
parent a903180491
commit 31f0acf059
13 changed files with 66 additions and 21 deletions

View File

@@ -15,6 +15,7 @@
*/
package com.arialyy.aria.core.download;
import com.arialyy.aria.core.inf.IEntity;
import com.arialyy.aria.core.manager.TEManager;
import com.arialyy.aria.core.queue.DownloadGroupTaskQueue;
import com.arialyy.aria.util.ALog;
@@ -36,8 +37,7 @@ public class DownloadGroupTarget
this.mUrls.addAll(groupEntity.getUrls());
}
mGroupName = CommonUtil.getMd5Code(groupEntity.getUrls());
mTaskEntity = TEManager.getInstance()
.getTEntity(DownloadGroupTaskEntity.class, mGroupName);
mTaskEntity = TEManager.getInstance().getTEntity(DownloadGroupTaskEntity.class, mGroupName);
if (mTaskEntity == null) {
mTaskEntity =
TEManager.getInstance().createTEntity(DownloadGroupTaskEntity.class, groupEntity);

View File

@@ -84,7 +84,7 @@ public class DownloadReceiver extends AbsReceiver {
* 加载Http、https单任务下载地址
*
* @param url 下载地址
* @param refreshInfo 是否刷新下载信息
* @param refreshInfo 是否刷新下载信息,当下载地址改变而保存路径不变,则需要设置该参数为{@code true}
*/
public DownloadTarget load(@NonNull String url, boolean refreshInfo) {
CheckUtil.checkUrl(url);
@@ -111,7 +111,7 @@ public class DownloadReceiver extends AbsReceiver {
/**
* 使用下载实体执行下载操作
*
* @param refreshInfo 是否刷新下载信息
* @param refreshInfo 是否刷新下载信息,当下载地址改变而保存路径不变,则需要设置该参数为{@code true}
*/
public FtpDownloadTarget loadFtp(DownloadEntity entity, boolean refreshInfo) {
CheckUtil.checkDownloadEntity(entity);

View File

@@ -21,6 +21,7 @@ import com.arialyy.aria.core.common.OnFileInfoCallback;
import com.arialyy.aria.core.download.DownloadGroupTaskEntity;
import com.arialyy.aria.core.download.DownloadTaskEntity;
import com.arialyy.aria.core.inf.IEntity;
import com.arialyy.aria.util.ALog;
import java.util.Set;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -63,6 +64,11 @@ public class DownloadGroupUtil extends AbsGroupUtil implements IUtil {
@Override protected void onStart() {
super.onStart();
if (mExeMap.size() == 0){
ALog.e(TAG, "任务组无可执行任务");
mListener.onFail(false);
return;
}
Set<String> keys = mExeMap.keySet();
int i = 0;
for (String key : keys) {

View File

@@ -27,7 +27,7 @@ public abstract class AbsGroupTask<TASK_ENTITY extends AbsGroupTaskEntity>
protected AbsGroupUtil mUtil;
@Override public String getKey() {
return mTaskEntity.getEntity().getGroupName();
return mTaskEntity.getEntity().getKey();
}
/**

View File

@@ -42,6 +42,15 @@ public abstract class AbsTarget<TARGET extends AbsTarget, ENTITY extends AbsEnti
protected TASK_ENTITY mTaskEntity;
protected String mTargetName;
/**
* 重置下载状态,将任务状态设置为未开始状态
*/
public TARGET resetState() {
mTaskEntity.getEntity().setState(IEntity.STATE_WAIT);
mTaskEntity.update();
return (TARGET) this;
}
/**
* 删除记录,如果任务正在执行,则会删除正在下载的任务
*/

View File

@@ -184,6 +184,7 @@ public class TEManager {
/**
* 通过key删除任务实体
* 当任务complete或删除记录时将删除缓存
*/
public AbsTaskEntity removeTEntity(String key) {
final Lock lock = this.lock;

View File

@@ -332,8 +332,9 @@ final class SqlHelper extends SQLiteOpenHelper {
List<Field> fields = CommonUtil.getAllFields(clazz);
DbEntity cacheEntity = mDataCache.get(dbEntity.hashCode());
if (fields != null && fields.size() > 0) {
StringBuilder sb = new StringBuilder();
sb.append("UPDATE ").append(CommonUtil.getClassName(dbEntity)).append(" SET ");
StringBuilder sql = new StringBuilder();
StringBuilder prams = new StringBuilder();
sql.append("UPDATE ").append(CommonUtil.getClassName(dbEntity)).append(" SET ");
int i = 0;
for (Field field : fields) {
field.setAccessible(true);
@@ -345,9 +346,11 @@ final class SqlHelper extends SQLiteOpenHelper {
continue;
}
sb.append(i > 0 ? ", " : "");
//sb.append(i > 0 ? ", " : "");
//sb.append(field.getName()).append("='");
String value;
sb.append(field.getName()).append("='");
prams.append(i > 0 ? ", " : "");
prams.append(field.getName()).append("='");
Type type = field.getType();
if (type == Map.class) {
value = SqlUtil.map2Str((Map<String, String>) field.get(dbEntity));
@@ -364,16 +367,21 @@ final class SqlHelper extends SQLiteOpenHelper {
value = obj == null ? "" : obj.toString();
}
sb.append(value == null ? "" : value);
sb.append("'");
//sb.append(value == null ? "" : value);
//sb.append("'");
prams.append(TextUtils.isEmpty(value) ? "" : value);
prams.append("'");
} catch (IllegalAccessException e) {
e.printStackTrace();
}
i++;
}
sb.append(" where rowid=").append(dbEntity.rowID);
print(MODIFY_DATA, sb.toString());
db.execSQL(sb.toString());
if (!TextUtils.isEmpty(prams.toString())) {
sql.append(prams.toString());
sql.append(" where rowid=").append(dbEntity.rowID);
print(MODIFY_DATA, sql.toString());
db.execSQL(sql.toString());
}
}
close(db);
}