From 3d271a62d9d1113006aedf0aa6044d4778bf3308 Mon Sep 17 00:00:00 2001 From: Florian Meissner <florian.meissner@mailbox.org> Date: Fri, 23 Jun 2023 11:41:42 +0200 Subject: [PATCH] initial commit; print works but is unelegant (switch from CompletableFuture to Stream) --- src/main/java/ohm/softa/a11/App.java | 31 ++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/src/main/java/ohm/softa/a11/App.java b/src/main/java/ohm/softa/a11/App.java index 906d423..0c9b75a 100644 --- a/src/main/java/ohm/softa/a11/App.java +++ b/src/main/java/ohm/softa/a11/App.java @@ -2,14 +2,17 @@ package ohm.softa.a11; import ohm.softa.a11.openmensa.OpenMensaAPI; import ohm.softa.a11.openmensa.OpenMensaAPIService; +import ohm.softa.a11.openmensa.model.Canteen; +import ohm.softa.a11.openmensa.model.PageInfo; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.Locale; -import java.util.Scanner; +import java.util.*; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; +import java.util.stream.Collectors; import java.util.stream.IntStream; +import java.util.stream.Stream; /** * @author Peter Kurfer @@ -55,6 +58,26 @@ public class App { * at first get a page without an index to be able to extract the required pagination information * afterwards you can iterate the remaining pages * keep in mind that you should await the process as the user has to select canteen with a specific id */ + OpenMensaAPI api = OpenMensaAPIService.getInstance().getOpenMensaAPI(); + var response = api.getCanteens(); + + try { + var pageInfo = PageInfo.extractFromResponse(response.get()); + var firstCanteenPage = response.get().body(); + var N = pageInfo.getTotalCountOfPages(); + var canteens = IntStream.range(2, N).parallel() + .mapToObj((n) -> api.getCanteens(n).join()) + .flatMap(Collection::stream) + .collect(Collectors.toList()); + canteens.addAll(0, firstCanteenPage); + canteens.sort(Comparator.comparingInt(Canteen::getId)); + //canteens = canteens.thenCombine(api.getCanteens(Integer.parseInt(pageN.get())), (l1, l2) -> Stream.concat(l1.parallelStream(), l2.parallelStream())) + canteens.forEach((c) -> System.out.println(c.toString())); + + } catch (InterruptedException | ExecutionException | NumberFormatException e) { + e.printStackTrace(); + System.out.println("WHYYYYYYYYYYy!!!!"); + } } private static void printMeals() { -- GitLab