package tpcorba.exo4; import org.omg.CORBA.*; import java.io.*; import java.lang.*; import java.util.*; public class Client { public static void main(String[] args) throws IOException { //////////////////////////////////////////////////// // On initialise l'ORB //////////////////////////////////////////////////// // initialize the ORB. ORB orb = ORB.init(args, null); if(args.length!=0) { System.err.println("utilisation : pas de parametre "); System.exit(1); } //////////////////////////////////////////////////// // Recuperation de la reference d'objet du serveur // Dans cet exemple, la reference est stockee sous // la forme d'une chaine de caracteres (IOR) dans un // fichier. A ce stade, il est bien sur possible // d'invoquer un service de nommage. //////////////////////////////////////////////////// String ior = null; try { String ref = "gestion.ref"; FileInputStream file = new FileInputStream(ref); BufferedReader in = new BufferedReader(new InputStreamReader(file)); ior = in.readLine(); file.close(); } catch (IOException ex) { System.err.println("Impossible de lire fichier : `" + ex.getMessage() + "'"); System.exit(1); } //////////////////////////////////////////////////// // Construction d'une reference d'objet, non typee d'abord, // puis "cast" en une reference sur l'interface // "calcul" avec narrow ("cast" dynamique) //////////////////////////////////////////////////// org.omg.CORBA.Object obj = orb.string_to_object(ior); if (obj == null) { System.err.println("Erreur sur string_to_object() "); throw new RuntimeException(); } gestionabonnes gestion = gestionabonnesHelper.narrow(obj); if (gestion== null) { System.err.println("Erreur sur narrow() "); throw new RuntimeException(); } //////////////////////////////////////////////////// // Invocation du serveur //////////////////////////////////////////////////// BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); abonneHolder ref= new abonneHolder(); String nom, prenom, numero, operation; while(true) { try { System.out.println(" Que faire : 1- creation"); System.out.println(" 2- rechercher"); System.out.println(" 3- resilier"); operation = br.readLine(); // Creation d'un abonne // if (operation.equals("1")) { System.out.print("Numero = " ); numero = br.readLine(); System.out.print("Nom = " ); nom = br.readLine(); System.out.print("Prenom = " ); prenom = br.readLine(); Integer num = new Integer(numero); gestion.creation_abonne(num.intValue() ,nom, prenom, ref); System.out.println("Creation abonne numero " + numero + ": abonne " + ref.value.nom_prenom()); } // Recherche d'un abonne // else if (operation.equals("2")) { System.out.print("Numero = " ); numero = br.readLine(); Integer num = new Integer(numero); gestion.rechercher_abonne(num.intValue() ,ref); System.out.println("Numero " + numero + ": abonne " + ref.value.nom_prenom()); } // Resiliation d'un abonne // else if (operation.equals("3")) { System.out.print("Numero = " ); numero = br.readLine(); Integer num = new Integer(numero); gestion.resilier_abonne(num.intValue()); System.out.println("Numero " + numero + " resilie"); } else System.out.println(" Saisir '1', '2' ou '3'"); } catch(IOException ex) { System.out.println("Erreur lecture "); System.exit(1); } catch(numeroInconnu ex) { System.out.println("Exception numeroInconnu"); } catch(dejaExistant ex) { System.out.println("Exception dejaExistant"); } } } }