Package com.escuelademanejo.negocio

Source Code of com.escuelademanejo.negocio.Instructor

package com.escuelademanejo.negocio;

import java.util.ArrayList;

import com.escuelademanejo.persistencia.FactoryPersistencia;
import com.escuelademanejo.persistencia.IPersistenciaController;

public class Instructor extends Usuario {
  private int id_instructor;
  private String modelo_auto;
  private String patente;
  private ArrayList<Integer> horarios;
  private IPersistenciaController iPersistController = null;

  public Instructor(String nombre, String clave, String nombre_completo,
      String telefono, String mail, String modelo_auto, String patente) throws Exception {
    super(nombre, clave, "", nombre_completo, telefono, mail);

    FactoryPersistencia factPersistencia = FactoryPersistencia
        .getInstance();
    iPersistController = factPersistencia.getIPersistenciaController();

    this.setTipo(iPersistController.get_TIPO_INSTRUCTOR());
    this.id_instructor = -1; // se setea al persistirlo
    this.modelo_auto = modelo_auto;
    this.patente = patente;
    this.horarios= new ArrayList<Integer>();
    //cargamos los id horario en que trabaja este instructor
    ArrayList<ArrayList<String>> horas = iPersistController.selectHorariosTrabajaInstructor(this.id_instructor);
    for (ArrayList<String> hs : horas) {
      this.horarios.add(Integer.parseInt(hs.get(1)));
    }
  }

  /**
   * @param datos_cli
   *            = lista de string que contiene: id , username, clave,
   *            nombre_completo, telefono, mail, modelo_auto, patente
   * @throws Exception
   *
   */
  public Instructor(ArrayList<String> datos_inst) throws Exception {
    // TODO Auto-generated constructor stub
    super(datos_inst.get(1), datos_inst.get(2), "", datos_inst.get(3),
        datos_inst.get(4), datos_inst.get(5));

    FactoryPersistencia factPersistencia = FactoryPersistencia
        .getInstance();
    iPersistController = factPersistencia.getIPersistenciaController();

    this.setTipo(iPersistController.get_TIPO_INSTRUCTOR());
    if (!datos_inst.get(0).isEmpty())
      this.id_instructor = Integer.valueOf(datos_inst.get(0));
    this.modelo_auto = datos_inst.get(6);
    this.patente = datos_inst.get(7);
   
    this.horarios= new ArrayList<Integer>();
    //cargamos los id horario en que trabaja este instructor
    ArrayList<ArrayList<String>> horas = iPersistController.selectHorariosTrabajaInstructor(this.id_instructor);
    for (ArrayList<String> hs : horas) {
      this.horarios.add(Integer.parseInt(hs.get(1)));
    }
  }

  public int getId_instructor() {
    return id_instructor;
  }

  public void setId_instructor(int id_instructor) {
    this.id_instructor = id_instructor;
  }

  public String getModelo_auto() {
    return modelo_auto;
  }

  public void setModelo_auto(String modelo_auto) {
    this.modelo_auto = modelo_auto;
  }

  public String getPatente() {
    return patente;
  }

  public void setPatente(String patente) {
    this.patente = patente;
  }

  public void delete() {
    // TODO Auto-generated method stub

    /**
     * FUERA DEL ALCANCE
     */
  }

  public int save() {
    // TODO Auto-generated method stub

    /**
     * FUERA DEL ALCANCE
     */

    return 0;
  }

  /**
   *
   * @return una lista con los id de los horarios en los que trabaja
   */
  public ArrayList<Integer> getHorarios() {
    return horarios;
  }

 
  /**
   *
   * @param nuevos_horarios
   *            ids de horarios en los que trabaja el instructor.
   *           
   *        PRECOND: No deben existir ninguno de estos horarios para el instructor.
   *
   *          POSCOND: se agregan estos horarios de trabajo al instructor
   * @throws Exception Eror al agregar horarios de trabajo nuevos al instructor
   */ 
  public void addHorariosDeTrabajo(ArrayList<Integer> nuevos_horarios) throws Exception{
    if(nuevos_horarios!= null && ! nuevos_horarios.isEmpty())
    {
      // confirmamos el alta de los nuevos horarios para el instructor en la persistencia
      try{
        iPersistController.addHorariosInstructor(this.getId_instructor(), nuevos_horarios);
        this.horarios.addAll(nuevos_horarios);
      }catch (Exception e) {
        // TODO: handle exception
        throw new Exception("Eror al agregar horarios de trabajo nuevos al instructor " + this.getNombre_completo() + "... " + e.getMessage());
      }     
    }
  }
 
