Skip to content

Commit 0c37dd1

Browse files
authored
Merge pull request #43 from KloIm/sftppathfix
sftp path
2 parents 144c935 + 0a6878a commit 0c37dd1

File tree

18 files changed

+503
-181
lines changed

18 files changed

+503
-181
lines changed

pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
<url>https://github.com/alipay/rdf-file</url>
1212

1313
<properties>
14-
<rdf.file.core.version>2.2.3</rdf.file.core.version>
15-
<rdf.file.oss.version>2.2.3</rdf.file.oss.version>
16-
<rdf.file.sftp.version>2.2.3</rdf.file.sftp.version>
14+
<rdf.file.core.version>2.2.4</rdf.file.core.version>
15+
<rdf.file.oss.version>2.2.4</rdf.file.oss.version>
16+
<rdf.file.sftp.version>2.2.4</rdf.file.sftp.version>
1717
</properties>
1818

1919
<modules>

rdf-file-core/src/main/java/com/alipay/rdf/file/util/RdfFileUtil.java

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,5 @@
11
package com.alipay.rdf.file.util;
22

3-
import java.io.File;
4-
import java.io.FileFilter;
5-
import java.io.FileInputStream;
6-
import java.io.FileNotFoundException;
7-
import java.io.FileOutputStream;
8-
import java.io.IOException;
9-
import java.io.InputStream;
10-
import java.io.InputStreamReader;
11-
import java.io.UnsupportedEncodingException;
12-
import java.lang.reflect.Method;
13-
import java.math.BigDecimal;
14-
import java.nio.channels.FileChannel;
15-
import java.util.ArrayList;
16-
import java.util.List;
17-
183
import com.alipay.rdf.file.exception.RdfErrorEnum;
194
import com.alipay.rdf.file.exception.RdfFileException;
205
import com.alipay.rdf.file.loader.ProtocolLoader;
@@ -23,6 +8,13 @@
238
import com.alipay.rdf.file.model.FileConfig;
249
import com.alipay.rdf.file.model.FileDefaultConfig;
2510

11+
import java.io.*;
12+
import java.lang.reflect.Method;
13+
import java.math.BigDecimal;
14+
import java.nio.channels.FileChannel;
15+
import java.util.ArrayList;
16+
import java.util.List;
17+
2618
/**
2719
* Copyright (C) 2013-2018 Ant Financial Services Group
2820
*
@@ -766,4 +758,19 @@ public static Method findMethod(Class<?> clazz, String name) {
766758
}
767759
return null;
768760
}
761+
762+
/**
763+
* 格式化字节
764+
* si true:based on 1000, false:based on 1024
765+
* @param bytes
766+
* @param si
767+
* @return
768+
*/
769+
public static String humanReadableByteCount(long bytes, boolean si) {
770+
int unit = si ? 1000 : 1024;
771+
if (bytes < unit) return bytes + " B";
772+
int exp = (int) (Math.log(bytes) / Math.log(unit));
773+
String pre = (si ? "kMGTPE" : "KMGTPE").charAt(exp-1) + (si ? "" : "i");
774+
return String.format("%.1f %sB", bytes / Math.pow(unit, exp), pre);
775+
}
769776
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* Alipay.com Inc. Copyright (c) 2004-2019 All Rights Reserved.
3+
*/
4+
package com.alipay.rdf.file.enums;
5+
6+
/**
7+
* 进度监控日志打印方式
8+
* @author iminright-ali
9+
* @version : SftpProgressLogPrintTypeEnum.java, v 0.1 2019年09月05日 11:14 iminright-ali Exp $
10+
*/
11+
public enum SftpProgressLogPrintTypeEnum {
12+
13+
/**
14+
* 根据当前大小同步打印
15+
*/
16+
SYNC,
17+
18+
/**
19+
* 固定周期打印
20+
*/
21+
FIXED_PERIOD,
22+
23+
}

rdf-file-sftp/src/main/java/com/alipay/rdf/file/operation/AbstractSftpOperationTemplate.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,17 @@
44
*/
55
package com.alipay.rdf.file.operation;
66

