Downloader implementation

apache_commons_compress
Terekhin Alexandr 5 years ago
parent 898636c80a
commit 83fcb23e67
  1. 9
      src/main/java/me/bearns/fias/service/Downloader.java
  2. 28
      src/main/java/me/bearns/fias/service/DownloaderImpl.java
  3. 22
      src/main/java/me/bearns/fias/service/FiasUpdater.java

@ -0,0 +1,9 @@
package me.bearns.fias.service;
import java.io.InputStream;
import java.util.concurrent.Future;
public interface Downloader {
public Future<InputStream> download(String url);
}

@ -0,0 +1,28 @@
package me.bearns.fias.service;
import java.io.InputStream;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class DownloaderImpl implements Downloader {
private static final ExecutorService pool = Executors.newCachedThreadPool();
@Override
public Future<InputStream> download(String url) {
CompletableFuture<InputStream> completableFuture
= new CompletableFuture<>();
pool.submit(() -> {
InputStream is = null;
//todo
completableFuture.complete(is);
});
return completableFuture;
}
}

@ -5,7 +5,10 @@ import me.bearns.fias.repository.FiasVersionRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.InputStream;
import java.util.List;
import java.util.concurrent.Future;
import java.util.stream.Stream;
@Service
public class FiasUpdater implements Updater {
@ -14,7 +17,9 @@ public class FiasUpdater implements Updater {
FiasVersionRepository versions;
@Autowired
OnlineVersion downloadService;
OnlineVersion clientStub;
@Autowired
Downloader downloader;
@Override
public void update() {
@ -26,12 +31,12 @@ public class FiasUpdater implements Updater {
final Long dbVersion = dbVersionObj.getVersionId();
final long lastOnlineVersion = downloadService.getLastVersionId();
final long lastOnlineVersion = clientStub.getLastVersionId();
if(lastOnlineVersion > dbVersion) {
//need update
final List<FiasVersion> updates = downloadService.getVersionsAfter(dbVersion);
final List<FiasVersion> updates = clientStub.getVersionsAfter(dbVersion);
if(updates != null && !updates.isEmpty()) {
processUpdates(updates, false);
@ -45,7 +50,7 @@ public class FiasUpdater implements Updater {
@Override
public void reload(Long... regions) {
final List<FiasVersion> lastVersion = downloadService.getLastVersion();
final List<FiasVersion> lastVersion = clientStub.getLastVersion();
if(lastVersion != null) {
processUpdates(lastVersion, true, regions);
}
@ -57,14 +62,9 @@ public class FiasUpdater implements Updater {
updates.sort((o1, o2) -> Math.toIntExact(o1.getVersionId() - o2.getVersionId()));
//pre-fetch files if update multiple version
for (FiasVersion update : updates) {
//just for test
final Stream<Future<InputStream>> stream = updates.stream().map(u -> downloader.download(reloadFlag ? u.getFiasCompleteXmlUrl() : u.getFiasDeltaXmlUrl()));
final String url = reloadFlag ? update.getFiasCompleteXmlUrl() : update.getFiasDeltaXmlUrl();
//run update here
}
}
}
Loading…
Cancel
Save