Concepto.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.DtoConcepto;
import com.licensis.notaire.dto.exceptions.DtoInvalidoException;
import java.io.Serializable;
import java.util.ArrayList;
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.NamedQueries;
import jakarta.persistence.NamedQuery;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
import jakarta.persistence.Version;
import jakarta.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.XmlTransient;

/**
 *
 * @author User
 */
@Entity
@Table(name = "conceptos")
@XmlRootElement
@NamedQueries(
        {
            @NamedQuery(name = "Concepto.findAll", query = "SELECT c FROM Concepto c"),
            @NamedQuery(name = "Concepto.findByIdConcepto", query = "SELECT c FROM Concepto c WHERE c.idConcepto = :idConcepto"),
            @NamedQuery(name = "Concepto.findByValor", query = "SELECT c FROM Concepto c WHERE c.valor = :valor"),
            @NamedQuery(name = "Concepto.findByNombre", query = "SELECT c FROM Concepto c WHERE c.nombre = :nombre"),
            @NamedQuery(name = "Concepto.findByPorcentaje", query = "SELECT c FROM Concepto c WHERE c.porcentaje = :porcentaje")
        })
public class Concepto implements Serializable
{

    @Basic(optional = false)
    @Column(name = "concepto_fijo")
    private boolean conceptoFijo;
    @Basic(optional = false)
    @Column(name = "habilitado")
    private boolean habilitado;
    @Basic(optional = false)
    @Version
    @Column(name = "version")
    private int version = 0;
    @Basic(optional = false)
    @Column(name = "valor")
    private float valor;
    @Basic(optional = false)
    @Column(name = "porcentaje")
    private int porcentaje;
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id_concepto")
    private Integer idConcepto;
    @Basic(optional = false)
    @Column(name = "nombre")
    private String nombre;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "concepto", fetch = FetchType.EAGER)
    private List<PlantillaPresupuesto> plantillaPresupuestoList = new ArrayList<>();

    public Concepto()
    {
    }

    public Concepto(Integer idConcepto)
    {
        this.idConcepto = idConcepto;
    }

    public Concepto(Integer idConcepto, String nombre, Float valor, Integer porcentaje)
    {
        this.idConcepto = idConcepto;
        this.nombre = nombre;
        this.valor = valor;
        this.porcentaje = porcentaje;
    }

    public Integer getIdConcepto()
    {
        return idConcepto;
    }

    public void setIdConcepto(Integer idConcepto)
    {
        this.idConcepto = idConcepto;
    }

    public String getNombre()
    {
        return nombre;
    }

    public void setNombre(String nombre)
    {
        this.nombre = nombre;
    }

    @XmlTransient
    @com.fasterxml.jackson.annotation.JsonIgnore
    public List<PlantillaPresupuesto> getPlantillaPresupuestoList()
    {
        return plantillaPresupuestoList;
    }

    public void setPlantillaPresupuestoList(List<PlantillaPresupuesto> plantillaPresupuestoList)
    {
        this.plantillaPresupuestoList = plantillaPresupuestoList;
    }

    /**
     * Retorna una instancia de DtoConcepto con todos los valores actuales de la instancia de
     * Concepto.
     *
     * @return
     */
    @com.fasterxml.jackson.annotation.JsonIgnore
    public DtoConcepto getDto()
    {
        DtoConcepto miDto = new DtoConcepto();

        miDto.setIdConcepto(this.getIdConcepto());
        miDto.setNombre(this.getNombre());
        miDto.setValor(this.getValor());
        miDto.setPorcentaje(this.getPorcentaje());
        miDto.setVersion(this.version);
        miDto.setHabilitado(habilitado);
        miDto.setFijo(conceptoFijo);

        return miDto;
    }

    public void setAtributos(DtoConcepto nuevoDto) throws DtoInvalidoException
    {
        this.setIdConcepto(nuevoDto.getIdConcepto());

        if (nuevoDto.getNombre() != null)
        {
            this.setNombre(nuevoDto.getNombre());
        }

        if (nuevoDto.getValor() != null)
        {
            this.setValor(nuevoDto.getValor());
        }

        if (nuevoDto.getPorcentaje() != null)
        {
            this.setPorcentaje(nuevoDto.getPorcentaje());
        }

        this.setVersion(nuevoDto.getVersion());
        this.setHabilitado(nuevoDto.getHabilitado());
        this.conceptoFijo = nuevoDto.isFijo();
    }

    @Override
    public int hashCode()
    {
        int hash = 0;
        hash += (idConcepto != null ? idConcepto.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 Concepto))
        {
            return false;
        }
        Concepto other = (Concepto) object;
        if ((this.idConcepto == null && other.idConcepto != null) || (this.idConcepto != null && !this.idConcepto.equals(other.idConcepto)))
        {
            return false;
        }
        return true;
    }

    @Override
    public String toString()
    {
        return "Conceptos[ version=" + version + " ]"
                + "[ idConcepto=" + idConcepto + " ]"
                + "[ nombre=" + nombre + " ]";
    }

    public int getVersion()
    {
        return version;
    }

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

    public float getValor()
    {
        return valor;
    }

    public void setValor(float valor)
    {
        this.valor = valor;
    }

    public int getPorcentaje()
    {
        return porcentaje;
    }

    public void setPorcentaje(int porcentaje)
    {
        this.porcentaje = porcentaje;
    }

    public boolean getHabilitado()
    {
        return habilitado;
    }

    public void setHabilitado(boolean habilitado)
    {
        this.habilitado = habilitado;
    }

    public boolean isConceptoFijo()
    {
        return conceptoFijo;
    }

    public void setConceptoFijo(boolean conceptoFijo)
    {
        this.conceptoFijo = conceptoFijo;
    }
}