Resolve some TODOs, change null return based logic to exception based

This commit is contained in:
Terekhin Alexander
2020-09-16 17:37:32 +03:00
parent 0545cc6932
commit 3cc7374a30
5 changed files with 52 additions and 20 deletions
@@ -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);
@@ -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);
}
}
@@ -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)){
@@ -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<FiasVersion> getVersionsAfter(long version);
@lombok.NonNull
List<FiasVersion> getVersionsAfter(long version) throws RemoteAPIException;
List<FiasVersion> getLastVersion();
@lombok.NonNull
List<FiasVersion> getLastVersion() throws RemoteAPIException;
}
@@ -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<FiasVersion> getVersionsAfter(long version) {
public List<FiasVersion> getVersionsAfter(long version) throws RemoteAPIException {
final FiasVersion[] versions = client.getForObject(GET_ALL_FILE_INFO, FiasVersion[].class);
final FiasVersion[] versions = request(GET_ALL_FILE_INFO, FiasVersion[].class);
if(versions != null) {
return Arrays.stream(versions).filter(v -> v.getVersionId() > version).collect(Collectors.toList());
}
return null; //todo
}
@Override
public List<FiasVersion> getLastVersion() {
public List<FiasVersion> getLastVersion() throws RemoteAPIException {
List<FiasVersion> versions = new ArrayList<>();
versions.add(client.getForObject(GET_LAST_FILE_INFO, FiasVersion.class));
final FiasVersion lastFile = request(GET_LAST_FILE_INFO, FiasVersion.class);
return versions; //todo
versions.add(lastFile);
return versions;
}
private <T> T request(final String url, Class<T> 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);
}
}
}