Control remoto de ascensores con RMI y calculadora con CORBA en Java

Informática7,78 KB

ControlRemoto (RMI)

package cliente;

import java.rmi.*;
import java.util.Scanner;
import interfaz.GestorAscensores;
import java.lang.Math;

public class ControlRemoto {
GestorAscensores gestor;
Scanner teclado = new Scanner(System.in);

public ControlRemoto() throws Exception {
gestor = ((GestorAscensores) Naming.lookup("rmi://localhost/Gestor"));
}

public void controlar() throws Exception {
Scanner teclado = new Scanner(System.in);
int opcion, pisodest, id;

do {
opcion = menu();
switch (opcion) {
case 1:
case 2:
System.out.print("Piso: ");
pisodest = teclado.nextInt();
id = encontrarCercano(pisodest);
System.out.println("antes");
gestor.ir(pisodest, id);
break;
case 3:
break;
default:
System.out.println("opcion no valida");
}
} while (opcion != 3);
}

private int encontrarCercano(int pisoDest) {
int i = 0, id = -1;
boolean encontrado = false;
int dist = 100, dist1;

try {
do {
for (i = 0; i < 5; i++) {
dist1 = pisoDest - (gestor.getpiso(i));
if (dist1 < 0) dist1 *= -1;
if ((dist > dist1) && (gestor.getEstado(i) == 0)) {
dist = dist1;
id = gestor.getId(i);
System.out.println("id copiado " + id);
encontrado = true;
}
}
} while (encontrado == false);
} catch (Exception e) {
System.out.println();
}

System.out.println("El más cercano a la planta " + pisoDest + " es el ascensor " + id);
return id;
}

public int menu() {
int opcion;
System.out.println("1.-Llamar ascensor");
System.out.println("2.-Indicar piso");
System.out.println("3.-Salir");
System.out.println();
System.out.print("Elija opcion: ");
opcion = teclado.nextInt();
return opcion;
}

public static void main(String[] args) {
try {
ControlRemoto gestor = new ControlRemoto();
gestor.controlar();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}

Gestor Ascensores (interfaz)

package interfaz;

import java.rmi.Remote;
import java.rmi.RemoteException;
import servidor.AscensorRMI;

public interface GestorAscensores extends Remote {
public int getpiso(int id) throws RemoteException;
public int getEstado(int id) throws RemoteException;
public int getId(int id) throws RemoteException;
public AscensorRMI[] getAscensores() throws RemoteException;
void ir(int pisodest, int id) throws RemoteException;
}

(FIN gestor ascensores RMI)

CORBA: ControlRemoto (calculadora)

CORBA EMPIEZA EN LA PARTE TRASERA?

package cliente;

import interfaz.*;
import java.util.Scanner;
import org.omg.CORBA.ORB;
import org.omg.CosNaming.BindingIteratorHolder;
import org.omg.CosNaming.BindingListHolder;
import org.omg.CosNaming.NamingContextExt;
import org.omg.CosNaming.NamingContextExtHelper;

public class ControlRemoto {
Calculadora calc;
Dispensador disp;
Scanner teclado = new Scanner(System.in);
NamingContextExt ncRef;

public ControlRemoto(String[] args) throws Exception {
ORB orb = ORB.init(args, null);
try {
org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");
ncRef = NamingContextExtHelper.narrow(objRef);
} catch (Exception e) {
System.out.println("no encuentra la referencia");
}
}

private Calculadora elegirCalculadora() {
int idCalcu = 0;
System.out.println("\nElige una calculadora(0-4):");
idCalcu = teclado.nextInt();
teclado.nextLine();
return disp.getCalculadora(idCalcu);
}

public void controlar() throws Exception {
Scanner teclado = new Scanner(System.in);
int opcion, numero1, numero2;

try {
disp = DispensadorHelper.narrow(ncRef.resolve_str("dispensador"));
} catch (Exception e) {
System.out.println("error en obtener dispensador");
}

do {
calc = elegirCalculadora();
opcion = menu();
switch (opcion) {
case 1:
System.out.print("Número: ");
numero1 = teclado.nextInt();
System.out.printf("El factorial del numero=%d es: %d\n", numero1, calc.getFactorial(numero1));
break;
case 2:
System.out.print("Numero: ");
numero1 = teclado.nextInt();
System.out.print("Número para elevar: ");
numero2 = teclado.nextInt();
System.out.printf("El exponencial de %d^%d es: %d\n", numero1, numero2, calc.getExponencial(numero1, numero2));
break;
case 3:
break;
default:
System.out.println("opcion no valida");
}
} while (opcion != 3);
}

public int menu() {
Scanner teclado = new Scanner(System.in);
int opcion;
System.out.println("1.-Calcular el factorial de un número");
System.out.println("2.-Calcular el exponencial de un número");
System.out.println("3.-Salir");
System.out.println();
System.out.print("Elija opcion: ");
opcion = teclado.nextInt();
return opcion;
}

public static void main(String[] args) {
try {
ControlRemoto gestor = new ControlRemoto(args);
gestor.controlar();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}

Descargar

PDF Word HTML