修复ftp上传完成后,删除服务器端的文件,无法重新下载的问题

This commit is contained in:
laoyuyu
2020-01-06 19:59:17 +08:00
parent e14928e260
commit 8158c58d6e
29 changed files with 290 additions and 74 deletions

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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;
}

View File

@@ -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;
/**

View File

@@ -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);
}
}

View File

@@ -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()) {