//Generador_Masivo.java
/**
 * Clase para generar varios tipo de alumnos aleatoriamente.
 * @author Cristobal Garrido
 * @author Matias Hernandez
 * @author Ulises Leiva
 */

import java.awt.*;
import java.awt.geom.*;
import java.util.ArrayList;
import java.awt.event.*;
import javax.swing.*;

/**
Clase para generar varios tipos de alumnos aleatoriamente.
*/

public class Generador_Masivo
{
  /**
   * Variable para crear un arreglo de enteros que representan el tipo de
   * comida de cada alumno que fue generado de forma aleatoria.
   */
  private ArrayList<Integer> alumnos_generados;
  /**
   * Variable publica que representa la cantidad de alumnos que se generaran.
   */
  public static int cantidad;
  /**
   * Variable contadora de los alumnos que se han generados.
   */
  private int i;
  /**
   * Variable entera que toma valores aleatorios de 0 hasta 1.0.
   */
  private int random;
  /**
   * Variable entera que toma la probabilidad de que el valor
   * obtenido aleatoriamente sea de  normal.
   */
  private int normal;
  /**
   * Variable entera que toma la probabilidad de que el valor
   * obtenido aleatoriamente sea de vegetariano.
   */
  private int vegetariano;
  /**
   * Variable entera que toma la probabilidad de que el valor
   * obtenido aleatoriamente sea de dieta.
   */
  private int dieta;
  /**
   * Variable para indicar el estado de solicitud del boton de generacion.
   */
  private boolean solicitud;
  /**
   * Variable para referenciar a la fila de espera.
   */
  private Fila_Espera fila_espera;

  /**
	 * Constructor Generador_Masivo. Inicializa el generador masivo.
	 * @param n 	probabilidad de que se obtenga el valor representado
   * como normal
	 * @param v 	probabilidad de que se obtenga el valor representado
   * como vegetariano
	 * @param d 	probabilidad de que se obtenga el valor representado
   * como dieta
	 * @param fila Variable referencial a la fila de espera
	 */

  public Generador_Masivo(Fila_Espera fila, int n, int v, int d)
  {
    i = 0;
    cantidad = 100;
    normal = n;
    vegetariano = v;
    dieta = d;
    fila_espera = fila;
    solicitud = false;
    alumnos_generados = new ArrayList<Integer>();

  }

  /**
   * Indica el estado del boton,
   * el cual puede ser false si el boton no se ha presionado o true
   * si el boton se ha presionado y aun no se apaga.
   * @return  <var>solicitud</var>
   */

  public boolean isOn()
  {
    return solicitud;
  }

  /**
   * Genera una cantidad de alumnos aleatorios que representaran los
   * 3 tipos.
   */

  public void genera()
  {
	i = 0;
	alumnos_generados = new ArrayList<Integer>();
    while(i<cantidad)
    {

      random = (int)Math.floor(Math.random()*100);
      if ( random<= normal)
      {
        alumnos_generados.add(0);
        i++;
      }
      else if((normal<random)&& (random<=(100-vegetariano)))
      {
        alumnos_generados.add(1);
        i++;
      }
      else if((100-dieta)<random)
      {
        alumnos_generados.add(2);
        i++;
      }

    }

    fila_espera.addvalue(alumnos_generados);
  }

  /**
   * Indica el encendido del boton.
   */

  public void setOn()
  {
    solicitud = true;
  }

  /**
   * Apaga el boton.
   */

  public void setOff()
  {
    solicitud = false;
  }
}
