修复ftp上传完成后,删除服务器端的文件,无法重新下载的问题
This commit is contained in:
@@ -27,6 +27,13 @@ public abstract class AbsBuilderTarget<TARGET extends AbsBuilderTarget> extends
|
||||
|
||||
private BuilderController mStartController;
|
||||
|
||||
/**
|
||||
* 任务操作前调用
|
||||
*/
|
||||
protected void onPre() {
|
||||
|
||||
}
|
||||
|
||||
private synchronized BuilderController getController() {
|
||||
if (mStartController == null) {
|
||||
mStartController = new BuilderController(getTaskWrapper());
|
||||
@@ -58,6 +65,7 @@ public abstract class AbsBuilderTarget<TARGET extends AbsBuilderTarget> extends
|
||||
*/
|
||||
@Override
|
||||
public long add() {
|
||||
onPre();
|
||||
return getController().add();
|
||||
}
|
||||
|
||||
@@ -68,6 +76,7 @@ public abstract class AbsBuilderTarget<TARGET extends AbsBuilderTarget> extends
|
||||
*/
|
||||
@Override
|
||||
public long create() {
|
||||
onPre();
|
||||
return getController().create();
|
||||
}
|
||||
|
||||
@@ -82,6 +91,7 @@ public abstract class AbsBuilderTarget<TARGET extends AbsBuilderTarget> extends
|
||||
*/
|
||||
@Override
|
||||
public long setHighestPriority() {
|
||||
onPre();
|
||||
return getController().setHighestPriority();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,13 @@ import com.arialyy.aria.util.RecordUtil;
|
||||
public abstract class AbsNormalTarget<TARGET extends AbsNormalTarget> extends AbsTarget<TARGET>
|
||||
implements INormalFeature {
|
||||
|
||||
/**
|
||||
* 任务操作前调用
|
||||
*/
|
||||
protected void onPre() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否忽略权限检查
|
||||
*/
|
||||
@@ -150,6 +157,7 @@ public abstract class AbsNormalTarget<TARGET extends AbsNormalTarget> extends Ab
|
||||
*/
|
||||
@Override
|
||||
public void stop() {
|
||||
onPre();
|
||||
getController().stop();
|
||||
}
|
||||
|
||||
@@ -168,6 +176,7 @@ public abstract class AbsNormalTarget<TARGET extends AbsNormalTarget> extends Ab
|
||||
* @param newStart true 立即将任务恢复到执行队列中
|
||||
*/
|
||||
@Override public void resume(boolean newStart) {
|
||||
onPre();
|
||||
getController().resume(newStart);
|
||||
}
|
||||
|
||||
@@ -176,7 +185,7 @@ public abstract class AbsNormalTarget<TARGET extends AbsNormalTarget> extends Ab
|
||||
*/
|
||||
@Override
|
||||
public void cancel() {
|
||||
getController().cancel();
|
||||
cancel(false);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -184,17 +193,19 @@ public abstract class AbsNormalTarget<TARGET extends AbsNormalTarget> extends Ab
|
||||
*/
|
||||
@Override
|
||||
public void reTry() {
|
||||
onPre();
|
||||
getController().reTry();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除任务
|
||||
*
|
||||
* @param removeFile {@code true} 不仅删除任务数据库记录,还会删除已经删除完成的文件
|
||||
* @param removeFile {@code true} 不仅删除任务数据库记录,还会删除已经完成的文件
|
||||
* {@code false}如果任务已经完成,只删除任务数据库记录,
|
||||
*/
|
||||
@Override
|
||||
public void cancel(boolean removeFile) {
|
||||
onPre();
|
||||
getController().cancel(removeFile);
|
||||
}
|
||||
|
||||
@@ -203,11 +214,13 @@ public abstract class AbsNormalTarget<TARGET extends AbsNormalTarget> extends Ab
|
||||
*/
|
||||
@Override
|
||||
public long reStart() {
|
||||
onPre();
|
||||
return getController().reStart();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save() {
|
||||
onPre();
|
||||
getController().save();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,8 +19,8 @@ import android.text.TextUtils;
|
||||
import com.arialyy.aria.core.FtpUrlEntity;
|
||||
import com.arialyy.aria.core.inf.ICheckEntityUtil;
|
||||
import com.arialyy.aria.core.inf.IOptionConstant;
|
||||
import com.arialyy.aria.orm.DbEntity;
|
||||
import com.arialyy.aria.util.ALog;
|
||||
import com.arialyy.aria.util.CheckUtil;
|
||||
import java.io.File;
|
||||
|
||||
public class CheckFtpDirEntityUtil implements ICheckEntityUtil {
|
||||
@@ -58,10 +58,9 @@ public class CheckFtpDirEntityUtil implements ICheckEntityUtil {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((mEntity.getDirPath() == null || !mEntity.getDirPath().equals(mWrapper.getDirPathTemp()))
|
||||
&& DbEntity.checkDataExist(DownloadGroupEntity.class, "dirPath=?",
|
||||
// 检查路径冲突
|
||||
if (mWrapper.isNewTask() && !CheckUtil.checkDGPathConflicts(mWrapper.isIgnoreFilePathOccupy(),
|
||||
mWrapper.getDirPathTemp())) {
|
||||
ALog.e(TAG, String.format("文件夹路径【%s】已被其它任务占用,请重新设置文件夹路径", mWrapper.getDirPathTemp()));
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -15,10 +15,12 @@
|
||||
*/
|
||||
package com.arialyy.aria.core.download.target;
|
||||
|
||||
import com.arialyy.aria.core.common.FtpOption;
|
||||
import com.arialyy.aria.core.download.DTaskWrapper;
|
||||
import com.arialyy.aria.core.inf.AbsTarget;
|
||||
import com.arialyy.aria.core.wrapper.AbsTaskWrapper;
|
||||
import com.arialyy.aria.core.wrapper.ITaskWrapper;
|
||||
import com.arialyy.aria.util.CommonUtil;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
||||
@@ -18,6 +18,7 @@ package com.arialyy.aria.core.download.target;
|
||||
import com.arialyy.aria.core.common.AbsNormalTarget;
|
||||
import com.arialyy.aria.core.common.FtpOption;
|
||||
import com.arialyy.aria.core.download.DownloadGroupEntity;
|
||||
import com.arialyy.aria.core.inf.IOptionConstant;
|
||||
import com.arialyy.aria.core.manager.SubTaskManager;
|
||||
import com.arialyy.aria.util.CommonUtil;
|
||||
|
||||
@@ -27,6 +28,7 @@ import com.arialyy.aria.util.CommonUtil;
|
||||
*/
|
||||
public class FtpDirNormalTarget extends AbsNormalTarget<FtpDirNormalTarget> {
|
||||
private FtpDirConfigHandler<FtpDirNormalTarget> mConfigHandler;
|
||||
private FtpOption option;
|
||||
|
||||
FtpDirNormalTarget(long taskId) {
|
||||
mConfigHandler = new FtpDirConfigHandler<>(this, taskId);
|
||||
@@ -71,8 +73,7 @@ public class FtpDirNormalTarget extends AbsNormalTarget<FtpDirNormalTarget> {
|
||||
if (option == null) {
|
||||
throw new NullPointerException("ftp 任务配置为空");
|
||||
}
|
||||
option.setUrlEntity(CommonUtil.getFtpUrlInfo(getEntity().getKey()));
|
||||
getTaskWrapper().getOptionParams().setParams(option);
|
||||
this.option = option;
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -88,4 +89,13 @@ public class FtpDirNormalTarget extends AbsNormalTarget<FtpDirNormalTarget> {
|
||||
public SubTaskManager getSubTaskManager() {
|
||||
return mConfigHandler.getSubTaskManager();
|
||||
}
|
||||
|
||||
@Override protected void onPre() {
|
||||
super.onPre();
|
||||
if (option == null) {
|
||||
option = new FtpOption();
|
||||
}
|
||||
option.setUrlEntity(CommonUtil.getFtpUrlInfo(getEntity().getKey()));
|
||||
getTaskWrapper().getOptionParams().setParams(option);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ import com.arialyy.aria.core.download.DGEntityWrapper;
|
||||
import com.arialyy.aria.core.download.DGTaskWrapper;
|
||||
import com.arialyy.aria.core.download.DownloadGroupEntity;
|
||||
import com.arialyy.aria.orm.DbEntity;
|
||||
import com.arialyy.aria.util.CommonUtil;
|
||||
import com.arialyy.aria.util.DbDataHelper;
|
||||
import java.util.List;
|
||||
|
||||
@@ -26,7 +27,7 @@ import java.util.List;
|
||||
* Created by Aria.Lao on 2017/11/1. 组合任务wrapper
|
||||
*/
|
||||
class DGTaskWrapperFactory implements IGroupWrapperFactory<DownloadGroupEntity, DGTaskWrapper> {
|
||||
private static final String TAG = "DTaskWrapperFactory";
|
||||
private final String TAG = CommonUtil.getClassName(this);
|
||||
private static volatile DGTaskWrapperFactory INSTANCE = null;
|
||||
|
||||
private DGTaskWrapperFactory() {
|
||||
@@ -45,7 +46,7 @@ class DGTaskWrapperFactory implements IGroupWrapperFactory<DownloadGroupEntity,
|
||||
DGTaskWrapper wrapper;
|
||||
if (taskId == -1) {
|
||||
wrapper = new DGTaskWrapper(new DownloadGroupEntity());
|
||||
}else {
|
||||
} else {
|
||||
DownloadGroupEntity entity = getOrCreateHttpDGEntity(taskId);
|
||||
wrapper = new DGTaskWrapper(entity);
|
||||
if (entity.getSubEntities() != null && !entity.getSubEntities().isEmpty()) {
|
||||
|
||||
Reference in New Issue
Block a user