Copia.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.licensis.notaire.negocio;

import com.licensis.notaire.dto.DtoCopia;
import com.licensis.notaire.dto.DtoTestimonio;
import com.fasterxml.jackson.annotation.JsonIgnore;
import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import jakarta.persistence.Basic;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToMany;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.NamedQueries;
import jakarta.persistence.NamedQuery;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
import jakarta.persistence.Temporal;
import jakarta.persistence.TemporalType;
import jakarta.persistence.Version;
import jakarta.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.XmlTransient;

/**
 *
 * @author juanca
 */
@Entity
@Table(name = "copias")
@XmlRootElement
@NamedQueries(
        {
            @NamedQuery(name = "Copia.findAll", query = "SELECT c FROM Copia c"),
            @NamedQuery(name = "Copia.findByIdCopia", query = "SELECT c FROM Copia c WHERE c.idCopia = :idCopia"),
            @NamedQuery(name = "Copia.findByNumero", query = "SELECT c FROM Copia c WHERE c.numero = :numero"),
            @NamedQuery(name = "Copia.findByFechaImpresion", query = "SELECT c FROM Copia c WHERE c.fechaImpresion = :fechaImpresion"),
            @NamedQuery(name = "Copia.findByTestimonio", query = "SELECT c FROM Copia c WHERE c.fkIdTestimonio.idTestimonio = :idTestimonio"),
            @NamedQuery(name = "Copia.findByFechaRetiro", query = "SELECT c FROM Copia c WHERE c.fechaRetiro = :fechaRetiro")
        })
public class Copia implements Serializable
{

    @Basic(optional = false)
    @Column(name = "fecha_impresion")
    @Temporal(TemporalType.DATE)
    private Date fechaImpresion;
    @Column(name = "fecha_retiro")
    @Temporal(TemporalType.DATE)
    private Date fechaRetiro;
    @Basic(optional = false)
    @Column(name = "version")
    @Version
    private int version = 0;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "copia")
    @com.fasterxml.jackson.annotation.JsonIgnoreProperties({"copia"})
    private Collection<FoliosCopias> foliosCopiasCollection;
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id_copia")
    private Integer idCopia;
    @Basic(optional = false)
    @Column(name = "numero")
    private int numero;
    @Column(name = "observaciones")
    private String observaciones;
    @ManyToMany(mappedBy = "copiaList", fetch = FetchType.LAZY)
    @com.fasterxml.jackson.annotation.JsonIgnoreProperties({"copiaList"})
    private List<Folio> folioList;
    @JoinColumn(name = "fk_id_persona", referencedColumnName = "id_persona")
    @ManyToOne(optional = true, fetch = FetchType.EAGER)
    private Persona fkIdPersona;
    @JoinColumn(name = "fk_id_testimonio", referencedColumnName = "id_testimonio")
    @ManyToOne(optional = true, fetch = FetchType.EAGER)
    @com.fasterxml.jackson.annotation.JsonIgnoreProperties({"copiaList", "movimientoTestimonioList"})
    private Testimonio fkIdTestimonio;

    public Copia()
    {
    }

    public Copia(Integer idCopia)
    {
        this.idCopia = idCopia;
    }

    public Copia(Integer idCopia, int numero, Date fechaImpresion)
    {
        this.idCopia = idCopia;
        this.numero = numero;
        this.fechaImpresion = fechaImpresion;
    }

    public Integer getIdCopia()
    {
        return idCopia;
    }

    public void setIdCopia(Integer idCopia)
    {
        this.idCopia = idCopia;
    }

    public int getNumero()
    {
        return numero;
    }

    public void setNumero(int numero)
    {
        this.numero = numero;
    }

    public Date getFechaImpresion()
    {
        return fechaImpresion;
    }

    public void setFechaImpresion(Date fechaImpresion)
    {
        this.fechaImpresion = fechaImpresion;
    }

    public Date getFechaRetiro()
    {
        return fechaRetiro;
    }

    public void setFechaRetiro(Date fechaRetiro)
    {
        this.fechaRetiro = fechaRetiro;
    }

    public String getObservaciones()
    {
        return observaciones;
    }

    public void setObservaciones(String observaciones)
    {
        this.observaciones = observaciones;
    }

    @XmlTransient
    @JsonIgnore
    public List<Folio> getFolioList()
    {
        return folioList;
    }

    public void setFolioList(List<Folio> folioList)
    {
        this.folioList = folioList;
    }

    public Persona getFkIdPersona()
    {
        return fkIdPersona;
    }

    public void setFkIdPersona(Persona fkIdPersona)
    {
        this.fkIdPersona = fkIdPersona;
    }

    public Testimonio getFkIdTestimonio()
    {
        return fkIdTestimonio;
    }

    public void setFkIdTestimonio(Testimonio fkIdTestimonio)
    {
        this.fkIdTestimonio = fkIdTestimonio;
    }

    @Override
    public int hashCode()
    {
        int hash = 0;
        hash += (idCopia != null ? idCopia.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object)
    {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Copia))
        {
            return false;
        }
        Copia other = (Copia) object;
        if ((this.idCopia == null && other.idCopia != null) || (this.idCopia != null && !this.idCopia.equals(other.idCopia)))
        {
            return false;
        }
        return true;
    }

    @Override
    public String toString()
    {
        return "Copia[ idCopia=" + idCopia + " ]";
    }

    public int getVersion()
    {
        return version;
    }

    public void setVersion(int version)
    {
        this.version = version;
    }

    @XmlTransient
    @JsonIgnore
    public Collection<FoliosCopias> getFoliosCopiasCollection()
    {
        return foliosCopiasCollection;
    }

    public void setFoliosCopiasCollection(Collection<FoliosCopias> foliosCopiasCollection)
    {
        this.foliosCopiasCollection = foliosCopiasCollection;
    }

    public DtoCopia getDto()
    {
        DtoCopia miDto = new DtoCopia();

        miDto.setIdCopia(idCopia);
        miDto.setFechaImpresion(fechaImpresion);
        miDto.setFechaRetiro(fechaRetiro);
        miDto.setNumero(numero);
        miDto.setObservaciones(observaciones);

        if (fkIdTestimonio != null)
        {
            DtoTestimonio miDtoTestimonio;
            miDtoTestimonio = fkIdTestimonio.getDto();
            miDto.setTestimonio(miDtoTestimonio);
        }

        miDto.setVersion(version);

        return miDto;
    }

    public void setAtributos(DtoCopia miDto)
    {

        if (miDto.getIdCopia() != null)
        {
            idCopia = miDto.getIdCopia();
        }

        version = miDto.getVersion();
        fechaImpresion = miDto.getFechaImpresion();
        fechaRetiro = miDto.getFechaRetiro();
        numero = miDto.getNumero();
        observaciones = miDto.getObservaciones();

        if (miDto.getTestimonio() != null)
        {
            fkIdTestimonio = new Testimonio(miDto.getTestimonio().getIdTestimonio());
        }
    }
}