Foro sobre Java SE > Problema con mostrar datos en JTable con Iterator clase Padre y 2 clase hijos
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
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); } } ------------------------------------------------------------------------
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(); }
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 }); }
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) {
}
}