Problema con mostrar datos en JTable con Iterator clase Padre y 2 clase hijos


08 de Marzo del 2019

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) {
}
}