From bb9b091f223037d669d010bdcd7f4ec5e46d7716 Mon Sep 17 00:00:00 2001 From: SofianeLasri <alasri250@gmail.com> Date: Mon, 28 Mar 2022 12:40:09 +0200 Subject: [PATCH] =?UTF-8?q?Meilleure=20gestion=20des=20commandes=20re?= =?UTF-8?q?=C3=A7ues?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/slprojects/pizzeria/backTasks.java | 54 ++++++++++++------- .../main/res/layout/activity_num_table.xml | 13 ++--- 2 files changed, 43 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/com/slprojects/pizzeria/backTasks.java b/app/src/main/java/com/slprojects/pizzeria/backTasks.java index 1410a79..0e8f014 100644 --- a/app/src/main/java/com/slprojects/pizzeria/backTasks.java +++ b/app/src/main/java/com/slprojects/pizzeria/backTasks.java @@ -41,27 +41,45 @@ public class backTasks extends AsyncTask<String, Void, Void> { // Le serveur demande d'envoyer LIST pour la récupérer sendMessageToServer("LIST"); - // On va récupérer le nombre de commandes - Integer nbCommandes = Integer.parseInt(input.readLine()); - Log.i("backTasks:", "Nombre de commandes: "+nbCommandes); - - // Maintenant on va attendre ses messages - String receviedMsg = ""; - Integer receivedFlag = 1; - String textToDisplay = ""; - // Je ne peux pas faire receivedFlag < nbCommandes car il y a des commandes regroupées sur une seule ligne - while(receviedMsg != null || receivedFlag == 1){ - receviedMsg = input.readLine(); - if(receviedMsg != null){ - textToDisplay += receviedMsg + "\n"; - Log.i("backTasks", "Commande en attente: " + receviedMsg); - receivedFlag++; // On incrémente le flag - Log.i("backTasks", "Flag: " + receivedFlag); + // On va récupérer les messages du serveur + Integer nbMessagesRecus = 0; + Integer nbMessagesAttendus = 0; + Boolean listenMessages = true; + String receivedMessage = ""; + String messageToSend = ""; + // On va écouter un message tant que le flag est vrai + while(listenMessages){ + receivedMessage = input.readLine(); // On lit le message + if(receivedMessage != null){ // Si on a bien reçu un message + // On va check l'ordre du message + // Le premier message contient le nombre de commandes + if(nbMessagesRecus == 0){ + nbMessagesAttendus = Integer.parseInt(receivedMessage); + nbMessagesRecus++; + Log.i("backTasks:", "Nombre de commandes: "+nbMessagesAttendus); + }else{ + // On a reçu un message + // On va split les messages au cas où plusieurs auraient été envoyés en même temps + String[] messages = receivedMessage.split("Table"); + for(int i = 0; i < messages.length; i++){ + if(messages[i].length() > 0){ + // On ajoute le message à la liste + messageToSend += "Table" + messages[i] + "\n"; // On rajoute "Table" car le split l'a supprimé + // On va incrémenter le nombre de message reçu + nbMessagesRecus++; + Log.i("backTasks:", "Message n°"+ nbMessagesRecus +" reçu: "+messages[i]); + } + } + } + if((nbMessagesRecus-1) == nbMessagesAttendus){ // -1 car on a déjà récupéré le nombre de commandes + // On a reçu tous les messages + listenMessages = false; + } } } - Log.i("backTasks", "Liste des commandes reçues"); + // On va afficher les commandes - numTableActivity.setListeCommandes(textToDisplay); + numTableActivity.setListeCommandes(messageToSend); }else{ if(activity == null){ diff --git a/app/src/main/res/layout/activity_num_table.xml b/app/src/main/res/layout/activity_num_table.xml index d688a1c..6548ba4 100644 --- a/app/src/main/res/layout/activity_num_table.xml +++ b/app/src/main/res/layout/activity_num_table.xml @@ -23,30 +23,31 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:orientation="horizontal" - app:layout_constraintTop_toBottomOf="@+id/imageView" app:layout_constraintBottom_toTopOf="@+id/listeCommandesText" + app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toEndOf="parent"> + app:layout_constraintTop_toBottomOf="@+id/imageView"> <TextView android:id="@+id/textNumTable" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Numéro de table" - android:textSize="16sp" /> + android:textSize="16sp"/> <EditText android:id="@+id/tableNumInput" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:ems="10" - android:inputType="number" /> + android:ems="9" + android:inputType="number" + android:minHeight="48dp" /> <Button android:id="@+id/btnValider" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="@string/choose"/> + android:text="@string/choose" /> </LinearLayout> -- GitLab