|
|
@ -9,6 +9,7 @@ import java.util.Collections;
|
|
|
|
import java.util.HashMap;
|
|
|
|
import java.util.HashMap;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.function.Predicate;
|
|
|
|
import java.util.function.Predicate;
|
|
|
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
import java.util.stream.Stream;
|
|
|
|
import java.util.stream.Stream;
|
|
|
|
|
|
|
|
|
|
|
|
import cokr.xit.foundation.component.ScheduledBean;
|
|
|
|
import cokr.xit.foundation.component.ScheduledBean;
|
|
|
@ -174,7 +175,7 @@ public abstract class FileJobBean extends ScheduledBean {
|
|
|
|
* @return 설정값
|
|
|
|
* @return 설정값
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
protected String config(String key) {
|
|
|
|
protected String config(String key) {
|
|
|
|
return config().getJobConf(jobName(), key);
|
|
|
|
return ifEmpty(config().getJobConf(jobName(), key), () -> config().getDefault(key));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**지정한 디렉토리의 파일들의 경로를 반환한다.
|
|
|
|
/**지정한 디렉토리의 파일들의 경로를 반환한다.
|
|
|
@ -184,7 +185,7 @@ public abstract class FileJobBean extends ScheduledBean {
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
protected List<Path> getFilePaths(String dir, Predicate<Path> filter) {
|
|
|
|
protected List<Path> getFilePaths(String dir, Predicate<Path> filter) {
|
|
|
|
try (Stream<Path> walk = Files.list(Paths.get(dir))) {
|
|
|
|
try (Stream<Path> walk = Files.list(Paths.get(dir))) {
|
|
|
|
return walk.filter(ifEmpty(filter, path -> true)).toList();
|
|
|
|
return walk.filter(ifEmpty(filter, path -> true)).collect(Collectors.toList());
|
|
|
|
} catch (Exception e) {
|
|
|
|
} catch (Exception e) {
|
|
|
|
throw runtimeException(e);
|
|
|
|
throw runtimeException(e);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -224,12 +225,28 @@ public abstract class FileJobBean extends ScheduledBean {
|
|
|
|
* @return 수신 작업 디렉토리의 파일 경로 목록
|
|
|
|
* @return 수신 작업 디렉토리의 파일 경로 목록
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
protected List<Path> getReceivedFilePaths(Predicate<Path> filter) {
|
|
|
|
protected List<Path> getReceivedFilePaths(Predicate<Path> filter) {
|
|
|
|
|
|
|
|
return getReceivedFilePaths(filter, 0);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**수신 디렉토리의 파일들을 작업 디렉토리로 이동하고, 경로를 반환한다.
|
|
|
|
|
|
|
|
* @param filter 작업 대상 파일에 적용할 필터. 지정하지 않으면 모든 파일을 이동한다.
|
|
|
|
|
|
|
|
* @param fetchSize 이동 및 반환하는 파일경로 갯수
|
|
|
|
|
|
|
|
* <ul><li>0보다 크면 해당 갯수의 경로</li>
|
|
|
|
|
|
|
|
* <li>1보다 작으면 모든 경로</li>
|
|
|
|
|
|
|
|
* </ul>
|
|
|
|
|
|
|
|
* @return 수신 작업 디렉토리의 파일 경로 목록
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
protected List<Path> getReceivedFilePaths(Predicate<Path> filter, int fetchSize) {
|
|
|
|
String receiveDir = receiveDir(),
|
|
|
|
String receiveDir = receiveDir(),
|
|
|
|
workingDir = receiveWorkingDir();
|
|
|
|
workingDir = receiveWorkingDir();
|
|
|
|
Predicate<Path> test = ifEmpty(filter, Files::isRegularFile);
|
|
|
|
Predicate<Path> test = ifEmpty(filter, Files::isRegularFile);
|
|
|
|
|
|
|
|
|
|
|
|
List<Path> paths = getFilePaths(receiveDir, test);
|
|
|
|
List<Path> paths = getFilePaths(receiveDir, test);
|
|
|
|
if (paths.isEmpty()) return Collections.emptyList();
|
|
|
|
int size = paths.size();
|
|
|
|
|
|
|
|
if (size < 1) return Collections.emptyList();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (fetchSize > 0 && size > fetchSize)
|
|
|
|
|
|
|
|
paths.subList(fetchSize, size).clear();
|
|
|
|
|
|
|
|
|
|
|
|
move(paths, workingDir);
|
|
|
|
move(paths, workingDir);
|
|
|
|
|
|
|
|
|
|
|
|