import java.rmi.RemoteException; import java.rmi.Naming; import java.io.IOException; import jline.ConsoleReader; import jline.SimpleCompletor; import jline.ArgumentCompletor; /** * Classe cliente RMI & Local */ public class Client { private static Agenda a=null; private static String mode = "remote"; public static void main(String args[]) { if ( args.length < 1 ) { System.out.println("Utilisation : -l (Local), -r CHEMIN (Distant)"); System.exit(1); } /* Mode local */ if ( args[0].equals("-l") ) { mode = "local"; a = AgendaImpl.chargeEtat("replique.agd"); if ( a == null ) { System.out.println("Erreur de chargement du fichier, abandon."); System.exit(1); } /* Créer le thread de sauvegarde */ (new SaveThread((AgendaImpl)a)).start(); } /* Mode distant */ else if ( args[0].equals("-r") ) { if ( args.length < 2 ) { System.out.println("Veuillez spécifiez un chemin"); System.exit(1); } try { a = (Agenda)Naming.lookup(args[1]); } catch(Exception e) { System.out.println("Impossible de récupérer l'objet Agenda : " + e.getMessage()); System.exit(1); } } /* Lancer la console */ ConsoleReader cr = null; try { cr = new jline.ConsoleReader(); SimpleCompletor comp = new SimpleCompletor(new String[] { "ajouter", "afficher", "afficher_jour", "afficher_semaine", "annuler", "login", "logout", "modifier", "rechercher", "rechercher_jour", "aide", "repliquer", "quitter" }); cr.addCompletor( new ArgumentCompletor(comp) ); } catch(IOException e) { System.out.println("Erreur de création du menu"); System.exit(1); } System.out.println("================= AGENDA ======================"); System.out.println("== Utilisez pour obtenir les commandes =="); System.out.println("== Tapez 'aide' pour obtenir de l'aide =="); if ( mode.equals("local") ) System.out.println("**** VOUS ETES EN MODE LOCAL, UTILISEZ LOCAL/LOCAL POUR VOUS CONNECTER ****"); /* l'interpréteur de commandes */ Commands cmds = new Commands(); String ans=""; do { try { ans = cr.readLine("> "); ans = ans.trim(); } catch(Exception e) { System.out.println("Erreur de frappe, abandon."); System.exit(1); } } while ( cmds.traiteCommande(a, ans) ); /* sauvegarder les modifications si on est en local */ if ( mode.equals("local") ) ((AgendaImpl)a).sauverEtat("replique.agd"); System.exit(0); } }