package modelo;

import java.io.Serializable;
import java.util.Observable;
import javax.persistence.*;

/**
 * Clase Excepcion, crea las Excepciones de los Pasos
 * @author MW3 Software
 */

// <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
// #[regen=yes,id=DCE.DA892910-74F3-5721-0720-7AC66DFFEEA0]
// </editor-fold>
@Entity
@Table(name="EXCEPCIONCU")
public class ExcepcionCU extends Observable implements Serializable{

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name="Excpid")
    private long id;

    /**
     * Numero de la Excepcion
     */
     private int numeroExcep;
     /**
      * Paso al que tenemos que insertar la Excepcion
      */
     private int paso;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.B5C5B85D-3441-DC9F-9805-81863D6C8CDA]
    // </editor-fold>
     /**
      * descripcion de la Excepcion
      */
    private String descripcionExcep;
    /**
     * Paso para saber en la Base de Datos a cual pertenece
     */
    @ManyToOne
    private PasoCU pasoCU;
    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.F697EEB9-1BCD-7591-82E3-A354288865DE]
    // </editor-fold> 
    public ExcepcionCU () {
    }

    /**
     * Metodo que devuelve la descripcion
     * @return devuelve la descripcion de la Excepcion
     */
    public String getDescripcionExcep () {
        return descripcionExcep;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.822114DA-FF74-1A4D-831C-BA345E58A464]
    // </editor-fold>
    /**
     * Metodo que almacena la descripcion
     * @param val Nuevo valor de la descripcion de la Excepcion
     */
    public void setDescripcionExcep (String val) {
        this.descripcionExcep = val;
        //Notificamos que ha habido un cambio
         this.setChanged();
         this.notifyObservers();
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.E315E858-F072-74BC-E406-C7E5E3EC0B5A]
    // </editor-fold>
    /**
     * Metodo que devuelve el numero de la Excepcion
     * @return devuelve la numero de la Excepcion
     */
    public int getNumeroExcep () {
        return numeroExcep;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.6204143C-87C3-710D-1C9B-D35BDA9358E9]
    // </editor-fold>
    /**
     * Metodo que almacena el numero
     * @param val Nuevo valor del numero de la Excepcion
     */
    public void setNumeroExcep (int val) {
        this.numeroExcep = val;
        //Notificamos que ha habido un cambio
         this.setChanged();
         this.notifyObservers();
    }

    /**
     * Metodo que devuelve el paso al que pertenece la Expcecion
     * @return devuelve el Paso al que pertenece la Excepcion
     */
    public PasoCU getPasoCU() {
        return pasoCU;
    }

    /**
     * Metodo que almacena el paso al que pertenece
     * @param pasoCU Nuevo valor del paso al que pertenece la Excepcion
     */
    public void setPasoCU(PasoCU pasoCU) {
        this.pasoCU = pasoCU;
    }

    @Override
    public String toString() {
        return super.toString();
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final ExcepcionCU other = (ExcepcionCU) obj;
        if (this.id != other.id) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 3;
        hash = 41 * hash + (int) (this.id ^ (this.id >>> 32));
        return hash;
    }

    /**
     * devuelve el paso en el que tenemos que insertar la excepcion
     * @return devuelve el paso en donde tenemos que insertar la Excepcion
     */
    public int getPaso() {
        return paso;
    }

    /**
     * Metodo que almacena el paso en donde insertar
     * @param paso Nuevo valor del paso en donde insertar la Excepcion
     */
    public void setPaso(int paso) {
        this.paso = paso;
    }

}

