From fd2e8cd199ff38c202701e1ac4ae2a293bf5795c Mon Sep 17 00:00:00 2001 From: Terekhin Alexander Date: Wed, 12 Aug 2020 14:14:11 +0300 Subject: [PATCH] Update proccessing --- .../me/bearns/fias/service/FiasUpdater.java | 41 ++++++++---------- .../bearns/fias/util/DownlodableUpdate.java | 43 +++++++++++++++++++ 2 files changed, 60 insertions(+), 24 deletions(-) create mode 100644 src/main/java/me/bearns/fias/util/DownlodableUpdate.java diff --git a/src/main/java/me/bearns/fias/service/FiasUpdater.java b/src/main/java/me/bearns/fias/service/FiasUpdater.java index 0c9bf1d..b82353d 100644 --- a/src/main/java/me/bearns/fias/service/FiasUpdater.java +++ b/src/main/java/me/bearns/fias/service/FiasUpdater.java @@ -2,13 +2,18 @@ package me.bearns.fias.service; import me.bearns.fias.domain.FiasVersion; import me.bearns.fias.repository.FiasVersionRepository; +import me.bearns.fias.util.DownlodableUpdate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.File; +import java.util.AbstractMap; +import java.util.HashMap; import java.util.List; import java.util.Objects; +import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; +import java.util.stream.Collectors; import java.util.stream.Stream; @Service @@ -19,8 +24,6 @@ public class FiasUpdater implements Updater { @Autowired OnlineVersion clientStub; - @Autowired - Downloader downloader; @Override public void update() { @@ -65,33 +68,23 @@ public class FiasUpdater implements Updater { updates.sort((o1, o2) -> Math.toIntExact(o1.getVersionId() - o2.getVersionId())); - //just for test - final Stream> stream = updates.stream().map(u -> downloader.download(reloadFlag ? u.getFiasCompleteXmlUrl() : u.getFiasDeltaXmlUrl())); - - processDownloads(stream, regions); - - //todo save updates - - } - - private void processDownloads(Stream> futureStream, Long ... regions) { + final Stream stream = reloadFlag ? updates.stream().map(DownlodableUpdate::processReload) : updates.stream().map(DownlodableUpdate::processUpdate); - final Stream fileStream = futureStream.map(fileFuture -> { + for (DownlodableUpdate item : stream.collect(Collectors.toList())) { try { - return fileFuture.get(); + //todo process + processFile(item.getFile(), regions); + versions.save(item.getVersion()); + + //todo save updates } catch (Exception e) { - //todo log - return null; + //todo log + break; } - }); - - //throw exception - assert fileStream.allMatch(Objects::nonNull); - - fileStream.forEachOrdered(f -> { - //todo + } + } - }); + private void processFile(File file, Long ... regions) { } } \ No newline at end of file diff --git a/src/main/java/me/bearns/fias/util/DownlodableUpdate.java b/src/main/java/me/bearns/fias/util/DownlodableUpdate.java new file mode 100644 index 0000000..27c53a2 --- /dev/null +++ b/src/main/java/me/bearns/fias/util/DownlodableUpdate.java @@ -0,0 +1,43 @@ +package me.bearns.fias.util; + +import me.bearns.fias.domain.FiasVersion; +import me.bearns.fias.service.Downloader; +import org.springframework.beans.factory.annotation.Autowired; + +import java.io.File; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; + +public class DownlodableUpdate { + + @Autowired + private static Downloader service; + + private final FiasVersion update; + private final Future file; + + private static DownlodableUpdate process(FiasVersion ver, boolean reload) { + return new DownlodableUpdate(ver, service.download(reload ? ver.getFiasCompleteXmlUrl() : ver.getFiasDeltaXmlUrl())); + } + + public static DownlodableUpdate processReload(FiasVersion ver){ + return process(ver, true); + } + + public static DownlodableUpdate processUpdate(FiasVersion ver){ + return process(ver, false); + } + + private DownlodableUpdate(FiasVersion update, Future file) { + this.update = update; + this.file = file; + } + + public File getFile() throws ExecutionException, InterruptedException { + return file.get(); + } + + public FiasVersion getVersion() { + return update; + } +}