7-
import java.util.Map;
8-
97
import com.alipay.rdf.file.exception.RdfErrorEnum;
108
import com.alipay.rdf.file.exception.RdfFileException;
119
import com.alipay.rdf.file.interfaces.FileSftpStorageConstants;
12-
import com.alipay.rdf.file.util.JschFactory;
13-
import com.alipay.rdf.file.util.RdfFileLogUtil;
14-
import com.alipay.rdf.file.util.SFTPUserInfo;
15-
import com.alipay.rdf.file.util.SftpThreadContext;
10+
import com.alipay.rdf.file.storage.SftpConfig;
11+
import com.alipay.rdf.file.util.*;
1612
import com.jcraft.jsch.ChannelSftp;
1713
import com.jcraft.jsch.JSchException;
1814
import com.jcraft.jsch.Session;
1915

16+
import java.util.Map;
17+
2018
/**
2119
* sftp操作模版
2220
* 用户可以自定义实现
@@ -37,7 +35,7 @@ public abstract class AbstractSftpOperationTemplate<T> {
3735
* @throws Exception
3836
*/
3937
protected abstract SftpOperationResponse<T> doBusiness(SFTPUserInfo user
40-
, Map<String, String> params) throws Exception;
38+
, Map<String, Object> params) throws Exception;
4139

4240
private void initContext(){
4341
initOperationType();
@@ -49,10 +47,10 @@ private void initContext(){
4947
* @param params
5048
* @return
5149
*/
52-
protected abstract boolean checkBeforeDoBiz(SFTPUserInfo user, Map<String, String> params);
50+
protected abstract boolean checkBeforeDoBiz(SFTPUserInfo user, Map<String, Object> params);
5351

5452
public SftpOperationResponse<T> handle(SFTPUserInfo user
55-
, Map<String, String> params){
53+
, Map<String, Object> params, SftpConfig sftpConfig){
5654
initContext();
5755
RdfFileLogUtil.common.info("rdf-file#sftpOperation."
5856
+ this.operationType + ".request,params=" + params);
@@ -61,6 +59,7 @@ public SftpOperationResponse<T> handle(SFTPUserInfo user
6159
ChannelSftp sftp = null;
6260
SftpOperationResponse response = new SftpOperationResponse<T>();
6361
try {
62+
SftpOperationContextHolder.setSftpConfig(sftpConfig);
6463
if(!checkBeforeDoBiz(user, params)){
6564
throw new RdfFileException("rdf-file#sftpOperation." + this.operationType
6665
+ ".checkParams fail,params=" + params, RdfErrorEnum.ILLEGAL_ARGUMENT);
@@ -73,6 +72,7 @@ public SftpOperationResponse<T> handle(SFTPUserInfo user
7372
response.setSuccess(false);
7473
response.setError(e);
7574
} finally {
75+
SftpOperationContextHolder.clearSftpConfig();
7676
if(needCloseConnection(params)){
7777
closeConnection(sftp, user);
7878
}
@@ -87,7 +87,7 @@ public SftpOperationResponse<T> handle(SFTPUserInfo user
8787
* @param params
8888
* @return
8989
*/
90-
private boolean needCloseConnection(Map<String, String> params){
90+
private boolean needCloseConnection(Map<String, Object> params){
9191
if(params == null){
9292
return true;
9393
}

rdf-file-sftp/src/main/java/com/alipay/rdf/file/operation/SftpFileEntry.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import com.alipay.rdf.file.interfaces.FileSftpStorageConstants;
88
import com.alipay.rdf.file.util.RdfFileUtil;
9+
import com.alipay.rdf.file.util.SFTPHelper;
910
import com.jcraft.jsch.ChannelSftp.LsEntry;
1011

1112
/**
@@ -29,7 +30,7 @@ private SftpFileEntry(){}
2930

3031
public static SftpFileEntry buildFileEntry(String fullFileName, LsEntry lsEntry){
3132
SftpFileEntry fileEntry = new SftpFileEntry();
32-
fileEntry.setFullFileName(fullFileName);
33+
fileEntry.setFullFileName(SFTPHelper.toSFTPPath(fullFileName));
3334
fileEntry.setLsEntry(lsEntry);
3435
return fileEntry;
3536
}

0 commit comments

Comments
 (0)