import java.rmi.RemoteException; import java.io.File; import java.io.ObjectOutputStream; import java.io.FileOutputStream; import java.io.IOException; class Commands { private Session ses=null; /** Tableau des commandes */ private final String [][]cmds = { {"afficher", "Affiche l'agenda selon une plage donnée", "Utilisation : afficher SEMAINE_DEBUT JOUR_DEBUT HEURE_DEBUT SEMAINE_FIN JOUR_FIN HEURE_FIN"}, {"afficher_jour", "Affiche l'agenda pour une journée donnée", "Utilisation : afficher_jour SEMAINE JOUR"}, {"afficher_semaine", "Affiche l'agenda de la semaine donnée", "Utilisation : afficher_semaine SEMAINE"}, {"aide", "Affiche l'aide générale ou l'aide d'une commande", "Utilisation : aide | aide COMMANDE"}, {"ajouter", "Ajoute un Rendez-vous pour une plage donnée", "Utilisation : ajouter SEMAINE JOUR HEURE_DEBUT DUREE REPETQUOT(Y/N) REPETHEBDO(Y/N) MOTIF"}, {"annuler", "Annuler un Rendez-vous", "Utilisation : annuler SEMAINE JOUR HEURE"}, {"login", "S'identifier auprès du serveur", "Utilisation : login USER PASS"}, {"logout", "Se délogge du serveur", "Utilisation : logout"}, {"modifier", "Modifie un Rendez-vous", "Utilisation : modifier SEMAINE JOUR HEURE [motif NV_MOTIF] [hebdo Y/N] [quot Y/N]"}, {"rechercher", "Recherche une plage libre", "Utilisation : rechercher SEMAINE_DEBUT JOUR_DEBUT HEURE_DEBUT SEMAINE_FIN JOUR_FIN HEURE_FIN DUREE"}, {"rechercher_jour", "Recherche une plage libre", "Utilisation : rechercher_jour SEMAINE JOUR DUREE"}, {"repliquer", "Repliquer l'agenda distant en local", "Utilisation : repliquer"}, {"quitter", "Quitter le programme", "Utilisation : quitter"} }; public Commands() { ses = null; } /** * Afficher l'aide d'une commande * @param args les arguments */ private void aide(String []args) { if ( args.length == 1 ) { for(int i=0;i>> " + cmds[i][0] + " <<<"); System.out.println(cmds[i][2]); System.out.println(""); return; } } System.out.println("Commande inconnue."); } } /** * Traiter une commande du côté client * @param a L'agenda * @param line La ligne à traiter * @return S'il faut continuer à traiter les commandes ou non */ public boolean traiteCommande(Agenda a, String line) { String []args = line.split(" "); boolean argc_error = false; boolean rem_error = false; if ( args[0].equals("quitter") ) { System.out.println("bye bye..."); return false; } else if ( args[0].equals("aide") ) { if ( args.length > 2 ) argc_error = true; else aide(args); } /* Modifier un RDV */ else if ( args[0].equals("modifier") ) { if ( args.length < 5 ) argc_error = true; else { int sem = new Integer(args[1]).intValue(); int jour = new Integer(args[2]).intValue(); int heure = new Integer(args[3]).intValue(); /* Vérifier si la plage est valide */ RendezVous oldrdv=null, newrdv=null; try { oldrdv = a.periodeVersRDV(ses, sem, jour, heure); newrdv = a.periodeVersRDV(ses, sem, jour, heure); } catch(RemoteException e) { rem_error = true; } catch(AgendaException e) { System.out.println(e.getMessage()); } for(int i=4;i