  /**
   *  
   * @param hs_a_borrar lista de ids de horarios a borrar
   *
   * POSCOND: los horarios son borrables (no tienen turno asignado) se quitan de los
   * horarios de trabajo del instructor los otros no
   *
   * @return los turnos que est�n asignados y por tanto sus horarios no se pueden borrar. La siguiente informaci�n es devuelta:
   * para cada fila: turno.fecha, cliente.id, cliente.nombre_completo, instructor.id, instructor.nombre_completo,
   *  id_hora, hora.hora_desde, hora.hora_hasta, id_hora_instructor
   *
   * @throws Exception Error borrando horarios del instructor
   */
  public ArrayList<ArrayList<String>> borrarHorariosDeTrabajo(ArrayList<Integer> hs_a_borrar) throws Exception
  {
    /* Averiguamos Cuales de los horarios a borrar tinen turno ya asignado para ese horario. La consulta devuelve:
     * turno.fecha, cliente.id, cliente.nombre_completo, instructor.id, instructor.nombre_completo, id_hora, hora.hora_desde, hora.hora_hasta, id_hora_instructor
     * */
    ArrayList<ArrayList<String>> turnos_asignados= iPersistController.selectTurnos(this.id_instructor, hs_a_borrar);
   
    //ALBERTOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
    System.out.println("TURNOS ASIGNADOS= " + turnos_asignados.toString());
   
   
    /* Ahora vemos cuales de los horarios a borrar son borrables, es decir, no tienen turno asignado */
    ArrayList<Integer> horarios_borrables = new ArrayList<Integer>();
   
    for (Integer id_hora : hs_a_borrar) {
      boolean es_borrable= true;
      for (ArrayList<String> tur : turnos_asignados) {
        if(tur.get(5).equals(String.valueOf(id_hora))){
          es_borrable= false;
          break;
        }
      }
      if(es_borrable)
        horarios_borrables.add(id_hora);
    }
       
    //ALBERTOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
    System.out.println("HORARIOS BORRABLES: " + horarios_borrables.toString());
   
    if ((horarios_borrables!=null) && !horarios_borrables.isEmpty())
    {   
      /* confirmamos el borrado de los horarios en la persistencia */
      try{
        iPersistController.deleteHorariosInstructor(this.id_instructor, horarios_borrables);
        this.horarios.removeAll(horarios_borrables);
      }catch (Exception e){
        // TODO: handle exception
        throw new Exception("Error borrando horarios del instructor " + this.getNombre_completo() +"... "+ e.getMessage());
      }
    }
   
    return turnos_asignados;
  }
 
 
  /**
   *
   * @param nuevos_horarios
   *            ids de horarios en los que trabaja el instructor
   *
   *            POSCOND: Para cada id_horario de ids_horario si: - el
   *            instructor ya tiene ese horario no se hace nada. - el
   *            instructor no tiene ese horario asignado se le asigna. Si un
   *            horario asociado actualmente al instructor no est� en la lista
   *            ids_horarios se da de baja (si no tiene un turno asociado).
   *           
   *   @return los turnos que est�n asignados y por tanto sus horarios no se pueden borrar. La siguiente informaci�n es devuelta:
   *   para cada fila: turno.fecha, cliente.id, cliente.nombre_completo, instructor.id, instructor.nombre_completo,
   *  id_hora, hora.hora_desde, hora.hora_hasta, id_hora_instructor
   * @throws Exception
   */
 
  public ArrayList<ArrayList<String>> changeHorarios(ArrayList<Integer> nuevos_horarios)
      throws Exception {
    // TODO Auto-generated method stub
   
    //ALBERTOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
        System.out.println("HORARIOS INICIALES= " + nuevos_horarios.toString());
   
    /* guardamos los horarios a borrar en un nuevo arreglo */
    ArrayList<Integer> hs_a_borrar = new ArrayList<Integer>();
   
    for (Integer id_h : this.horarios) {
      if( ! nuevos_horarios.contains(id_h) ){
        hs_a_borrar.add(id_h);
      }else{
        nuevos_horarios.remove(id_h); // no es nuevo as� que lo quitamos
      }
    }
   
    //ALBERTOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
    System.out.println("HORARIOS A BORRAR= " + hs_a_borrar.toString());
    ArrayList<ArrayList<String>> turnos = new ArrayList<ArrayList<String>>();
   
    // borramos los horarios en la persistencia
    if ( hs_a_borrar != null && !hs_a_borrar.isEmpty() ){
      turnos = borrarHorariosDeTrabajo(hs_a_borrar);
    }
   
    //ALBERTOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
    System.out.println("NUEVOS HORARIOS= " + nuevos_horarios.toString());
    // persistimos los nuevos horarios
    if(nuevos_horarios!=null && !nuevos_horarios.isEmpty()){
      addHorariosDeTrabajo(nuevos_horarios);
    }
   
    return turnos;
  }

  /**
   * @return una lista de strings que contiene: id , username, clave,
   *         nombre_completo, telefono, mail, modelo_auto, patente
   */
  public ArrayList<String> getDatos() {
    // TODO Auto-generated method stub
    ArrayList<String> datos = new ArrayList<String>();   
   
    datos.add(Integer.toString(getId_instructor()));
    datos.add(getUserName());
    datos.add(getClave());
    datos.add(getNombre_completo());
    datos.add(getTelefono());
    datos.add(getMail());
    datos.add(getModelo_auto());
    datos.add(getPatente());
    return datos;
  }

}
TOP

Related Classes of com.escuelademanejo.negocio.Instructor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.