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