Author Topic: Problema con mostrar datos en JTable con Iterator clase Padre y 2 clase hijos  (Read 60 times)

mariaelhacker

  • Newbie
  • *
  • Posts: 1
  • Karma: 0
    • View Profile

Hola, buen día.

Tengo una clase padre Aparato y 2 clases hijos: ventilador y Aire, el problema surge cuando agrego algún aparato a la habitación y no refresca el JTablet, no se que debo estar haciendo mal???

Mostrar de esta forma los datos por cada habitacion:
idAparato aparato
1                Luz
2                Ventilador
3                Aire

Adjunto el código de ambas clases.

INICIO CLASE APARATO
@Entity
@Inheritance
@DiscriminatorColumn(name = "descripcion", discriminatorType = STRING)
@DiscriminatorValue("Luz")
@Table(name = "aparato")

public class Aparato  implements Serializable{
  @Id
  @SequenceGenerator(name="sec_idAparato", initialValue=1, allocationSize=1)
  @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="sec_idAparato")
  @Column(name = "idAparato") 
  private Integer idAparato;

  private char tipoSalida='A';
 
  //@Column(name = "descripcion", nullable = true, unique = false)
  private String descripcion;

  @ManyToOne
  @JoinColumn(name = "nroHabitacion")
  private Habitacion unaHabitacion;

    public Aparato(Habitacion unaHabitacion) {
        this.idAparato = idAparato;
        this.unaHabitacion = unaHabitacion;
    }
  public Aparato () { };
 
    public Integer getIdAparato() {
        return idAparato;
    }
    public void setIdAparato(Integer idAparato) {
        this.idAparato = idAparato;
    }
    public char getTipoSalida() {
        return tipoSalida;
    }

    public void setTipoSalida(char tipoSalida) {
        this.tipoSalida = tipoSalida;
    }
    public Habitacion getUnaHabitacion() {
        return unaHabitacion;
    }
    public void setUnaHabitacion(Habitacion unaHabitacion) {
        this.unaHabitacion = unaHabitacion;
    }

    public String getDescripcion() {
        return descripcion;
    }
    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }
    @Override
    public String toString() {
        return idAparato + "-" + descripcion;
    }
   
    public boolean isIdAparato(int nro){
         boolean retorno = false;
         if( this.getIdAparato() == nro){
             retorno = true;   
        }
        return retorno;
    }
}
----FIN CLASE APARATO

---INICIO CLASE VENTILADOR
@Entity
@DiscriminatorValue("Ventilador")
public class Ventilador extends Aparato implements Serializable{

  @Column(name = "velocidad", nullable = true, unique = false)
  private Integer velocidad=0;

   public Ventilador (Habitacion unaHabitacion) {
      super(unaHabitacion);
    };
   
  public Ventilador (Integer velocidad, Habitacion unaHabitacion) {
      super(unaHabitacion);
      this.velocidad = velocidad;
 };

  public Ventilador () { };
 
      public Integer getVelocidad() {
        return velocidad;
    }
    public void setVelocidad(Integer velocidad) {
        this.velocidad = velocidad;
    }
    @Override
    public boolean isIdAparato(int nro) {
        return super.isIdAparato(nro);
    }
    @Override
    public void setUnaHabitacion(Habitacion unaHabitacion) {
        super.setUnaHabitacion(unaHabitacion);
    }
    @Override
    public Habitacion getUnaHabitacion() {
        return super.getUnaHabitacion();
    }
    @Override
    public void setTipoSalida(char tipoSalida) {
        super.setTipoSalida(tipoSalida);
    }
    @Override
    public char getTipoSalida() {
        return super.getTipoSalida();
    }
    @Override
    public void setIdAparato(Integer idAparato) {
        super.setIdAparato(idAparato);
    }
    @Override
    public Integer getIdAparato() {
        return super.getIdAparato();
    }
    @Override
    public void setDescripcion(String descripcion) {
        super.setDescripcion(descripcion);
    }
    @Override
    public String getDescripcion() {
        return super.getDescripcion();
    }
    @Override
    public String toString() {
        return super.toString() + velocidad;
    }
 
}
---------FIN CLASE VENTILADOR

