Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - mariaelhacker

#1
Hola spcruzaley.

Si persiste bien el campo descripcion en la BD.

Te paso nuevamente como queda la clase aparatos:


@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;
 
 @Column(name = "tipoSalida", nullable = true, unique = false)
 private char tipoSalida='A';

 @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;
   }

@Transient
   public String getDescripcion(){
       DiscriminatorValue value = this.getClass().getAnnotation(DiscriminatorValue.class);
       return value == null ? null : value.value();
   }

   @Override
   public String toString() {
       return idAparato + "-" + this.getDescripcion();
   }

}


No muestra en el jtable cuando agrego Ventilador y Aire, cuando agrego Luz, si muestra.
Todos los datos persisten en la BD.

Si salgo de la ejecucion y vuelve a Ejecutar el proyecto ahi me muestra los 3 datos agregado.


asi queda el metodo mostrarAparatos

 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()){
           inte = listAparato.next();
          System.out.println("veeeeer..." + inte.getIdAparato()+" .. "+inte.getDescripcion());
           tabla.addRow(new Object[]{
              inte.getIdAparato(),inte.getDescripcion()
           });
        }

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

Me eh dado cuenta que aca esta mi proble
this.auxUnaHabitacion=unaHabitacion;
       Iterator <Aparato> listAparato = this.auxUnaHabitacion.getAparatos().iterator();
       Aparato inte;
       
       while(listAparato.hasNext()){
           inte = listAparato.next();
          System.out.println("veeeeer..." + inte.getIdAparato()+" .. "+inte.getDescripcion());
           tabla.addRow(new Object[]{
              inte.getIdAparato(),inte.getDescripcion()
           });

No esta ingresando cuando agrego alguno de sus hijos


Agradezco muchísimo tu ayuda!
#2
Hola
Si me eh dado cuenta que mi problema pasa por ahi.
El tema es la  Class Aparato lo definí en la persistencia una única tabla por familia (herencia)
Po lo que este tipo de herencia crea una ÚNICA tabla por la familia de subclases y superclases creando una columna por cada atributo de cada clase y otra columna para definir de que entidad proviene y este atributo es "descripcion".
Por eso no le estoy mandando ese dato descripcion en el mensaje, ya que me parecia redundante pasarle dos veces, entonces pensaba recuperar esa descripcion que guarda en la persistencia.
Si ves en las declaraciones de las clases se puede obesrvar eso.

Ahora veo que no se si es posible.
Tendría que definir otro campo entonces, o pasarle en el mensaje.
#3
Hola spcruzaley.

De todos modos corrigiendo estos conceptos, igual no funciona.

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");

        Iterator <Aparato> listAparato = this.auxUnaHabitacion.getAparatos().iterator();
        Aparato inte;
       
        while(listAparato.hasNext()){
            String nombre="";
            inte = listAparato.next();
           
           System.out.println("idaparato..." + inte.getIdAparato());
            System.out.println("descripcion..." + inte.getDescripcion());

            tabla.addRow(new Object[]{
               inte.getIdAparato(),inte.getDescripcion();
            });
         }

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


De esta forma solo devuelve estos datos si agrego aparato
agregue 3 Aparato y agregue 2 ventilador y 3 aire
idaparato...14
descripcion...null
idaparato...15
descripcion...null
idaparato...16
descripcion...null

si agrego ventilador o aire no retorna ningún dato.
#4
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) {
        }             
    }