Ekawa  1.0
BTS SNIR LaSalle Avignon 2021
Cafetiere.java
Aller à la documentation de ce fichier.
1 package com.example.ekawa;
2 
3 import android.util.Log;
4 
5 import java.util.ArrayList;
6 
19 public class Cafetiere
20 {
24  private static final String TAG = "Cafetiere";
25  public static final int AUCUNE_CAPSULE = -1;
26  public static final Integer NOMBRE_CAPSULE_MAX = 8;
27  public static final Integer NOMBRE_BOISSON_MAX = 2;
28  public static final int NB_MAX_CAFE_CONSEILLEE = 4;
29  private static final int BOISSON_COURT = 0;
30  private static final int BOISSON_LONG = 1;
31  private static final int TEMPS_BOISSON_COURT = 6000;
32  private static final int TEMPS_BOISSON_LONG = 12000;
33 
34 
38  private String[] nomsCapusles = {
39  "Colombia",
40  "Indonesia",
41  "Ethiopia",
42  "Volluto",
43  "Capriccio",
44  "Cosi",
45  "Scuro",
46  "Vanilla Eclair"
47  };
48 
49  private Integer[] idImagesCapsules =
50  {
51  R.mipmap.ic_capsule_colombia,
52  R.mipmap.ic_capsule_indonesia,
53  R.mipmap.ic_capsule_ethiopia,
54  R.mipmap.ic_capsule_volluto,
55  R.mipmap.ic_capsule_capriccio,
56  R.mipmap.ic_capsule_cosi,
57  R.mipmap.ic_capsule_scuro,
58  R.mipmap.ic_capsule_vanilla_eclair
59  };
60 
61  private boolean[] presencesCapsules = { true, true, true, true, true, true, true, true };
62 
63  private String[] nomsBoissons = { "Court", "Long" };
64 
65  private Integer[] idImagesBoissons = { R.drawable.ic_cafe_court, R.drawable.ic_cafe_long };
66 
67  private Integer[] descriptionCapsules = {
68  R.string.colombia,
69  R.string.indonesia,
70  R.string.ethiopia,
71  R.string.volluto,
72  R.string.capriccio,
73  R.string.cosi,
74  R.string.scuro,
75  R.string.vanilla_eclair
76  };
77 
78  private Ihm ihm;
79  private Communication communication = null;
80  private Preference preference = null;
81 
82 
83  private ArrayList<Capsule> capsules;
84  private ArrayList<Boisson> boissons;
86  private int boissonActuelle = 0;
87 
88  private boolean etatCafetiere = false;
89  private boolean etatTasse = false;
90  private boolean etatBac = false;
91  private int niveauEau = 0;
92 
93 
94  private int nombreCafeDuJour = 0;
95  private int nombreCafeTotal = 0;
96  private int nombreBacVide = 0;
97  private int nombreEauRemplie = 0;
98  private int dureteeEau = 0;
99  private int qualiteEau = 0;
100 
101  private ArrayList<Programmation> programmations;
104 
105  private boolean ntp = false;
106  private String versionCafetiere = "Inconnue";
107 
113  public Cafetiere(Ihm ihm)
114  {
115  Log.d(TAG, "Cafetiere()");
116  this.ihm = ihm;
122  }
123 
128  private void initialiserPreference()
129  {
130  preference = new Preference(ihm);
131  String donnee = preference.obtenir(Preference.CAPSULE).toString();
132  if(!donnee.isEmpty())
133  capsuleActuelle = Integer.valueOf(donnee);
134  else
135  capsuleActuelle = 0; // première capsule
136  donnee = preference.obtenir(Preference.BOISSON).toString();
137  if(!donnee.isEmpty()) // café court
138  boissonActuelle = Integer.valueOf(donnee);
139  else
140  boissonActuelle = BOISSON_COURT;
141  nombreCafeDuJour = preference.obtenirNombreCafeDuJour(nombreCafeDuJour);
142  Log.d(TAG, "initialiserPreference() capsuleActuelle = " + capsuleActuelle);
143  Log.d(TAG, "initialiserPreference() boissonActuelle = " + boissonActuelle);
144  Log.d(TAG, "initialiserPreference() nombreCafeDuJour = " + nombreCafeDuJour);
145  }
146 
151  private void initaliserProgrammation()
152  {
153  Log.d(TAG, "initaliserProgrammation()");
154  programmations = new ArrayList<Programmation>();
156  }
157 
163  {
164  Log.d(TAG, "initialiserCommunication()");
165  communication = new Communication(ihm, this);
166  }
167 
172  private void initialiserCapsules()
173  {
174  Log.d(TAG, "initialiserCapsules()");
175  capsules = new ArrayList<>();
176  for(int i = 0; i < NOMBRE_CAPSULE_MAX; ++i)
177  capsules.add(new Capsule(nomsCapusles[i], idImagesCapsules[i], presencesCapsules[i]));
178  }
179 
184  private void initialiserBoissons()
185  {
186  Log.d(TAG, "initialiserBoissons()");
187  boissons = new ArrayList<>();
188  for(int i = 0; i < NOMBRE_BOISSON_MAX; ++i)
189  boissons.add(new Boisson(nomsBoissons[i], idImagesBoissons[i]));
190  }
191 
197  public ArrayList<Capsule> listerCapsules()
198  {
199  Log.d(TAG, "listerCapsules()");
200  return capsules;
201  }
202 
208  public ArrayList<Boisson> listerBoissons()
209  {
210  Log.d(TAG, "listerBoissons()");
211  return boissons;
212  }
213 
220  public Integer obtenirDescriptionCapsule(int position)
221  {
222  Log.d(TAG, "obtenirDescriptionCapsule()");
223  return descriptionCapsules[position];
224  }
225 
231  public void changerCapsuleActuelle(int capsule)
232  {
233  Log.d(TAG, "changerCapsuleActuelle()");
234  this.capsuleActuelle = capsule;
235  preference.editer(Preference.CAPSULE, capsuleActuelle);
236  ihm.actualiserIndicateurs();
237  }
238 
244  public void changerBoissonActuelle(int boisson)
245  {
246  Log.d(TAG, "changerBoissonActuelle()");
247  this.boissonActuelle = boisson;
248  preference.editer(Preference.BOISSON, boissonActuelle);
249  }
250 
257  {
258  Log.d(TAG, "informerCapsuleActuelle()");
259  return capsuleActuelle;
260  }
261 
268  {
269  Log.d(TAG, "informerBoissonActuelle()");
270  return boissonActuelle;
271  }
272 
278  public boolean informerEtatCafetiere()
279  {
280  Log.d(TAG, "informerEtatCafetiere()");
281  return etatCafetiere;
282  }
283 
289  public boolean informerEtatBluetooth()
290  {
291  Log.d(TAG, "informerEtatBluetooth()");
292  return communication.estActivee();
293  }
294 
300  public boolean informerConnexionBluetooth()
301  {
302  Log.d(TAG, "informerConnexionBluetooth()");
303  return communication.estConnectee();
304  }
305 
311  public boolean informerEtatTasse()
312  {
313  Log.d(TAG, "informerEtatTasse()");
314  return etatTasse;
315  }
316 
322  public boolean informerEtatBac()
323  {
324  Log.d(TAG, "informerEtatBac()");
325  return etatBac;
326  }
327 
333  public int informerNiveauEau()
334  {
335  Log.d(TAG, "informerNiveauEau()");
336  return niveauEau;
337  }
338 
345  public boolean informerPresenceCapsule(int position)
346  {
347  Log.d(TAG, "informerPresenceCapsule()");
348  return capsules.get(position).obtenirPresence();
349  }
350 
357  {
358  Log.d(TAG, "informerNombreCafeDuJour()");
359  return nombreCafeDuJour;
360  }
361 
367  public String informerNomCafetiere()
368  {
369  Log.d(TAG, "informerNomCafetiere()");
370  if(communication.estConnectee())
371  return communication.obtenirNomPeripherique();
373  }
374 
381  {
382  Log.d(TAG, "informerNombreCafeTotal()");
383  return nombreCafeTotal;
384  }
385 
392  {
393  Log.d(TAG, "informerNombreBacVide()");
394  return nombreBacVide;
395  }
396 
403  {
404  Log.d(TAG, "informerNombreEauRemplie()");
405  return nombreEauRemplie;
406  }
407 
413  public int informerDureteeEau()
414  {
415  Log.d(TAG, "informerDureteeEau()");
416  return dureteeEau;
417  }
418 
424  public int informerQualiteEau()
425  {
426  Log.d(TAG, "informerQualiteEau()");
427  return qualiteEau;
428  }
429 
435  public boolean informerNTP()
436  {
437  Log.d(TAG, "informerNTP()");
438  return ntp;
439  }
440 
446  public String informerVersionCafetiere()
447  {
448  Log.d(TAG, "informerVersionCafetiere()");
449  return versionCafetiere;
450  }
451 
457  public boolean estPrete()
458  {
460  return true;
461  else
462  return false;
463  }
464 
469  public void allumer()
470  {
471  Log.d(TAG,"allumer()");
472  if(communication != null)
473  communication.activer();
474  }
475 
480  public void eteindre()
481  {
482  Log.d(TAG,"eteindre()");
483  if(communication != null)
484  communication.desactiver();
485  etatCafetiere = false;
486  etatTasse = false;
487  etatBac = false;
488  niveauEau = 0;
489  }
490 
495  public void connecter()
496  {
497  Log.d(TAG,"connecter()");
498  if(communication != null)
499  communication.connecter();
500  }
501 
506  public void deconnecter()
507  {
508  Log.d(TAG,"deconnecter()");
509  if(communication != null)
510  communication.deconnecter();
511  etatCafetiere = false;
512  etatTasse = false;
513  etatBac = false;
514  niveauEau = 0;
515  }
516 
522  public void changerEtats(String trame)
523  {
524  Log.d(TAG, "changerEtats()");
525  trame = trame.replace(Protocole.DEBUT_TRAME, "");
526 
527  if(trame != null)
528  {
529  if (trame.startsWith(Protocole.TEST_ALIVE))
531  else if (trame.startsWith(Protocole.INDICATEUR_PREPARATION_CAFE))
533  else if (trame.startsWith(Protocole.ACTUALISATION_CAFETIERE))
534  actualiserCafetiere(trame);
535  else if (trame.startsWith(Protocole.ACTUALISATION_MAGASIN))
536  actualiserMagasin(trame);
537  else if (trame.startsWith(Protocole.ACTUALISATION_COMPLEMENTAIRE) || trame.startsWith(Protocole.REINITIALISER))
539  else if (trame.startsWith(Protocole.ACTUALISATION_PROGRAMMATION))
540  {
541  if (verifierProgrammation(trame))
543  }
544  else if (trame.startsWith(Protocole.CREER_PROGRAMMATION))
545  creerUneProgrammation(trame);
546  else if (trame.startsWith(Protocole.SUPPRIMER_PROGRAMMATION))
548  else if (trame.startsWith(Protocole.MODIFIER_PROGRAMMATION))
550  else if (trame.startsWith(Protocole.ERREUR_TRAME))
551  informerErreur(trame);
552  else if (trame.startsWith(Protocole.CONFIGURATION))
554  }
555  }
556 
561  public void actualiserDonnees()
562  {
563  if(communication.estConnectee())
564  {
569  }
570  }
571 
577  {
578  if(capsuleActuelle != AUCUNE_CAPSULE)
579  {
580  String trame = Protocole.fabriquerTramePreparationCafe(boissonActuelle, capsuleActuelle);
581  communication.envoyerTrame(trame);
582  Log.d(TAG, "demanderPreparationCafe() : trame " + trame);
583  }
584  else
585  {
586  ihm.afficherMessage("Veuillez sélectionner une capsule");
587  }
588  if(!capsules.get(capsuleActuelle).obtenirPresence())
589  {
590  ihm.afficherMessage("Il n'y a plus cette capsule dans le magasin");
591  }
592  }
593 
599  private void verifierPreparationCafe(String trame)
600  {
601  trame = trame.replace(Protocole.INDICATEUR_PREPARATION_CAFE + ';', "");
602 
604  {
605  Log.d(TAG, "Erreur préparataion café");
606  ihm.afficherMessage("Impossible de préparer le café");
607  }
608  else
609  {
611  }
612  }
613 
618  private void lancerPreparationCafe()
619  {
620  Log.d(TAG, "lancerPreparationCafe()");
621  ihm.afficherMessage("Votre café est en cours de préparation");
623  ++nombreCafeTotal;
624  etatCafetiere = false;
625  if(boissonActuelle == BOISSON_COURT)
626  ihm.afficherMessageAvecRetard("Votre café est prêt", TEMPS_BOISSON_COURT);
627  if(boissonActuelle == BOISSON_LONG)
628  ihm.afficherMessageAvecRetard("Votre café est prêt", TEMPS_BOISSON_LONG);
629  preference.editer(Preference.NB_CAFE_DU_JOUR, nombreCafeDuJour);
630  ihm.actualiserIndicateurs();
632  }
633 
639  private void actualiserCafetiere(String trame)
640  {
641  Log.d(TAG, "actualiserCafetiere()");
642 
643  boolean etatCafetiere = Protocole.extraireValeurCafetiere(trame);
644  boolean etatTasse = Protocole.extraireValeurTasse(trame);
645  boolean etatBac = Protocole.extraireValeurBac(trame);
646  int niveauEau = Protocole.extraireValeurEau(trame);
647 
648  changerEtatsCafetiere(etatCafetiere, etatTasse, etatBac, niveauEau);
649 
650  ihm.actualiserIndicateurs();
651  }
652 
658  private void actualiserMagasin(String trame)
659  {
660  Log.d(TAG, "actualiserMagasin()");
661  presencesCapsules = Protocole.extraireValeursCapsules(trame);
662  for(int i = 0; i < NOMBRE_CAPSULE_MAX; ++i)
663  capsules.get(i).changerPresence(presencesCapsules[i]);
664  ihm.actualiserSelection();
665  }
666 
672  private void actualiserInformationsComplementaires(String trame)
673  {
674  Log.d(TAG, "actualiserInformationsComplementaires()");
675 
676  if(trame.startsWith(Protocole.ACTUALISATION_COMPLEMENTAIRE))
677  {
678  nombreCafeTotal = Protocole.extraireNombreCafeTotal(trame);
679  nombreBacVide = Protocole.extraireNombreBacVide(trame);
680  nombreEauRemplie = Protocole.extraireNombreEauRemplie(trame);
681  dureteeEau = Protocole.extraireDureteeEau(trame);
682  qualiteEau = Protocole.extraireQualiteEau(trame);
683  }
684  else if(trame.startsWith(Protocole.REINITIALISER))
685  {
687  {
688  nombreCafeTotal = 0;
689  nombreBacVide = 0;
690  nombreEauRemplie = 0;
691  dureteeEau = 0;
692  qualiteEau = 0;
694  ihm.afficherMessage("Données réinitialisées");
695  }
696  }
698  }
699 
706  private boolean verifierProgrammation(String trame)
707  {
708  Log.d(TAG, "verifierProgrammation()");
709  int identifiant = Protocole.extraireIdentifiant(trame);
710  boolean valide = false;
711  for(Programmation programmation:programmations)
712  {
713  if(programmation.obtenirIdentifiant() == identifiant)
714  {
715  valide = true;
716  dernierePositionProgrammation = programmations.indexOf(programmation);
717  break;
718  }
719  }
720  if(valide && Protocole.extraireVerification(trame))
721  {
722  ihm.envoyerNotification(programmations.get(dernierePositionProgrammation));
723  if(programmations.get(dernierePositionProgrammation).obtenirFrequence() == Programmation.Frequences.UNE_SEULE_FOIS)
725  return true;
726  }
727  ihm.afficherMessage("Erreur lors du lancement de votre programmation");
728  return false;
729  }
730 
739  private void changerEtatsCafetiere(boolean etatCafetiere, boolean etatTasse, boolean etatBac, int niveauEau)
740  {
741  Log.d(TAG, "changerEtatsCafetiere()");
742  if(communication.estActivee() && communication.estConnectee())
743  {
744  this.etatCafetiere = etatCafetiere;
745  this.etatTasse = etatTasse;
746  this.etatBac = etatBac;
747  this.niveauEau = niveauEau;
748  }
749  else
750  {
751  this.etatCafetiere = false;
752  this.etatTasse = false;
753  this.etatBac = false;
754  this.niveauEau = 0;
755  }
756  }
757 
762  public void remettreAZero()
763  {
764  Log.d(TAG, "remettreAZero()");
765  capsuleActuelle = AUCUNE_CAPSULE;
766  boissonActuelle = 0;
767  etatCafetiere = false;
768  etatTasse = false;
769  etatBac = false;
770  niveauEau = 0;
771  ihm.actualiserIndicateurs();
772  ihm.actualiserSelection();
773  }
774 
779  public void actualiserIHM()
780  {
781  Log.d(TAG, "actualiserIHM()");
782  ihm.actualiserIndicateurs();
783  }
784 
796  public void modifierInformationsComplementaires(boolean nbCafe, boolean nbBacVide, boolean nbEauRemplie, int dureteeEau, int qualiteEau, boolean programmations, boolean simulateur)
797  {
798  Log.d(TAG, "modifierInformationsComplementaires()");
799 
804  dureteeEau,
805  qualiteEau,
808  ));
809  }
810 
816  {
817  Log.d(TAG, "initialiserProgrammations()");
818  for (int i = 0; i < Programmation.MAX_PROGRAMMATION; ++i)
819  {
820  String idNouvelleProgrammation = Programmation.PROGRAMMATION + i;
821  if(preference.contient(idNouvelleProgrammation))
822  {
823  programmations.add(new Programmation(
824  (int) preference.obtenir(idNouvelleProgrammation + "_" + Programmation.CAPSULE),
825  (int) preference.obtenir(idNouvelleProgrammation + "_" + Programmation.BOISSON),
826  (int) preference.obtenir(idNouvelleProgrammation + "_" + Programmation.JOUR),
827  (String) preference.obtenir(idNouvelleProgrammation + "_" + Programmation.HEURE),
828  (int) preference.obtenir(idNouvelleProgrammation + "_" + Programmation.FREQUENCE),
829  (int) preference.obtenir(idNouvelleProgrammation + "_" + Programmation.IDENTIFIANT)
830  ));
831  }
832  }
833  }
834 
844  public void demanderCreationUneProgrammation(int capsule, int boisson, int jour, String heure, int frequence)
845  {
846  Log.d(TAG, "demanderCreationUneProgrammation()");
847  communication.envoyerTrame(Protocole.fabriquerTrameCreerProgrammation(capsule, boisson, jour, heure, frequence));
848  derniereProgrammation = new Programmation(capsule, boisson, jour, heure, frequence);
849  }
850 
858  private boolean verifierCreationUneProgrammation(String trame, int position)
859  {
860  if(position >= Programmation.MAX_PROGRAMMATION)
861  {
862  ihm.afficherMessage("Désolé, vous ne pouvez faire que 4 programmations");
863  return false;
864  }
865 
867  {
868  ihm.afficherMessage("Erreur lors de la création de la programmation");
869  return false;
870  }
871  return true;
872  }
873 
879  private void creerUneProgrammation(String trame)
880  {
881  Log.d(TAG, "creerUneProgrammation()");
882  int position = preference.obtenirNbProgrammations();
883 
884  if (!verifierCreationUneProgrammation(trame, position)) return;
885 
886  derniereProgrammation.changerIdentifiant(Protocole.extraireIdentifiant(trame));
887  programmations.add(derniereProgrammation);
888 
889  String idNouvelleProgrammation = Programmation.PROGRAMMATION + position;
890  preference.editer(idNouvelleProgrammation, position);
891  preference.editer(idNouvelleProgrammation + "_" + Programmation.CAPSULE, derniereProgrammation.obtenirCapsule());
892  preference.editer(idNouvelleProgrammation + "_" + Programmation.BOISSON, derniereProgrammation.obtenirBoisson());
893  preference.editer(idNouvelleProgrammation + "_" + Programmation.JOUR, derniereProgrammation.obtenirJour());
894  preference.editer(idNouvelleProgrammation + "_" + Programmation.HEURE, derniereProgrammation.obtenirHeure());
895  preference.editer(idNouvelleProgrammation + "_" + Programmation.FREQUENCE, derniereProgrammation.obtenirFrequence());
896  preference.editer(idNouvelleProgrammation + "_" + Programmation.IDENTIFIANT, derniereProgrammation.obtenirIdentifiant());
897 
899  }
900 
911  public void demanderModificationUneProgrammation(int position, int capsule, int boisson, int jour, String heure, int frequence)
912  {
913  Log.d(TAG, "demanderModificationUneProgrammation()");
914  int identifiant = programmations.get(position).obtenirIdentifiant();
915  communication.envoyerTrame(Protocole.fabriquerTrameModifierProgrammation(identifiant, capsule, boisson, jour, heure, frequence));
916  dernierePositionProgrammation = position;
917  derniereProgrammation = new Programmation(capsule, boisson, jour, heure, frequence, identifiant);
918  }
919 
925  public void verifierModifierUneProgrammation(String trame)
926  {
927  Log.d(TAG, "verifierModifierUneProgrammation()");
929  {
931  }
932  else
933  {
934  ihm.afficherMessage("Erreur lors de la modification de votre programmation");
935  }
936  }
937 
943  {
944  Log.d(TAG, "modifierUneProgrammation()");
945  programmations.set(dernierePositionProgrammation, derniereProgrammation);
946  String idNouvelleProgrammation = Programmation.PROGRAMMATION + dernierePositionProgrammation;
947  preference.editer(idNouvelleProgrammation, dernierePositionProgrammation);
948  preference.editer(idNouvelleProgrammation + "_" + Programmation.CAPSULE, derniereProgrammation.obtenirCapsule());
949  preference.editer(idNouvelleProgrammation + "_" + Programmation.BOISSON, derniereProgrammation.obtenirBoisson());
950  preference.editer(idNouvelleProgrammation + "_" + Programmation.JOUR, derniereProgrammation.obtenirJour());
951  preference.editer(idNouvelleProgrammation + "_" + Programmation.HEURE, derniereProgrammation.obtenirHeure());
952  preference.editer(idNouvelleProgrammation + "_" + Programmation.FREQUENCE, derniereProgrammation.obtenirFrequence());
953  preference.editer(idNouvelleProgrammation + "_" + Programmation.IDENTIFIANT, derniereProgrammation.obtenirIdentifiant());
954  ihm.afficherMessage("Votre programmation a bien été mise à jour");
956  }
957 
963  public void demanderSuppressionUneProgrammation(int position)
964  {
965  Log.d(TAG, "demanderSuppressionUneProgrammation()");
966  communication.envoyerTrame(Protocole.fabriquerTrameSupprimerProgrammation(programmations.get(position).obtenirIdentifiant()));
967  dernierePositionProgrammation = position;
968  }
969 
975  private void verifierSuppressionDuneProgrammation(String trame)
976  {
977  Log.d(TAG, "verifierSuppressionDuneProgrammation()");
979  {
981  }
982  else
983  {
984  ihm.afficherMessage("Erreur lors de la suppression de votre programmation");
985  }
986  }
987 
993  {
994  Log.d(TAG, "supprimerUneProgrammation()");
995  String idProgrammation = Programmation.PROGRAMMATION + dernierePositionProgrammation;
996  programmations.remove(dernierePositionProgrammation);
997  preference.supprimer(idProgrammation);
998  preference.reorganiserLesProgrammations(dernierePositionProgrammation);
999  ihm.afficherMessage("Vous avez supprimé une programmation");
1001  }
1002 
1008  {
1009  Log.d(TAG, "supprimerLesProgrammations()");
1010  programmations = new ArrayList<>();
1011  preference.supprimerLesProgrammations();
1013  }
1014 
1020  public ArrayList<Programmation> listerProgrammations()
1021  {
1022  return programmations;
1023  }
1024 
1032  {
1033  return programmations.get(position);
1034  }
1035 
1041  private void informerErreur(String trame)
1042  {
1043  switch(Protocole.extraireErreur(trame))
1044  {
1045  case Protocole.AUCUNE_ERREUR :
1046  Log.d(TAG, "informerErreur() : Aucune erreur");
1047  break;
1048  case Protocole.ERREUR_ENTETE :
1049  Log.d(TAG, "informerErreur() : Erreur entete");
1050  break;
1052  Log.d(TAG, "informerErreur() : Erreur nombre parametres");
1053  break;
1055  Log.d(TAG, "informerErreur() : Erreur trame inconnue");
1056  break;
1058  Log.d(TAG, "informerErreur() : Erreur type café");
1059  break;
1061  Log.d(TAG, "informerErreur() : Erreur longueur café");
1062  break;
1063  }
1064  }
1065 
1071  private void actualiserConfiguration(String trame)
1072  {
1073  ntp = Protocole.extraireNTP(trame);
1074  versionCafetiere = Protocole.extraireVersionCafetire(trame);
1075  }
1076 }
String versionCafetiere
La version de la cafetière.
Definition: Cafetiere.java:106
boolean informerEtatBac()
Méthode qui renvoie si le bac est plein ou non.
Definition: Cafetiere.java:322
void initaliserProgrammation()
Méthode qui permet d&#39;initialiser les programmations de l&#39;utilisateur.
Definition: Cafetiere.java:151
int obtenirNombreCafeDuJour(int nombreCafeDuJour)
Méthode qui retourne le nombre de café du jour.
Definition: Preference.java:71
boolean estPrete()
Méthode qui renvoie si la cafetière est prête à l&#39;emploie.
Definition: Cafetiere.java:457
int nombreBacVide
Le nombre de bac vidé au total.
Definition: Cafetiere.java:96
static boolean extraireVerification(String trame)
Méthode qui permet d&#39;extraire la vérification.
Definition: Protocole.java:545
void remettreAZero()
Méthode qui permet de remettre les arguments à zéro.
Definition: Cafetiere.java:762
static final int BOISSON_COURT
L&#39;emplacement de la boisson courte.
Definition: Cafetiere.java:29
Integer [] descriptionCapsules
Les descriptions de base des boissons.
Definition: Cafetiere.java:67
void eteindre()
Méthode qui permet d&#39;éteindre le bluetooth.
Definition: Cafetiere.java:480
int nombreEauRemplie
Le nombre de eau remplie au total.
Definition: Cafetiere.java:97
static final String NOM_CAFETIERE_NON_CONNECTEE
Le nom de la cafetière si non-connectée.
static final int ERREUR_LONGUEUR_CAFE
La valeur de l&#39;erreur de la longueur du café
Definition: Protocole.java:104
void supprimerUneProgrammation()
Méthode qui permet de supprimer une programmation.
Definition: Cafetiere.java:992
Preference preference
Les préférences utilisateur.
Definition: Cafetiere.java:80
static final String FREQUENCE
L&#39;identifiant qui permet l&#39;enregistrement de la fréquence de la programmation.
static final String CAPSULE
La capsule dans les préférences.
Definition: Preference.java:31
static final String INDICATEUR_PREPARATION_CAFE
La trame de préparation d&#39;un café
Definition: Protocole.java:30
int obtenirIdentifiant()
Méthode qui renvoie l&#39;identifiant de la programmation.
static final int ERREUR_ENTETE
La valeur de l&#39;erreur de l&#39;entête.
Definition: Protocole.java:100
void creerUneProgrammation(String trame)
Méthode qui permet de créer une programmation.
Definition: Cafetiere.java:879
static String fabriquerTrameActualiserConfiguration()
Méthode qui permet de créer une trame pour actualiser la configuration de la cafetière.
Definition: Protocole.java:275
static final String CAPSULE
L&#39;identifiant qui permet l&#39;enregistrement du nom de la capsule de la programmation.
String [] nomsBoissons
Les noms de base des boissons.
Definition: Cafetiere.java:63
static final int ERREUR_TYPE_CAFE
La valeur de l&#39;erreur du type de café
Definition: Protocole.java:103
boolean estConnectee()
Méthode qui retourne l&#39;état de la connection avec la cafetière.
static final String HEURE
L&#39;identifiant qui permet l&#39;enregistrement de l&#39;heure de la programmation.
Permet la communication Bluetooth avec la cafetière.
String obtenirHeure()
Méthode qui renvoie l&#39;heure de la programmation.
String obtenirNomPeripherique()
Méthode qui retourne le nom du périphérique.
Définit les caractéristiques du protocole EKAWA.
Definition: Protocole.java:17
static final int BOISSON_LONG
L&#39;emplacement de la boisson longue.
Definition: Cafetiere.java:30
void verifierSuppressionDuneProgrammation(String trame)
Méthode qui permet de vérifier la suppression d&#39;une programmation.
Definition: Cafetiere.java:975
Integer [] idImagesCapsules
Images des exemples de capsule.
Definition: Cafetiere.java:49
void modifierUneProgrammation()
Méthode qui permet de modifier une programmation.
Definition: Cafetiere.java:942
Object obtenir(String nomPreference)
Méthode qui permet d&#39;obtenir une préférence.
Definition: Preference.java:54
void verifierPreparationCafe(String trame)
Méthode qui permet de vérifier la trame de réponse d&#39;une demande de préparation d&#39;un café ...
Definition: Cafetiere.java:599
int nombreCafeTotal
Le nombre de café effectué au total par la machine.
Definition: Cafetiere.java:95
static String fabriquerTrameActualisationComplementaires()
Méthode qui permet de créer une trame pour actualiser les données complémentaires.
Definition: Protocole.java:198
static String fabriquerTrameActualisationCafetiere()
Méthode qui permet de créer une trame pour actualiser les données de la cafetière.
Definition: Protocole.java:176
static final String ACTUALISATION_MAGASIN
La trame d&#39;actualisation du magasin.
Definition: Protocole.java:37
static final String DEBUT_TRAME
Le début de la trame.
Definition: Protocole.java:25
static final char RETOUR_INVALIDE
La valeur du retour invalide de la préparation d&#39;un café
Definition: Protocole.java:90
boolean etatBac
L&#39;état du bac.
Definition: Cafetiere.java:90
ArrayList< Capsule > listerCapsules()
Méthode qui renvoie la liste des capsules.
Definition: Cafetiere.java:197
static final Integer NOMBRE_CAPSULE_MAX
Le nombre maximal de capsules.
Definition: Cafetiere.java:26
Cafetiere(Ihm ihm)
Constructeur de la classe Cafetière.
Definition: Cafetiere.java:113
void initialiserBoissons()
Méthode qui permet d&#39;initialiser la liste des boissons.
Definition: Cafetiere.java:184
int obtenirJour()
Méthode qui renvoie le jour de la programmation.
static final String NB_CAFE_DU_JOUR
Le nombre de café du jour dans les préférences.
Definition: Preference.java:34
static String fabriquerTramePreparationCafe(int boissonActuelle, int capsuleActuelle)
Méthode qui permet de créer une trame pour lancer la préparation d&#39;un café
Definition: Protocole.java:119
boolean etatCafetiere
L&#39;état de la cafetière.
Definition: Cafetiere.java:88
Définit les caractéristiques des capsules d&#39;EKAWA.
Definition: Capsule.java:16
boolean informerEtatBluetooth()
Méthode qui renvoie si le bluetooth est activé ou non.
Definition: Cafetiere.java:289
Programmation obtenirProgrammation(int position)
Méthode qui renvoie une programmation.
ArrayList< Capsule > capsules
La liste des capsules.
Definition: Cafetiere.java:83
static final int NB_MAX_CAFE_CONSEILLEE
Le nombre de café conseillé par jour.
Definition: Cafetiere.java:28
static final String BOISSON
La boisson dans les préférences.
Definition: Preference.java:32
boolean informerEtatCafetiere()
Méthode qui renvoie si la cafetière est utilisable ou non.
Definition: Cafetiere.java:278
boolean contient(String nomPreference)
Méthode qui permet de vérifier la présence d&#39;une préférence.
Definition: Preference.java:96
void connecter()
Méthode qui permet de connecter le bluetooth à la cafetière.
Definition: Cafetiere.java:495
int dureteeEau
La duretée de l&#39;eau.
Definition: Cafetiere.java:98
boolean verifierCreationUneProgrammation(String trame, int position)
Méthode qui permet de vérifier la création d&#39;une programmation.
Definition: Cafetiere.java:858
void demanderCreationUneProgrammation(int capsule, int boisson, int jour, String heure, int frequence)
Méthode qui permet de demander la création d&#39;une programmation.
Definition: Cafetiere.java:844
Ihm ihm
La partie UI.
Definition: Cafetiere.java:78
static String fabriquerTrameCreerProgrammation(int capsule, int boisson, int jour, String heure, int frequence)
Méthode qui permet de créer une trame pour créer une programmation.
Definition: Protocole.java:214
void initialiserPreference()
Méthode qui permet d&#39;initialiser les préférences de l&#39;utilisateur.
Definition: Cafetiere.java:128
static int extraireDureteeEau(String trame)
Méthode qui permet d&#39;extraire la dureté de l&#39;eau.
Definition: Protocole.java:491
int obtenirFrequence()
Méthode qui renvoie la fréquence de la programmation.
void informerErreur(String trame)
Méthode qui permet d&#39;afficher les erreurs.
boolean [] presencesCapsules
Les présences de base des capsules.
Definition: Cafetiere.java:61
static boolean [] extraireValeursCapsules(String trame)
Méthode qui permet les états des capsules.
Definition: Protocole.java:412
int informerNombreBacVide()
Méthode qui renvoie le nombre de bac vidée.
Definition: Cafetiere.java:391
void supprimerLesProgrammations()
Méthode qui permet de supprimer toutes les programmations.
static String fabriquerTrameSupprimerProgrammation(int identifiant)
Méthode qui permet de créer une trame pour supprimer une programmation.
Definition: Protocole.java:260
void demanderModificationUneProgrammation(int position, int capsule, int boisson, int jour, String heure, int frequence)
Méthode qui permet de demander la modification une programmation.
Definition: Cafetiere.java:911
static final int TEMPS_BOISSON_LONG
Le temps de la préparation de la boisson longue.
Definition: Cafetiere.java:32
ArrayList< Boisson > listerBoissons()
Méthode qui renvoie la liste des boissons.
Definition: Cafetiere.java:208
void activer()
Méthode qui permet d&#39;allumer le bluetooth.
static final int ERREUR_IDENTIFIANT
La valeur de l&#39;identifiant d&#39;une programmation.
Definition: Protocole.java:95
void reorganiserLesProgrammations(int position)
Méthode qui permet de réorganiser les programmations.
int informerDureteeEau()
Méthode qui renvoie la duretee de l&#39;eau.
Definition: Cafetiere.java:413
static final boolean REINITIALISER_NB_CAFE
La valeur de la réinitialisation du nombre de café éffectuée au total.
Definition: Protocole.java:74
Déclaration de l&#39;activité principale de l&#39;application Ekawa.
Definition: Ihm.java:61
static int extraireIdentifiant(String trame)
Méthode qui permet d&#39;extraire l&#39;identifiant.
Definition: Protocole.java:527
static final boolean REINITIALISER_SIMULATEUR
La valeur de la réinitialisation du simulateur.
Definition: Protocole.java:80
void allumer()
Méthode qui permet d&#39;allumer le bluetooth.
Definition: Cafetiere.java:469
void changerIdentifiant(int identifiant)
Méthode qui permet de changer l&#39;identifiant de la programmation.
boolean informerPresenceCapsule(int position)
Méthode qui renvoie le niveau d&#39;eau.
Definition: Cafetiere.java:345
Integer [] idImagesBoissons
Les images de base des boissons.
Definition: Cafetiere.java:65
static final String BOISSON
L&#39;identifiant qui permet l&#39;enregistrement du nom de la boisson de la programmation.
ArrayList< Boisson > boissons
La liste des boissons.
Definition: Cafetiere.java:84
void initialiserCommunication()
Méthode qui permet d&#39;initialiser la communication.
Definition: Cafetiere.java:162
void connecter()
Méthode qui permet de connecter le bluetooth à la cafetière.
int dernierePositionProgrammation
La position de la dernière programmation (tampon)
Definition: Cafetiere.java:103
boolean informerConnexionBluetooth()
Méthode qui renvoie si le bluetooth est connecté ou non.
Definition: Cafetiere.java:300
static final String CREER_PROGRAMMATION
La trame de création d&#39;un programmation.
Definition: Protocole.java:33
static final String ERREUR_TRAME
La trame d&#39;erreur.
Definition: Protocole.java:31
static final String ACTUALISATION_CAFETIERE
La trame d&#39;actualisation de la cafetière.
Definition: Protocole.java:36
void afficherMessage(String texte)
Méthode qui permet d&#39;afficher des messages.
Definition: Ihm.java:1161
boolean etatTasse
L&#39;état de la tasse.
Definition: Cafetiere.java:89
void actualiserCafetiere(String trame)
Méthode qui permet d&#39;actualiser les états de la cafetière, la tasse, le bac et le niveau d&#39;eau...
Definition: Cafetiere.java:639
int obtenirCapsule()
Méthode qui renvoie la capsule de la programmation.
int informerCapsuleActuelle()
Méthode qui renvoie la capsule actuelle.
Definition: Cafetiere.java:256
int niveauEau
L&#39;état du niveau d&#39;eau.
Definition: Cafetiere.java:91
Déclaration de la classe principale de l&#39;application.
Definition: Cafetiere.java:19
static int extraireNombreBacVide(String trame)
Méthode qui permet d&#39;extraire le nombre de bac vidé
Definition: Protocole.java:455
void desactiver()
Méthode qui permet d&#39;éteindre le bluetooth.
void modifierInformationsComplementaires(boolean nbCafe, boolean nbBacVide, boolean nbEauRemplie, int dureteeEau, int qualiteEau, boolean programmations, boolean simulateur)
Méthode qui permet de réinitialiser les informations complémentaires.
Definition: Cafetiere.java:796
void actualiserPageInformations()
Méthode qui permet d&#39;actualiser la page "Informations".
Definition: Ihm.java:1110
void actualiserMagasin(String trame)
Méthode qui permet d&#39;actualiser les présences des capsules.
Definition: Cafetiere.java:658
static final boolean REINITIALISER_NB_EAU_REMPLIE
La valeur de la réinitialisation du nombre de reservoir d&#39;eau remplie au total.
Definition: Protocole.java:76
static final boolean REINITIALISER_NB_BAC_VIDE
La valeur de la réinitialisation du nombre de bac vidé au total.
Definition: Protocole.java:75
void actualiserIndicateurs()
Méthode qui permet de mettre à jour les indicateurs (bluetooth, tasse, bac, eau)
Definition: Ihm.java:1044
void actualiserPageProgrammer()
Méthode qui permet d&#39;actualiser la page "Programmer".
Definition: Ihm.java:1130
Communication communication
La partie communication.
Definition: Cafetiere.java:79
void actualiserDonnees()
Méthode qui permet d&#39;envoyer les trames d&#39;actualisations à la cafetière.
Definition: Cafetiere.java:561
Définit les caractéristiques des préfences de l&#39;utilisateur d&#39;EKAWA.
Definition: Preference.java:23
Définit les caractéristiques des fréquences.
int informerNombreEauRemplie()
Méthode qui renvoie le nombre d&#39;eau remplie.
Definition: Cafetiere.java:402
static final String ACTUALISATION_COMPLEMENTAIRE
La trame d&#39;actualisation des données complémentaires.
Definition: Protocole.java:38
Integer obtenirDescriptionCapsule(int position)
Méthode qui renvoie la description d&#39;une capsule.
Definition: Cafetiere.java:220
static String fabriquerTrameReinitialiser(boolean nbCafe, boolean nbBacVide, boolean nbEauRemplie, int dureteeEau, int qualiteEau, boolean programmations, boolean simulateur)
Méthode qui permet de créer une trame pour réinitialiser les données complémentaires.
Definition: Protocole.java:155
void deconnecter()
Méthode qui permet de déconnecter le bluetooth de la cafetière.
Définit les caractéristiques des boissons d&#39;EKAWA.
Definition: Boisson.java:15
int obtenirNbProgrammations()
Méthode qui permet d’obtenir le nombre de programmation.
int informerNombreCafeTotal()
Méthode qui renvoie le nombre de café total.
Definition: Cafetiere.java:380
void actualiserSelection()
Méthode qui permet de mettre à jour la liste des sélections des capsules.
Definition: Ihm.java:1082
static final String REINITIALISER
La trame de réinitialisation.
Definition: Protocole.java:32
void changerEtats(String trame)
Méthode qui permet d&#39;actualiser les états de la cafetière, la tasse, le bac et le niveau d&#39;eau + les ...
Definition: Cafetiere.java:522
static int extraireNombreEauRemplie(String trame)
Méthode qui permet d&#39;extraire le nombre d&#39;eau remplie.
Definition: Protocole.java:473
static String extraireVersionCafetire(String trame)
Méthode qui permet d&#39;extraire la version de la cafetière.
Definition: Protocole.java:600
void changerEtatsCafetiere(boolean etatCafetiere, boolean etatTasse, boolean etatBac, int niveauEau)
Méthode qui permet d&#39;actualiser les états de la cafetière, la tasse, le bac et le niveau d&#39;eau...
Definition: Cafetiere.java:739
void actualiserIHM()
Méthode qui permet d&#39;actualiser l&#39;IHM.
Definition: Cafetiere.java:779
static final int ERREUR_NB_PARAMETRES
La valeur de l&#39;erreur du nombre de paramètres.
Definition: Protocole.java:101
String informerVersionCafetiere()
Méthode qui renvoie la version de la cafetière.
Definition: Cafetiere.java:446
void editer(String nomPreference, String valeur)
Méthode qui permet de créer ou modifier une préférence.
static final boolean REINITIALISER_PROGRAMMATIONS
La valeur de la réinitialisation des programmations.
Definition: Protocole.java:79
void initialiserCapsules()
Méthode qui permet d&#39;initialiser la liste des capsules.
Definition: Cafetiere.java:172
void supprimerLesProgrammations()
Méthode qui permet de supprimer toutes les programmations.
int nombreCafeDuJour
Le nombre de café effectué par l&#39;utilisateur sur le même jour.
Definition: Cafetiere.java:94
void supprimer(String nomPreference)
Méthode qui permet de supprimer une préférence.
static final String PROGRAMMATION
L&#39;identifiant qui permet l&#39;enregistrement du nom de la programmation.
Définit les caractéristiques des programmations EKAWA.
void demanderSuppressionUneProgrammation(int position)
Méthode qui permet de demander la suppression d&#39;une programmation.
Definition: Cafetiere.java:963
static String fabriquerTrameActualisationMagasin()
Méthode qui permet de créer une trame pour actualiser les données du magasin.
Definition: Protocole.java:187
static final int EMPLACEMENT_RETOUR_PREPARATION_CAFE
L&#39;emplacement du retour de la préparation d&#39;un café dans la trame.
Definition: Protocole.java:89
boolean estActivee()
Méthode qui retourne si le bluetooth est activé ou non.
static final String MODIFIER_PROGRAMMATION
La trame de modification d&#39;un programmation.
Definition: Protocole.java:34
int boissonActuelle
La boisson sélectionnée.
Definition: Cafetiere.java:86
static int extraireQualiteEau(String trame)
Méthode qui permet d&#39;extraire la qualité de l&#39;eau.
Definition: Protocole.java:509
void envoyerNotification(Programmation programmation)
Méthode qui permet d&#39;envoyer une notification.
Definition: Ihm.java:1219
void changerCapsuleActuelle(int capsule)
Méthode qui modifie la capsule actuelle.
Definition: Cafetiere.java:231
static final int TEMPS_BOISSON_COURT
Le temps de la préparation de la boisson courte.
Definition: Cafetiere.java:31
ArrayList< Programmation > listerProgrammations()
Méthode qui renvoie tous les programmations.
static final String JOUR
L&#39;identifiant qui permet l&#39;enregistrement du jour de la programmation.
static final String IDENTIFIANT
L&#39;identifiant qui permet l&#39;enregistrement de l&#39;identifiant de la programmation.
void changerBoissonActuelle(int boisson)
Méthode qui modifie la boisson actuelle.
Definition: Cafetiere.java:244
boolean informerNTP()
Méthode qui renvoie l&#39;état du NTP.
Definition: Cafetiere.java:435
int informerNiveauEau()
Méthode qui renvoie le niveau d&#39;eau.
Definition: Cafetiere.java:333
void demanderPreparationCafe()
Méthode qui permet de lancer la préparation d&#39;un café
Definition: Cafetiere.java:576
static String fabriquerTrameModifierProgrammation(int identifiant, int capsule, int boisson, int jour, String heure, int frequence)
Méthode qui permet de créer une trame pour modifier une programmation.
Definition: Protocole.java:239
ArrayList< Programmation > programmations
La liste des programmations.
Definition: Cafetiere.java:101
int informerNombreCafeDuJour()
Méthode qui renvoie le nombre de cafe du jour.
Definition: Cafetiere.java:356
int qualiteEau
La qualitée de l&#39;eau.
Definition: Cafetiere.java:99
String [] nomsCapusles
Exemples de noms de capsule.
Definition: Cafetiere.java:38
static final String CONFIGURATION
La trame des informations sur la configuration.
Definition: Protocole.java:40
int capsuleActuelle
La capsule sélectionnée.
Definition: Cafetiere.java:85
static final String TAG
TAG pour les logs.
Definition: Cafetiere.java:24
boolean ntp
L&#39;état du NTP.
Definition: Cafetiere.java:105
static int extraireErreur(String trame)
Méthode qui permet d&#39;extraire l&#39;erreur.
Definition: Protocole.java:568
void verifierModifierUneProgrammation(String trame)
Méthode qui permet de modifier une programmation.
Definition: Cafetiere.java:925
boolean informerEtatTasse()
Méthode qui renvoie si la tasse est bien placée ou non.
Definition: Cafetiere.java:311
static boolean extraireNTP(String trame)
Méthode qui permet d&#39;extraire le NTP.
Definition: Protocole.java:585
static final int AUCUNE_CAPSULE
L&#39;indicateur qu&#39;il n&#39;y a aucune capsule sélectionnée.
Definition: Cafetiere.java:25
void lancerPreparationCafe()
Méthode qui permet de lancer la préparation d&#39;un café
Definition: Cafetiere.java:618
static final String SUPPRIMER_PROGRAMMATION
La trame de suppression d&#39;un programmation.
Definition: Protocole.java:35
static int extraireValeurEau(String trame)
Méthode qui permet d&#39;extraire le niveau d&#39;eau.
Definition: Protocole.java:391
boolean verifierProgrammation(String trame)
Méthode qui permet de vérifier si la programmation s&#39;est bien lancer.
Definition: Cafetiere.java:706
static final String TEST_ALIVE
La trame de test de communication.
Definition: Protocole.java:29
void deconnecter()
Méthode qui permet de déconnecter le bluetooth de la cafetière.
Definition: Cafetiere.java:506
static final int AUCUNE_ERREUR
La valeur d&#39;aucune erreur.
Definition: Protocole.java:99
void envoyerTrame(String trame)
Méthode qui permet d&#39;envoyer des trames à la cafetière.
static final int MAX_PROGRAMMATION
Le nombre maximum de programmation.
int obtenirBoisson()
Méthode qui renvoie la boisson de la programmation.
static final Integer NOMBRE_BOISSON_MAX
Le nombre maximal de types de boisson (court/long)
Definition: Cafetiere.java:27
static int extraireNombreCafeTotal(String trame)
Méthode qui permet d&#39;extraire le nombre de cafe effectué au total.
Definition: Protocole.java:437
static final int ERREUR_TRAME_INCONNUE
La valeur de l&#39;erreur d&#39;une trame d&#39;inconnue.
Definition: Protocole.java:102
int informerQualiteEau()
Méthode qui renvoie la qualité de l&#39;eau.
Definition: Cafetiere.java:424
static boolean extraireValeurTasse(String trame)
Méthode qui permet d&#39;extraire la valeur de la tasse.
Definition: Protocole.java:345
void actualiserConfiguration(String trame)
Méthode qui permet d&#39;actualiser la configuration de la cafetière.
static final String ACTUALISATION_PROGRAMMATION
La trame d&#39;actualisation des programmations.
Definition: Protocole.java:39
static boolean extraireValeurBac(String trame)
Méthode qui permet d&#39;extraire la valeur du bac.
Definition: Protocole.java:368
void initialiserProgrammations()
Méthode qui initialiser les programmations au lancement de l&#39;application.
Definition: Cafetiere.java:815
Programmation derniereProgrammation
La dernière programmation (tampon)
Definition: Cafetiere.java:102
static boolean extraireValeurCafetiere(String trame)
Méthode qui permet d&#39;extraire la valeur de la cafetière.
Definition: Protocole.java:322
String informerNomCafetiere()
Méthode qui renvoie le nom de la cafetière connectée.
Definition: Cafetiere.java:367
static final int UNE_SEULE_FOIS
La valeur associée à la fréquence : Une seule fois.
void afficherMessageAvecRetard(String texte, int temps)
Méthode qui permet d&#39;afficher des messages apres un retard.
Definition: Ihm.java:1173
int informerBoissonActuelle()
Méthode qui renvoie la boisson actuelle.
Definition: Cafetiere.java:267
void actualiserInformationsComplementaires(String trame)
Méthode qui permet d&#39;actualiser et d&#39;initialiser les informations complémentaires.
Definition: Cafetiere.java:672