.inspect java_Java FileDownloadHelper.inspectAndInflowDownloading方法代码示例

import com.liulishuo.filedownloader.util.FileDownloadHelper; //导入方法依赖的package包/类

private void checkupBeforeFetch() throws RetryDirectly, DiscardSafely {

final int id = model.getId();

if (model.isPathAsDirectory()) {

// this scope for caring about the case of there is another task is provided

// the same path to store file and the same url.

final String targetFilePath = model.getTargetFilePath();

// get the ID after got the filename.

final int fileCaseId = FileDownloadUtils.generateId(model.getUrl(),

targetFilePath);

// whether the file with the filename has been existed.

if (FileDownloadHelper.inspectAndInflowDownloaded(id,

targetFilePath, isForceReDownload, false)) {

database.remove(id);

database.removeConnections(id);

throw new DiscardSafely();

}

final FileDownloadModel fileCaseModel = database.find(fileCaseId);

if (fileCaseModel != null) {

// the task with the same file name and url has been exist.

// whether the another task with the same file and url is downloading.

if (FileDownloadHelper.inspectAndInflowDownloading(id, fileCaseModel,

threadPoolMonitor, false)) {

//it has been post to upper layer the 'warn' message, so the current

// task no need to continue download.

database.remove(id);

database.removeConnections(id);

throw new DiscardSafely();

}

final List connectionModelList = database

.findConnectionModel(fileCaseId);

// the another task with the same file name and url is paused

database.remove(fileCaseId);

database.removeConnections(fileCaseId);

FileDownloadUtils.deleteTargetFile(model.getTargetFilePath());

if (FileDownloadUtils.isBreakpointAvailable(fileCaseId, fileCaseModel)) {

model.setSoFar(fileCaseModel.getSoFar());

model.setTotal(fileCaseModel.getTotal());

model.setETag(fileCaseModel.getETag());

model.setConnectionCount(fileCaseModel.getConnectionCount());

database.update(model);

// re connect to resume from breakpoint.

if (connectionModelList != null) {

for (ConnectionModel connectionModel : connectionModelList) {

connectionModel.setId(id);

database.insertConnectionModel(connectionModel);

}

}

// retry

throw new RetryDirectly();

}

}

// whether there is an another running task with the same target-file-path.

if (FileDownloadHelper.inspectAndInflowConflictPath(id, model.getSoFar(),

model.getTempFilePath(),

targetFilePath,

threadPoolMonitor)) {

database.remove(id);

database.removeConnections(id);

throw new DiscardSafely();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值