From f91e19e8f6dbf7d382f8f8702db4da6fcb27fd3c Mon Sep 17 00:00:00 2001 From: "michele.artini" Date: Fri, 26 May 2023 12:03:27 +0200 Subject: [PATCH] mock ftp --- pom.xml | 5 ++ .../apps/Oai2ftp/service/Oai2FtpService.java | 6 +- .../apps/Oai2ftp/utils/FtpClientWrapper.java | 5 +- .../apps/Oai2ftp/utils/MockFtpClient.java | 81 +++++++++++++++++++ src/main/resources/application.properties | 2 +- 5 files changed, 95 insertions(+), 4 deletions(-) create mode 100644 src/main/java/eu/dnetlib/apps/Oai2ftp/utils/MockFtpClient.java diff --git a/pom.xml b/pom.xml index 19c9ace..a3c7768 100644 --- a/pom.xml +++ b/pom.xml @@ -60,6 +60,11 @@ 2.1.4 + + jaxen + jaxen + + org.apache.httpcomponents.client5 httpclient5 diff --git a/src/main/java/eu/dnetlib/apps/Oai2ftp/service/Oai2FtpService.java b/src/main/java/eu/dnetlib/apps/Oai2ftp/service/Oai2FtpService.java index 3e64209..9f537d3 100644 --- a/src/main/java/eu/dnetlib/apps/Oai2ftp/service/Oai2FtpService.java +++ b/src/main/java/eu/dnetlib/apps/Oai2ftp/service/Oai2FtpService.java @@ -12,6 +12,7 @@ import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.dom4j.Document; @@ -83,8 +84,9 @@ public class Oai2FtpService { info.setExecutionStatus(ExecutionStatus.COMPLETED); } catch (final Throwable e) { info.setExecutionStatus(ExecutionStatus.FAILED); - info.setMessage(e.getMessage()); + info.setMessage(e.getMessage() + ": " + ExceptionUtils.getStackTrace(e)); } finally { + info.setEnd(LocalDateTime.now()); ftp.disconnect(); collectionLogEntryRepository.save(SimpleUtils.infoToLog(info)); } @@ -134,7 +136,7 @@ public class Oai2FtpService { } else { return collectionLogEntryRepository.findById(jobId) .map(SimpleUtils::logToInfo) - .orElse(null); + .orElseThrow(() -> new RuntimeException("Invalid id: " + jobId)); } } diff --git a/src/main/java/eu/dnetlib/apps/Oai2ftp/utils/FtpClientWrapper.java b/src/main/java/eu/dnetlib/apps/Oai2ftp/utils/FtpClientWrapper.java index 112118a..8ee07fd 100644 --- a/src/main/java/eu/dnetlib/apps/Oai2ftp/utils/FtpClientWrapper.java +++ b/src/main/java/eu/dnetlib/apps/Oai2ftp/utils/FtpClientWrapper.java @@ -4,6 +4,7 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.net.ftp.FTPClient; @@ -21,7 +22,9 @@ public class FtpClientWrapper { private FTPClient ftpConnect(final String server, final boolean secure) { try { - if (secure) { + if (StringUtils.isBlank(server)) { + return new MockFtpClient(); + } else if (secure) { final FTPSClient ftp = new FTPSClient(); ftp.connect(server); // Set protection buffer size diff --git a/src/main/java/eu/dnetlib/apps/Oai2ftp/utils/MockFtpClient.java b/src/main/java/eu/dnetlib/apps/Oai2ftp/utils/MockFtpClient.java new file mode 100644 index 0000000..00d6464 --- /dev/null +++ b/src/main/java/eu/dnetlib/apps/Oai2ftp/utils/MockFtpClient.java @@ -0,0 +1,81 @@ +package eu.dnetlib.apps.oai2ftp.utils; + +import java.io.IOException; +import java.io.InputStream; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.commons.net.ftp.FTPClient; + +public class MockFtpClient extends FTPClient { + + private static final Log log = LogFactory.getLog(MockFtpClient.class); + + public MockFtpClient() { + log.debug("MOCK FTP CLIENT - Constructor"); + } + + @Override + public boolean login(final String username, final String password) throws IOException { + log.debug("MOCK FTP CLIENT - login: " + username + ", " + password); + return true; + } + + @Override + public boolean isConnected() { + log.debug("MOCK FTP CLIENT - isConnected"); + return true; + } + + @Override + public void disconnect() throws IOException { + log.debug("MOCK FTP CLIENT - disconnect"); + } + + @Override + public boolean setFileType(final int fileType) throws IOException { + log.debug("MOCK FTP CLIENT - setFileType"); + return true; + } + + @Override + public void setBufferSize(final int bufSize) { + log.debug("MOCK FTP CLIENT - setBufferSize"); + } + + @Override + public void enterLocalPassiveMode() { + log.debug("MOCK FTP CLIENT - enterLocalPassiveMode"); + } + + @Override + public boolean changeWorkingDirectory(final String pathname) throws IOException { + log.debug("MOCK FTP CLIENT - changeWorkingDirectory: " + pathname); + return true; + } + + @Override + public boolean makeDirectory(final String pathname) throws IOException { + log.debug("MOCK FTP CLIENT - makeDirectory: " + pathname); + return true; + } + + @Override + public boolean storeFile(final String remote, final InputStream local) throws IOException { + log.debug("MOCK FTP CLIENT - storeFile: " + remote); + return true; + } + + @Override + public int getReplyCode() { + log.debug("MOCK FTP CLIENT - getReplyCode"); + return -1; + } + + @Override + public String getReplyString() { + log.debug("MOCK FTP CLIENT - getReplyString"); + return "MOCK"; + } + +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 14a0a77..177e3e4 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -12,7 +12,7 @@ spring.jpa.hibernate.ddl-auto=update spring.jpa.properties.hibernate.format_sql=true spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect -oai2ftp.conf.ftp.server = localhost +oai2ftp.conf.ftp.server = oai2ftp.conf.ftp.user = test oai2ftp.conf.ftp.password = testPwd oai2ftp.conf.ftp.basedir = /oai