package modelo;

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


@Entity
@Table(name="EXC")
/**
 * Clase que representa las excepciones de los casos de uso
 */
public class ExcepcionCU implements Serializable{
    @Id
    @Column(name="ID")
    @GeneratedValue(strategy=GenerationType.AUTO)
    /**
     * Atributo clave primaria, para la base de datos.
     */
    private Long id;
    /**
     * Identificador unívoco de la excepción
     */
    private int numero_id;
    /**
     * Atributo acción de la excepcion
     */
    private String accion;
    /**
     * Condición de la excepción.
     */
    private String condicion;
    /**
     * Atributo que guarda la terminación de la excepción.
     */
    private String terminacion;
    /**
     * Atributo que guarda si la accion de la excepcion la realiza el sistema.
     */
    private boolean accion_sistema;
    /**
     * Atributo que guarda si la accion de la excepcion la realiza un actor.
     */
    private boolean accion_actor;
    /**
     * Atributo que guarda el actor que realiza la excepción, en caso de que sea un actor
     */
    private String actor;
    @ManyToOne
    /**
     * Atributo paso que contiene est excepción.
     */
    private PasoCU mPasoCU;
    /**
     * Este parámetro estático, lleva la cuenta del número de excepciones
     * que se han creado, para poder reconocerlos unívocamente.
     */
    static int n_instancia=0;
    
    /**
     * Constructor que inicializa el número con que se identifica el paso
     */
    public ExcepcionCU () {
        n_instancia++;
        numero_id=n_instancia;
    }

    /**
     * @return the accion
     */
    public String getAccion() {
        return accion;
    }

    /**
     * @param accion the accion to set
     */
    public void setAccion(String accion) {
        this.accion = accion;
    }

    /**
     * @return the condicion
     */
    public String getCondicion() {
        return condicion;
    }

    /**
     * @param condicion the condicion to set
     */
    public void setCondicion(String condicion) {
        this.condicion = condicion;
    }

    /**
     * @return the accion_sistema
     */
    public boolean isAccion_sistema() {
        return accion_sistema;
    }

    /**
     * @param accion_sistema the accion_sistema to set
     */
    public void setAccion_sistema(boolean accion_sistema) {
        this.accion_sistema = accion_sistema;
    }

    /**
     * @return the accion_actor
     */
    public boolean isAccion_actor() {
        return accion_actor;
    }

    /**
     * @param accion_actor the accion_actor to set
     */
    public void setAccion_actor(boolean accion_actor) {
        this.accion_actor = accion_actor;
    }

    /**
     * @return the numero_id
     */
    public int getNumero_id() {
        return numero_id;
    }

    /**
     * @return the terminacion
     */
    public String getTerminacion() {
        return terminacion;
    }

    /**
     * @param terminacion the terminacion to set
     */
    public void setTerminacion(String terminacion) {
        this.terminacion = terminacion;
    }

    /**
     * @return the actor
     */
    public String getActor() {
        return actor;
    }

    /**
     * @param actor the actor to set
     */
    public void setActor(String actor) {
        this.actor = actor;
    }

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

    @Override
    public int hashCode() {
        int hash = 3;
        hash = 23 * hash + this.numero_id;
        return hash;
    }

    @Override
    public String toString() {
        return "ExcepcionCU{" + "condicion=" + condicion + ", numero_id=" + numero_id + '}';
    }

    /**
     * @return the mPasoCU
     */
    public PasoCU getmPasoCU() {
        return mPasoCU;
    }

    /**
     * @param mPasoCU the mPasoCU to set
     */
    public void setmPasoCU(PasoCU mPasoCU) {
        this.mPasoCU = mPasoCU;
    }

    

}

