loader 重构
This commit is contained in:
@@ -1,100 +1,100 @@
|
||||
/*
|
||||
* Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria)
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.arialyy.aria.sftp;
|
||||
|
||||
import com.arialyy.aria.core.AriaConfig;
|
||||
import com.arialyy.aria.core.FtpUrlEntity;
|
||||
import com.arialyy.aria.core.common.AbsNormalEntity;
|
||||
import com.arialyy.aria.core.inf.OnFileInfoCallback;
|
||||
import com.arialyy.aria.core.upload.UploadEntity;
|
||||
import com.arialyy.aria.core.wrapper.AbsTaskWrapper;
|
||||
import com.arialyy.aria.ftp.FtpTaskOption;
|
||||
import com.arialyy.aria.util.ALog;
|
||||
import com.arialyy.aria.util.CommonUtil;
|
||||
import com.jcraft.jsch.ChannelSftp;
|
||||
import com.jcraft.jsch.JSchException;
|
||||
import com.jcraft.jsch.SftpException;
|
||||
import java.util.Vector;
|
||||
|
||||
/**
|
||||
* https://cloud.tencent.com/developer/article/1354612
|
||||
*
|
||||
* @author lyy
|
||||
*/
|
||||
public class SFtpInfoThread<ENTITY extends AbsNormalEntity, TASK_WRAPPER extends AbsTaskWrapper<ENTITY>>
|
||||
implements Runnable {
|
||||
|
||||
private final String TAG = CommonUtil.getClassName(getClass());
|
||||
protected ENTITY mEntity;
|
||||
protected TASK_WRAPPER mTaskWrapper;
|
||||
protected FtpTaskOption mTaskOption;
|
||||
private int mConnectTimeOut;
|
||||
protected OnFileInfoCallback mCallback;
|
||||
protected long mSize = 0;
|
||||
protected String charSet = "UTF-8";
|
||||
private boolean isUpload = false;
|
||||
private SFtpUtil mSFtpUtil;
|
||||
private BaseInfoThreadAdapter mAdapter;
|
||||
|
||||
public SFtpInfoThread(SFtpUtil ftpUtil, TASK_WRAPPER taskWrapper,
|
||||
OnFileInfoCallback callback) {
|
||||
mSFtpUtil = ftpUtil;
|
||||
mTaskWrapper = taskWrapper;
|
||||
mEntity = taskWrapper.getEntity();
|
||||
mTaskOption = (FtpTaskOption) taskWrapper.getTaskOption();
|
||||
mConnectTimeOut = AriaConfig.getInstance().getDConfig().getConnectTimeOut();
|
||||
mCallback = callback;
|
||||
if (mEntity instanceof UploadEntity) {
|
||||
isUpload = true;
|
||||
}
|
||||
}
|
||||
|
||||
public void setAdapter(BaseInfoThreadAdapter adapter) {
|
||||
mAdapter = adapter;
|
||||
}
|
||||
|
||||
@Override public void run() {
|
||||
if (mAdapter == null) {
|
||||
ALog.e(TAG, "adapter为空");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
ChannelSftp channelSftp =
|
||||
(ChannelSftp) mSFtpUtil.getSession().openChannel(SFtpUtil.CMD_TYPE_SFTP);
|
||||
Vector files = channelSftp.ls(getUrlEntity().remotePath);
|
||||
|
||||
if (files.isEmpty()) {
|
||||
ALog.e(TAG, String.format("路径【%s】没有文件", getUrlEntity().remotePath));
|
||||
mCallback.onFail(mEntity, null, false);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!mAdapter.handlerFile(files)) {
|
||||
ALog.e(TAG, "文件处理失败");
|
||||
mCallback.onFail(mEntity, null, false);
|
||||
return;
|
||||
}
|
||||
} catch (JSchException ex) {
|
||||
ex.printStackTrace();
|
||||
} catch (SftpException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private FtpUrlEntity getUrlEntity() {
|
||||
return mTaskOption.getUrlEntity();
|
||||
}
|
||||
}
|
||||
///*
|
||||
// * Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria)
|
||||
// *
|
||||
// * Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// * you may not use this file except in compliance with the License.
|
||||
// * You may obtain a copy of the License at
|
||||
// *
|
||||
// * http://www.apache.org/licenses/LICENSE-2.0
|
||||
// *
|
||||
// * Unless required by applicable law or agreed to in writing, software
|
||||
// * distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// * See the License for the specific language governing permissions and
|
||||
// * limitations under the License.
|
||||
// */
|
||||
//package com.arialyy.aria.sftp;
|
||||
//
|
||||
//import com.arialyy.aria.core.AriaConfig;
|
||||
//import com.arialyy.aria.core.FtpUrlEntity;
|
||||
//import com.arialyy.aria.core.common.AbsNormalEntity;
|
||||
//import com.arialyy.aria.core.inf.OnFileInfoCallback;
|
||||
//import com.arialyy.aria.core.upload.UploadEntity;
|
||||
//import com.arialyy.aria.core.wrapper.AbsTaskWrapper;
|
||||
//import com.arialyy.aria.ftp.FtpTaskOption;
|
||||
//import com.arialyy.aria.util.ALog;
|
||||
//import com.arialyy.aria.util.CommonUtil;
|
||||
//import com.jcraft.jsch.ChannelSftp;
|
||||
//import com.jcraft.jsch.JSchException;
|
||||
//import com.jcraft.jsch.SftpException;
|
||||
//import java.util.Vector;
|
||||
//
|
||||
///**
|
||||
// * https://cloud.tencent.com/developer/article/1354612
|
||||
// *
|
||||
// * @author lyy
|
||||
// */
|
||||
//public class SFtpInfoThread<ENTITY extends AbsNormalEntity, TASK_WRAPPER extends AbsTaskWrapper<ENTITY>>
|
||||
// implements Runnable {
|
||||
//
|
||||
// private final String TAG = CommonUtil.getClassName(getClass());
|
||||
// protected ENTITY mEntity;
|
||||
// protected TASK_WRAPPER mTaskWrapper;
|
||||
// protected FtpTaskOption mTaskOption;
|
||||
// private int mConnectTimeOut;
|
||||
// protected OnFileInfoCallback mCallback;
|
||||
// protected long mSize = 0;
|
||||
// protected String charSet = "UTF-8";
|
||||
// private boolean isUpload = false;
|
||||
// private SFtpUtil mSFtpUtil;
|
||||
// private BaseInfoThreadAdapter mAdapter;
|
||||
//
|
||||
// public SFtpInfoThread(SFtpUtil ftpUtil, TASK_WRAPPER taskWrapper,
|
||||
// OnFileInfoCallback callback) {
|
||||
// mSFtpUtil = ftpUtil;
|
||||
// mTaskWrapper = taskWrapper;
|
||||
// mEntity = taskWrapper.getEntity();
|
||||
// mTaskOption = (FtpTaskOption) taskWrapper.getTaskOption();
|
||||
// mConnectTimeOut = AriaConfig.getInstance().getDConfig().getConnectTimeOut();
|
||||
// mCallback = callback;
|
||||
// if (mEntity instanceof UploadEntity) {
|
||||
// isUpload = true;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// public void setAdapter(BaseInfoThreadAdapter adapter) {
|
||||
// mAdapter = adapter;
|
||||
// }
|
||||
//
|
||||
// @Override public void run() {
|
||||
// if (mAdapter == null) {
|
||||
// ALog.e(TAG, "adapter为空");
|
||||
// return;
|
||||
// }
|
||||
// try {
|
||||
// ChannelSftp channelSftp =
|
||||
// (ChannelSftp) mSFtpUtil.getSession().openChannel(SFtpUtil.CMD_TYPE_SFTP);
|
||||
// Vector files = channelSftp.ls(getUrlEntity().remotePath);
|
||||
//
|
||||
// if (files.isEmpty()) {
|
||||
// ALog.e(TAG, String.format("路径【%s】没有文件", getUrlEntity().remotePath));
|
||||
// mCallback.onFail(mEntity, null, false);
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// if (!mAdapter.handlerFile(files)) {
|
||||
// ALog.e(TAG, "文件处理失败");
|
||||
// mCallback.onFail(mEntity, null, false);
|
||||
// return;
|
||||
// }
|
||||
// } catch (JSchException ex) {
|
||||
// ex.printStackTrace();
|
||||
// } catch (SftpException e) {
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// private FtpUrlEntity getUrlEntity() {
|
||||
// return mTaskOption.getUrlEntity();
|
||||
// }
|
||||
//}
|
||||
|
||||
@@ -1,40 +1,40 @@
|
||||
/*
|
||||
* Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria)
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.arialyy.aria.sftp.download;
|
||||
|
||||
import com.arialyy.aria.core.common.SubThreadConfig;
|
||||
import com.arialyy.aria.core.task.IThreadTask;
|
||||
import com.arialyy.aria.core.task.ThreadTask;
|
||||
import com.arialyy.aria.core.wrapper.ITaskWrapper;
|
||||
import com.arialyy.aria.ftp.download.FtpDLoaderAdapter;
|
||||
|
||||
/**
|
||||
* sftp下载适配器
|
||||
*
|
||||
* @author lyy
|
||||
*/
|
||||
final class SFtpDLoaderAdapter extends FtpDLoaderAdapter {
|
||||
SFtpDLoaderAdapter(ITaskWrapper wrapper) {
|
||||
super(wrapper);
|
||||
}
|
||||
|
||||
@Override public IThreadTask createThreadTask(SubThreadConfig config) {
|
||||
ThreadTask threadTask = new ThreadTask(config);
|
||||
SFtpDThreadTaskAdapter adapter = new SFtpDThreadTaskAdapter(config);
|
||||
threadTask.setAdapter(adapter);
|
||||
return threadTask;
|
||||
}
|
||||
}
|
||||
///*
|
||||
// * Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria)
|
||||
// *
|
||||
// * Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// * you may not use this file except in compliance with the License.
|
||||
// * You may obtain a copy of the License at
|
||||
// *
|
||||
// * http://www.apache.org/licenses/LICENSE-2.0
|
||||
// *
|
||||
// * Unless required by applicable law or agreed to in writing, software
|
||||
// * distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// * See the License for the specific language governing permissions and
|
||||
// * limitations under the License.
|
||||
// */
|
||||
//package com.arialyy.aria.sftp.download;
|
||||
//
|
||||
//import com.arialyy.aria.core.common.SubThreadConfig;
|
||||
//import com.arialyy.aria.core.task.IThreadTask;
|
||||
//import com.arialyy.aria.core.task.ThreadTask;
|
||||
//import com.arialyy.aria.core.wrapper.ITaskWrapper;
|
||||
//import com.arialyy.aria.ftp.download.FtpDTTBuilder;
|
||||
//
|
||||
///**
|
||||
// * sftp下载适配器
|
||||
// *
|
||||
// * @author lyy
|
||||
// */
|
||||
//final class SFtpDLoaderAdapter extends FtpDTTBuilder {
|
||||
// SFtpDLoaderAdapter(ITaskWrapper wrapper) {
|
||||
// super(wrapper);
|
||||
// }
|
||||
//
|
||||
// @Override public IThreadTask createThreadTask(SubThreadConfig config) {
|
||||
// ThreadTask threadTask = new ThreadTask(config);
|
||||
// SFtpDThreadTaskAdapter adapter = new SFtpDThreadTaskAdapter(config);
|
||||
// threadTask.setAdapter(adapter);
|
||||
// return threadTask;
|
||||
// }
|
||||
//}
|
||||
|
||||
@@ -1,75 +1,75 @@
|
||||
/*
|
||||
* Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria)
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.arialyy.aria.sftp.download;
|
||||
|
||||
import com.arialyy.aria.core.common.AbsEntity;
|
||||
import com.arialyy.aria.core.common.CompleteInfo;
|
||||
import com.arialyy.aria.core.download.DTaskWrapper;
|
||||
import com.arialyy.aria.core.inf.OnFileInfoCallback;
|
||||
import com.arialyy.aria.core.listener.IEventListener;
|
||||
import com.arialyy.aria.core.loader.AbsLoader;
|
||||
import com.arialyy.aria.core.loader.AbsNormalLoaderUtil;
|
||||
import com.arialyy.aria.core.loader.NormalLoader;
|
||||
import com.arialyy.aria.core.wrapper.AbsTaskWrapper;
|
||||
import com.arialyy.aria.exception.BaseException;
|
||||
import com.arialyy.aria.ftp.FtpTaskOption;
|
||||
import com.arialyy.aria.sftp.SFtpInfoThread;
|
||||
import com.arialyy.aria.sftp.SFtpUtil;
|
||||
|
||||
/**
|
||||
* sftp下载工具
|
||||
*
|
||||
* @author lyy
|
||||
*/
|
||||
public class SFtpDLoaderUtil extends AbsNormalLoaderUtil {
|
||||
|
||||
private SFtpUtil mSftpUtil;
|
||||
|
||||
protected SFtpDLoaderUtil(AbsTaskWrapper wrapper, IEventListener listener) {
|
||||
super(wrapper, listener);
|
||||
wrapper.generateTaskOption(FtpTaskOption.class);
|
||||
FtpTaskOption option = (FtpTaskOption) wrapper.getTaskOption();
|
||||
mSftpUtil = new SFtpUtil.Builder()
|
||||
.setIp(option.getUrlEntity().hostName)
|
||||
.setPort(Integer.parseInt(option.getUrlEntity().port))
|
||||
.setUserName(option.getUrlEntity().user)
|
||||
.setPassword(option.getUrlEntity().password)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override protected AbsLoader createLoader() {
|
||||
NormalLoader loader = new NormalLoader(getListener(), getTaskWrapper());
|
||||
loader.setAdapter(new SFtpDLoaderAdapter(getTaskWrapper()));
|
||||
return loader;
|
||||
}
|
||||
|
||||
@Override protected Runnable createInfoThread() {
|
||||
DSFtpInfoThreadAdapter adapter = new DSFtpInfoThreadAdapter((DTaskWrapper) getTaskWrapper());
|
||||
SFtpInfoThread infoThread = new SFtpInfoThread<>(mSftpUtil, (DTaskWrapper) getTaskWrapper(),
|
||||
new OnFileInfoCallback() {
|
||||
@Override public void onComplete(String key, CompleteInfo info) {
|
||||
|
||||
}
|
||||
|
||||
@Override public void onFail(AbsEntity entity, BaseException e, boolean needRetry) {
|
||||
|
||||
}
|
||||
});
|
||||
infoThread.setAdapter(adapter);
|
||||
|
||||
return infoThread;
|
||||
}
|
||||
}
|
||||
///*
|
||||
// * Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria)
|
||||
// *
|
||||
// * Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// * you may not use this file except in compliance with the License.
|
||||
// * You may obtain a copy of the License at
|
||||
// *
|
||||
// * http://www.apache.org/licenses/LICENSE-2.0
|
||||
// *
|
||||
// * Unless required by applicable law or agreed to in writing, software
|
||||
// * distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// * See the License for the specific language governing permissions and
|
||||
// * limitations under the License.
|
||||
// */
|
||||
//package com.arialyy.aria.sftp.download;
|
||||
//
|
||||
//import com.arialyy.aria.core.common.AbsEntity;
|
||||
//import com.arialyy.aria.core.common.CompleteInfo;
|
||||
//import com.arialyy.aria.core.download.DTaskWrapper;
|
||||
//import com.arialyy.aria.core.inf.OnFileInfoCallback;
|
||||
//import com.arialyy.aria.core.listener.IEventListener;
|
||||
//import com.arialyy.aria.core.loader.AbsNormalLoader;
|
||||
//import com.arialyy.aria.core.loader.AbsNormalLoaderUtil;
|
||||
//import com.arialyy.aria.core.loader.NormalLoader;
|
||||
//import com.arialyy.aria.core.wrapper.AbsTaskWrapper;
|
||||
//import com.arialyy.aria.exception.BaseException;
|
||||
//import com.arialyy.aria.ftp.FtpTaskOption;
|
||||
//import com.arialyy.aria.sftp.SFtpInfoThread;
|
||||
//import com.arialyy.aria.sftp.SFtpUtil;
|
||||
//
|
||||
///**
|
||||
// * sftp下载工具
|
||||
// *
|
||||
// * @author lyy
|
||||
// */
|
||||
//public class SFtpDLoaderUtil extends AbsNormalLoaderUtil {
|
||||
//
|
||||
// private SFtpUtil mSftpUtil;
|
||||
//
|
||||
// protected SFtpDLoaderUtil(AbsTaskWrapper wrapper, IEventListener listener) {
|
||||
// super(wrapper, listener);
|
||||
// wrapper.generateTaskOption(FtpTaskOption.class);
|
||||
// FtpTaskOption option = (FtpTaskOption) wrapper.getTaskOption();
|
||||
// mSftpUtil = new SFtpUtil.Builder()
|
||||
// .setIp(option.getUrlEntity().hostName)
|
||||
// .setPort(Integer.parseInt(option.getUrlEntity().port))
|
||||
// .setUserName(option.getUrlEntity().user)
|
||||
// .setPassword(option.getUrlEntity().password)
|
||||
// .build();
|
||||
// }
|
||||
//
|
||||
// @Override protected AbsNormalLoader createLoader() {
|
||||
// NormalLoader loader = new NormalLoader(getListener(), getTaskWrapper());
|
||||
// loader.setAdapter(new SFtpDLoaderAdapter(getTaskWrapper()));
|
||||
// return loader;
|
||||
// }
|
||||
//
|
||||
// @Override protected Runnable createInfoThread() {
|
||||
// DSFtpInfoThreadAdapter adapter = new DSFtpInfoThreadAdapter((DTaskWrapper) getTaskWrapper());
|
||||
// SFtpInfoThread infoThread = new SFtpInfoThread<>(mSftpUtil, (DTaskWrapper) getTaskWrapper(),
|
||||
// new OnFileInfoCallback() {
|
||||
// @Override public void onComplete(String key, CompleteInfo info) {
|
||||
//
|
||||
// }
|
||||
//
|
||||
// @Override public void onFail(AbsEntity entity, BaseException e, boolean needRetry) {
|
||||
//
|
||||
// }
|
||||
// });
|
||||
// infoThread.setAdapter(adapter);
|
||||
//
|
||||
// return infoThread;
|
||||
// }
|
||||
//}
|
||||
|
||||
Reference in New Issue
Block a user