TP-intergiciel/TP2/CarnetImpl.java

62 lines
2.3 KiB
Java
Raw Normal View History

2023-04-22 15:36:05 +00:00
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;
}
}