----------INICIO CLASE Aire
@Entity
@DiscriminatorValue("Aire")
public class Aire extends Aparato implements Serializable{

  @Column(name = "temperatura", nullable = true, unique = false)
  private Integer temperatura=0;
   
  @Column(name = "ciclo", nullable = true, unique = false)
  private char ciclo='F';
   public Aire () { };

   public Aire(Habitacion unaHabitacion) {
      super(unaHabitacion);
   }
    @Override
    public boolean isIdAparato(int nro) {
        return super.isIdAparato(nro);
    }
    @Override
    public void setUnaHabitacion(Habitacion unaHabitacion) {
        super.setUnaHabitacion(unaHabitacion);
    }
    @Override
    public Habitacion getUnaHabitacion() {
        return super.getUnaHabitacion();
    }
    @Override
    public void setTipoSalida(char tipoSalida) {
        super.setTipoSalida(tipoSalida);
    }
    @Override
    public char getTipoSalida() {
        return super.getTipoSalida();
    }
    @Override
    public void setIdAparato(Integer idAparato) {
        super.setIdAparato(idAparato);
    }
    @Override
    public Integer getIdAparato() {
        return super.getIdAparato();
    }
    @Override
    public void setDescripcion(String descripcion) {
        super.setDescripcion(descripcion);
    }
    @Override
    public String getDescripcion() {
        return super.getDescripcion();
    }
    public Integer getTemperatura () {
        return temperatura;
    }
   public void setTemperatura(Integer temperatura) {
        this.temperatura = temperatura;
    }
    public char getCiclo() {
        return ciclo;
    }
    public void setCiclo(char ciclo) {
        this.ciclo = ciclo;
    }
    @Override
    public String toString() {
        return super.toString()+ciclo+temperatura;
    }
}

-------FIN AIRE ACONDICIOANDO

-----------CLASE HABITACION
@Entity
@Table(name = "habitacion")
public class Habitacion  implements Serializable{

  @Id
  @SequenceGenerator(name="sec_nroHabitacion", initialValue=1, allocationSize=1)
  @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="sec_nroHabitacion")
  @Column(name = "nroHabitacion")
  private Integer nroHabitacion;
 
  @Column(name = "nombreHabitacion", nullable = false, unique = false)
  private String nombreHabitacion;
 
 
  @ManyToOne
  @JoinColumn(name = "nroPiso")
  private Piso unPiso;
 
  @OneToMany(mappedBy = "unaHabitacion")
  private List<Aparato> aparatos;
   
  @OneToMany(mappedBy = "unaHabitacion")
  private List<Ventilador> ventiladores;
 
  @OneToMany(mappedBy = "unaHabitacion")
  private List<Aire> aires;

 
  public Habitacion (String nombreHabitacion, Piso unPiso)
  {
      this.nombreHabitacion = nombreHabitacion;
      this.unPiso = unPiso;
     
      this.aparatos = new ArrayList<Aparato>();
      this.ventiladores = new ArrayList<Ventilador>();
      this.aires = new ArrayList<Aire>();
  }

  public Habitacion () { };
 
  public Integer getNroHabitacion()
  {
        return nroHabitacion;
  }

    public void setNroHabitacion(Integer nroHabitacion) {
        this.nroHabitacion = nroHabitacion;
    }

    public String getNombreHabitacion() {
        return nombreHabitacion;
    }

    public void setNombreHabitacion(String nombreHabitacion) {
        this.nombreHabitacion = nombreHabitacion;
    }

    public Piso getUnPiso() {
        return unPiso;
    }

    public void setUnPiso(Piso unPiso) {
        this.unPiso = unPiso;
    }

    @Override
    public String toString() {
        return nombreHabitacion;
    }

    public List<Aparato> getAparatos() {
        return aparatos;
    }

    public void setAparatos(List<Aparato> aparatos) {
        this.aparatos = aparatos;
    }

    public List<Ventilador> getVentiladores() {
        return ventiladores;
    }

    public void setVentiladores(List<Ventilador> ventiladores) {
        this.ventiladores = ventiladores;
    }

    public List<Aire> getAires() {
        return aires;
    }

    public void setAires(List<Aire> aires) {
        this.aires = aires;
    }

  public void agregarAparato()throws ErrorException
  {
        Aparato a = new Aparato(this);
        //sino tengo agrego una nueva         
        this.getAparatos().add(a);
        casa.getPersistencia().insertar(a);
  }

  public void agregarVentilador()throws ErrorException
  {
        Ventilador v = new Ventilador(this);
        this.getVentiladores().add(v);
        casa.getPersistencia().insertar(v);

  }

  public void agregarAire()throws ErrorException
  {
        Aire aa = new Aire(this);
        this.getAires().add(aa);
        casa.getPersistencia().insertar(aa);
  }
}
------------------------------------------------------------------------

