From 3cc7374a30acb876e93822f69a8fb00d9a8df7b1 Mon Sep 17 00:00:00 2001 From: Terekhin Alexander Date: Wed, 16 Sep 2020 17:37:32 +0300 Subject: [PATCH] Resolve some TODOs, change null return based logic to exception based --- .../bearns/fias/config/ApplicationConfig.java | 7 ++- .../fias/exceptions/RemoteAPIException.java | 11 +++++ .../me/bearns/fias/helpers/UpdaterImpl.java | 1 - .../me/bearns/fias/service/OnlineVersion.java | 9 ++-- .../fias/service/OnlineVersionImpl.java | 44 ++++++++++++------- 5 files changed, 52 insertions(+), 20 deletions(-) create mode 100644 src/main/java/me/bearns/fias/exceptions/RemoteAPIException.java diff --git a/src/main/java/me/bearns/fias/config/ApplicationConfig.java b/src/main/java/me/bearns/fias/config/ApplicationConfig.java index 927196d..d805890 100644 --- a/src/main/java/me/bearns/fias/config/ApplicationConfig.java +++ b/src/main/java/me/bearns/fias/config/ApplicationConfig.java @@ -1,5 +1,6 @@ package me.bearns.fias.config; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -21,6 +22,7 @@ import javax.sql.DataSource; @EnableJpaRepositories("me.bearns.fias.repository") @EnableTransactionManagement //@PropertySource(value = "application-{profile}.properties", ignoreResourceNotFound = true) +@Slf4j class ApplicationConfig { @Autowired @@ -43,7 +45,10 @@ class ApplicationConfig { HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); vendorAdapter.setGenerateDdl(false); //use liquibase - vendorAdapter.setShowSql(true); //TODO Debug + if(log.isDebugEnabled()) { + log.debug("Enable SQL echo."); + vendorAdapter.setShowSql(true); + } LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean(); factory.setJpaVendorAdapter(vendorAdapter); diff --git a/src/main/java/me/bearns/fias/exceptions/RemoteAPIException.java b/src/main/java/me/bearns/fias/exceptions/RemoteAPIException.java new file mode 100644 index 0000000..c1ea228 --- /dev/null +++ b/src/main/java/me/bearns/fias/exceptions/RemoteAPIException.java @@ -0,0 +1,11 @@ +package me.bearns.fias.exceptions; + +public class RemoteAPIException extends CommonException{ + public RemoteAPIException(Exception e) { + super(e); + } + + public RemoteAPIException(String s) { + super(s); + } +} diff --git a/src/main/java/me/bearns/fias/helpers/UpdaterImpl.java b/src/main/java/me/bearns/fias/helpers/UpdaterImpl.java index f26df19..af0f8cf 100644 --- a/src/main/java/me/bearns/fias/helpers/UpdaterImpl.java +++ b/src/main/java/me/bearns/fias/helpers/UpdaterImpl.java @@ -105,7 +105,6 @@ public class UpdaterImpl implements UpdateHelper { } private void processArchive(File file, Predicate filter) throws CommonException { - //TODO try(final ZipFile zipFile = new ZipFile(file)){ diff --git a/src/main/java/me/bearns/fias/service/OnlineVersion.java b/src/main/java/me/bearns/fias/service/OnlineVersion.java index 0944475..a5f3c4f 100644 --- a/src/main/java/me/bearns/fias/service/OnlineVersion.java +++ b/src/main/java/me/bearns/fias/service/OnlineVersion.java @@ -1,14 +1,17 @@ package me.bearns.fias.service; import me.bearns.fias.domain.FiasVersion; +import me.bearns.fias.exceptions.RemoteAPIException; import java.util.List; public interface OnlineVersion { - long getLastVersionId(); + long getLastVersionId() throws RemoteAPIException; - List getVersionsAfter(long version); + @lombok.NonNull + List getVersionsAfter(long version) throws RemoteAPIException; - List getLastVersion(); + @lombok.NonNull + List getLastVersion() throws RemoteAPIException; } diff --git a/src/main/java/me/bearns/fias/service/OnlineVersionImpl.java b/src/main/java/me/bearns/fias/service/OnlineVersionImpl.java index ffbafd9..27e9485 100644 --- a/src/main/java/me/bearns/fias/service/OnlineVersionImpl.java +++ b/src/main/java/me/bearns/fias/service/OnlineVersionImpl.java @@ -2,7 +2,9 @@ package me.bearns.fias.service; import lombok.AllArgsConstructor; import me.bearns.fias.domain.FiasVersion; +import me.bearns.fias.exceptions.RemoteAPIException; import org.springframework.stereotype.Component; +import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; import java.util.ArrayList; @@ -20,33 +22,45 @@ public class OnlineVersionImpl implements OnlineVersion{ RestTemplate client = new RestTemplate(); @Override - public long getLastVersionId() { + public long getLastVersionId() throws RemoteAPIException { - final FiasVersion version = client.getForObject(GET_LAST_FILE_INFO, FiasVersion.class); + final FiasVersion version = request(GET_LAST_FILE_INFO, FiasVersion.class); - if(version != null) return version.getVersionId(); - - return 0; //todo + return version.getVersionId(); } @Override - public List getVersionsAfter(long version) { - - final FiasVersion[] versions = client.getForObject(GET_ALL_FILE_INFO, FiasVersion[].class); + public List getVersionsAfter(long version) throws RemoteAPIException { - if(versions != null) { - return Arrays.stream(versions).filter(v -> v.getVersionId() > version).collect(Collectors.toList()); - } + final FiasVersion[] versions = request(GET_ALL_FILE_INFO, FiasVersion[].class); - return null; //todo + return Arrays.stream(versions).filter(v -> v.getVersionId() > version).collect(Collectors.toList()); } @Override - public List getLastVersion() { + public List getLastVersion() throws RemoteAPIException { + List versions = new ArrayList<>(); - versions.add(client.getForObject(GET_LAST_FILE_INFO, FiasVersion.class)); + final FiasVersion lastFile = request(GET_LAST_FILE_INFO, FiasVersion.class); + + versions.add(lastFile); + + return versions; + } - return versions; //todo + private T request(final String url, Class responseType) throws RemoteAPIException { + + try { + + final T result = client.getForObject(url, responseType); + + if (result == null) throw new RemoteAPIException("Request to " + url + " return no data."); + + return result; + + } catch (RestClientException e){ + throw new RemoteAPIException(e); + } } }