//Elizabeth Avila Solis
//Tarea clase EdificioComputo
//Cibernetica 312
//18 septiembre 2001		

public class EdificioComputo	
{
 public int numeroSalas;/** Es el total de salas que tendrá el edificio */	
 public String nombreEdificio; /** Nombre del edificio */
 public SalaComputo [] salasComputo;/** Arreglo de referencias de tipo SalaComputo */
 public EdificioComputo ( int numero , String nombre )/**Recibe como parámetros el total de salas que contendra el edificio y su nombre*/
      {
	numeroSalas = numero;	
	nombreEdificio = nombre;
	salasComputo = new SalaComputo[ numeroSalas ];
	for ( int i = 0; i < numeroSalas; i++ )
	{				
	System.out.print(" \n Porfavor escriba el nombre de la sala " + i + " : ");
	String nombreSalaa = Consola.readLine();
	System.out.print(" \n Cual es la maxima capacidad en la sala " + nombreSalaa + " : ");
	int capacidada = Consola.readInt();
	salasComputo[i] = new SalaComputo(nombreSalaa, capacidada);
	}//for
     }//Construcor
	
    public SalaComputo sala(int numSala)/**funcion que devuelve un objeto de tipo SalaComputo*/
    {
    SalaComputo salax = null;
    if ( numSala >=0 && numSala < numeroSalas ) {
       salax = salasComputo[numSala];
    }//if
    return salax; // Devuelve un objeto de tipo SalaComputo como se pedia
    } //sala


 public void operar (int numeroSala)
 {
 int opcion = 0;
 boolean salir = false;
  while (!salir)	
  {
  System.out.print("\nElige una Opcion: ");
	System.out.print("\n******************************************************************************");
	System.out.println("*                                                                              *");
	System.out.println("*(0) Asignaciones de computadoras\t\t(1)computadoras disponibles  *");
	System.out.println("*(2) Liberar Lugar \t (3) Reporte de uso \t (4) Baja \t (5) Salir   *");
	System.out.println("*                                                                            *");
	System.out.print("\n******************************************************************************");

		opcion = Consola.readInt();		
		switch ( opcion ) 
		{
		case 0:
		{
		System.out.print(" \n Asignacion de computadora: ");
		int ncomp = Consola.readInt();
		System.out.print(" \nUsuario: ");
		String usuario = Consola.readLine();
		boolean asignada = salasComputo[numeroSala].asignar(ncomp, usuario);
		if ( asignada )		
		{
		System.out.println("no disponible");
		}
			 else
			{
			System.out.println("Esta maquina no se puede asignar");
			}
		} break; //fin del case 0

		case 1:
		{	
		System.out.print(" Computadora a desocupar: ");
		int ncomp = Consola.readInt();
		boolean desocupada = salasComputo[numeroSala].desasignar(ncomp);
		if (desocupada)
		{
		System.out.println("\nno esta ocupada");
		}
		else
		{
		System.out.println("\nYa esta desocupada");
		}
						
		} break;  //fin del case 1
		case 2:
		{
		salasComputo[numeroSala].imprimir();
		} break;  //fin del case 2
		case 3:
		{
		if ( ! salasComputo[numeroSala].llena() )
		{
		System.out.println(" Vacía ");
		}
		else 	
		{
		System.out.println(" No está vacía ");
		}
		} break;  //fin del case 3
		case 4:
		{
		int disponible = salasComputo[numeroSala].buscarLugar();
		if ( disponible == -1 )
		{
		System.out.println("No hay maquinas disponibles");
		}
		else	
		{
		System.out.println(" La computadora " + disponible + " está disponible. ");
		} // if-else disponible -1
		} break; //fin del case 4
		case 5:
		{
		salir = true;
		} break; //fin del case 5 
		default :
		{
		System.out.println(" Opción no válida ");
		} break; 
	      }
	   }//ciclo while
	 } //operar

		
    	public void Imprimir()/**funcio para imprimir*/
	{
  	 for (int a = 0; a < numeroSalas; a++ )
	 {
	 System.out.println("\nSala " + salasComputo[a].nombre); 
	 salasComputo[a].imprimir();
	 }
       }
} // clase EdificioComputo