--------------------------------BOTON GUARDAR
try{
                Habitacion unaHabitacion;
                if (ComboBoxHabitaciones.getItemCount() > 0) {
                    unaHabitacion = (Habitacion) ComboBoxHabitaciones.getSelectedItem();     
                   
                    if(RBLuz.isSelected() == true) {
                       
                        unaHabitacion.agregarAparato();
                    }
                    if(RBVentilador.isSelected() == true) {
                       
                        unaHabitacion.agregarVentilador();
                    }
                    if(RBAire.isSelected() == true) {
                       
                        unaHabitacion.agregarAire();
                    }
                    JOptionPane.showMessageDialog(rootPane, "Se a guardado de manera exitosa.");
                    casa.getPersistencia().refrescar(casa);
                    mostrarAparatos((Habitacion)ComboBoxHabitaciones.getSelectedItem());
                }else{
                    JOptionPane.showMessageDialog(this, "Debe seleccionar una Habitación.");
                    this.ComboBoxHabitaciones.requestFocus();
                }
               
            } catch (Exception e) {
                JOptionPane.showMessageDialog(rootPane, "Se dectecto un problema.!!!!!!!!!!");
            }
--------------------------------------------------------
MOSTRAR APaRATOS--------------------------------------------------

private void mostrarAparatos(Habitacion unaHabitacion){
        this.auxUnaHabitacion=unaHabitacion;
        try {
            MyTableModel tabla = new MyTableModel();
            tabla.isCellEditable(0, 0);
            tabla.setColumnCount(0);
            tabla.addColumn("ID Aparato");
            tabla.addColumn("Aparato");

        this.auxUnaHabitacion=unaHabitacion;
        Iterator <Aparato> listAparato = this.auxUnaHabitacion.getAparatos().iterator();
        Aparato inte;
       
        while(listAparato.hasNext()){
            String nombre="";
            inte = listAparato.next();
           
            if(inte instanceof Ventilador){
                Ventilador v =(Ventilador) inte;
                nombre= v.getDescripcion();
            }else if(inte instanceof Aire)
            {
                Aire aa =(Aire) inte;
                nombre=aa.getDescripcion();
            }
///CUANDO GURADO EL PRIMER APRATO LUZ ME DA ERROR EN ESTA LINEA
            if(inte.getDescripcion().equals("Luz")){
                nombre=inte.getDescripcion();
            }
            tabla.addRow(new Object[]{
               inte.getIdAparato(),nombre
            });
         }

         this.tableAparatos.setModel(tabla);
         tableAparatos.setLayout(null);
           
        } catch (SecurityException e) {
        } catch (HeadlessException e) {
        }             
    }

 

ey