62 lines
2.3 KiB
Java
62 lines
2.3 KiB
Java
import java.rmi.*;
|
|
import java.rmi.server.UnicastRemoteObject;
|
|
import java.util.HashSet;
|
|
import java.util.Set;
|
|
|
|
public class CarnetImpl extends UnicastRemoteObject implements Carnet {
|
|
|
|
private Set<SFiche> fiches;
|
|
private int id;
|
|
|
|
public static void main(String[] args) {
|
|
try {
|
|
CarnetImpl carnet = new CarnetImpl(Integer.parseInt(args[0]));
|
|
Naming.bind("rmi://localhost:4000/Carnet" + args[0], carnet);
|
|
System.out.println("Le Carnet" + args[0] + " a été publié sur le registre !");
|
|
System.out.println();
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
public CarnetImpl(int id) throws RemoteException {
|
|
this.fiches = new HashSet<SFiche>();
|
|
this.id = id;
|
|
}
|
|
|
|
public void Ajouter(SFiche sf) throws RemoteException {
|
|
fiches.add(sf);
|
|
System.out.println("La fiche [" + sf + "] a été ajoutée.");
|
|
System.out.println();
|
|
}
|
|
|
|
public RFiche Consulter(String nom, boolean forward) throws RemoteException {
|
|
for (SFiche sf : fiches) {
|
|
if (nom.equals(sf.getNom())) {
|
|
System.out.println("La fiche [" + sf + "] a été consultée." + (!forward ? " (forward)" : ""));
|
|
System.out.println();
|
|
return new RFicheImpl(sf.getNom(), sf.getEmail());
|
|
}
|
|
}
|
|
if (forward) {
|
|
try {
|
|
System.out.println("Demande transmise au Carnet" + (id % 2 + 1));
|
|
Carnet carnet = (Carnet) Naming.lookup("//localhost:4000/Carnet" + (id % 2 + 1));
|
|
RFiche fiche = carnet.Consulter(nom, false);
|
|
System.out.println("Fiche [" + fiche.getNom() + " <" + fiche.getEmail() + ">] trouvée sur le Carnet"
|
|
+ (id % 2 + 1));
|
|
System.out.println();
|
|
return fiche;
|
|
} catch (NullPointerException e) {
|
|
System.out.println("Fiche non trouvée sur le Carnet" + (id % 2 + 1));
|
|
System.out.println();
|
|
return null;
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
System.out.println("Fiche non trouvée (Carnet" + id + ")");
|
|
System.out.println();
|
|
return null;
|
|
}
|
|
} |