/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.cosmodas.EntCosmos;

import java.io.Serializable;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 * @author obper
 */
@Entity
@Table(name = "wc_opciones")
@XmlRootElement
@NamedQueries({
        @NamedQuery(name = "WcOpciones.findAll", query = "SELECT w FROM WcOpciones w")
        , @NamedQuery(name = "WcOpciones.findByIdOpcion", query = "SELECT w FROM WcOpciones w WHERE w.idOpcion = :idOpcion")
        , @NamedQuery(name = "WcOpciones.findByNombreOpcion", query = "SELECT w FROM WcOpciones w WHERE w.nombreOpcion = :nombreOpcion")
        , @NamedQuery(name = "WcOpciones.findByEstadoOpcion", query = "SELECT w FROM WcOpciones w WHERE w.estadoOpcion = :estadoOpcion")
        , @NamedQuery(name = "WcOpciones.findByUrl", query = "SELECT w FROM WcOpciones w WHERE w.url = :url")
        , @NamedQuery(name = "WcOpciones.findByTipoMenu", query = "SELECT w FROM WcOpciones w WHERE w.tipoMenu = :tipoMenu")})
public class WcOpciones implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id_opcion")
    private Integer idOpcion;
    @Size(max = 45)
    @Column(name = "nombre_opcion")
    private String nombreOpcion;
    @Column(name = "estado_opcion")
    private Boolean estadoOpcion;
    @Size(max = 200)
    @Column(name = "url")
    private String url;
    @Column(name = "tipo_menu")
    private Boolean tipoMenu;
    @JoinTable(name = "wc_opciones_grupos", joinColumns = {
            @JoinColumn(name = "id_opcion", referencedColumnName = "id_opcion")}, inverseJoinColumns = {
            @JoinColumn(name = "id_grupo", referencedColumnName = "id_grupos_usuarios")})
    @ManyToMany
    private List<WcGruposUsuarios> wcGruposUsuariosList;
    @Size(max = 4)
    @Column(name = "sub_menu_id")
    private Integer subMenuId;
    @Size(max = 100)
    @Column(name = "icono")
    private String icono;
    @Column(name = "app")
    private Integer app;

    public WcOpciones() {
    }

    public Integer getApp() {
        return app;
    }

    public void setApp(Integer app) {
        this.app = app;
    }

    public WcOpciones(Integer idOpcion) {
        this.idOpcion = idOpcion;
    }

    public Integer getIdOpcion() {
        return idOpcion;
    }

    public void setIdOpcion(Integer idOpcion) {
        this.idOpcion = idOpcion;
    }

    public String getNombreOpcion() {
        return nombreOpcion;
    }

    public void setNombreOpcion(String nombreOpcion) {
        this.nombreOpcion = nombreOpcion;
    }

    public Boolean getEstadoOpcion() {
        return estadoOpcion;
    }

    public void setEstadoOpcion(Boolean estadoOpcion) {
        this.estadoOpcion = estadoOpcion;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public Boolean getTipoMenu() {
        return tipoMenu;
    }

    public void setTipoMenu(Boolean tipoMenu) {
        this.tipoMenu = tipoMenu;
    }

    public Integer getSubMenuId() {
        return subMenuId;
    }

    public void setSubMenuId(Integer subMenuId) {
        this.subMenuId = subMenuId;
    }

    public String getIcono() {
        return icono;
    }

    public void setIcono(String icono) {
        this.icono = icono;
    }


    @XmlTransient
    public List<WcGruposUsuarios> getWcGruposUsuariosList() {
        return wcGruposUsuariosList;
    }

    public void setWcGruposUsuariosList(List<WcGruposUsuarios> wcGruposUsuariosList) {
        this.wcGruposUsuariosList = wcGruposUsuariosList;
    }

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

    @Override
    public String toString() {
        return "com.cosmodas.dbcon.WcOpciones[ idOpcion=" + idOpcion + " ]";
    }

}
