diff --git a/src/main/java/me/bearns/fias/service/FiasUpdater.java b/src/main/java/me/bearns/fias/service/FiasUpdater.java index a1f9814..0c9bf1d 100644 --- a/src/main/java/me/bearns/fias/service/FiasUpdater.java +++ b/src/main/java/me/bearns/fias/service/FiasUpdater.java @@ -7,6 +7,7 @@ import org.springframework.stereotype.Service; import java.io.File; import java.util.List; +import java.util.Objects; import java.util.concurrent.Future; import java.util.stream.Stream; @@ -60,11 +61,37 @@ public class FiasUpdater implements Updater { //transaction from here private void processUpdates(List updates, boolean reloadFlag, Long ... regions) { + //todo reload flag impl + 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 fileStream = futureStream.map(fileFuture -> { + try { + return fileFuture.get(); + } catch (Exception e) { + //todo log + return null; + } + }); + + //throw exception + assert fileStream.allMatch(Objects::nonNull); + + fileStream.forEachOrdered(f -> { + //todo + + }); } } \ No newline at end of file