/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Mercado.Persistencia;
import Mercado.Controladora.MercadoControladora;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
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.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
/**
*
* @author Folger Fonseca Velasco
*/
@Entity
@Table(name = "MENU")
@NamedQueries({@NamedQuery(name = "Menu.findAll", query = "SELECT m FROM Menu m"), @NamedQuery(name = "Menu.findByMenuId", query = "SELECT m FROM Menu m WHERE m.menuId = :menuId"), @NamedQuery(name = "Menu.findByNmbMen", query = "SELECT m FROM Menu m WHERE m.nmbMen = :nmbMen"), @NamedQuery(name = "Menu.findByUrlMen", query = "SELECT m FROM Menu m WHERE m.urlMen = :urlMen"), @NamedQuery(name = "Menu.findByDescMen", query = "SELECT m FROM Menu m WHERE m.descMen = :descMen")})
public class Menu implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "MENU_ID")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long menuId;
@Column(name = "NMB_MEN")
private String nmbMen;
@Column(name = "URL_MEN")
private String urlMen;
@Column(name = "DESC_MEN")
private String descMen;
@Column(name = "ID_USR")
private String idUsr;
@Column(name = "FEC_MEN")
@Temporal(TemporalType.TIMESTAMP)
private Date fecMen;
@Column(name = "EST_MEN")
private String estMen;
@JoinTable(name = "MENU_PRODUCTO", joinColumns = {
@JoinColumn(name = "MENU_ID", referencedColumnName = "MENU_ID")}, inverseJoinColumns = {
@JoinColumn(name = "PRD_ID", referencedColumnName = "PRD_ID")})
@ManyToMany
private Collection<Producto> productoCollection;
@OneToMany(mappedBy = "menuId",fetch=FetchType.LAZY)
private Collection<Caracteristica> caracteristicaCollection;
@JoinColumn(name = "CTL_ID", referencedColumnName = "CTL_ID")
@ManyToOne
private Catalogo ctlId;
@OneToMany(mappedBy = "padId", fetch=FetchType.EAGER)
private Collection<Menu> menuCollection;
@JoinColumn(name = "PAD_ID", referencedColumnName = "MENU_ID")
@ManyToOne
private Menu padId;
@JoinColumn(name = "ID_APP", referencedColumnName = "ID_APP")
@ManyToOne
private Aplicacion aplicacion;
public Menu() {
if(menuId!=null){
try {
MercadoControladora mc = new MercadoControladora();
productoCollection = (ArrayList<Producto>) mc.productosPorCategoria(menuId.toString());
} catch (Exception e) {
productoCollection = new ArrayList<Producto>();
}
}
}
public Menu(Long menuId) {
this.menuId = menuId;
}
public Long getMenuId() {
return menuId;
}
public void setMenuId(Long menuId) {
this.menuId = menuId;
}
public Aplicacion getAplicacion() {
return aplicacion;
}
public void setAplicacion(Aplicacion aplicacion) {
this.aplicacion = aplicacion;
}
public String getNmbMen() {
return nmbMen;
}
public void setNmbMen(String nmbMen) {
this.nmbMen = nmbMen;
}
public String getUrlMen() {
return urlMen;
}
public void setUrlMen(String urlMen) {
this.urlMen = urlMen;
}
public String getDescMen() {
return descMen;
}
public void setDescMen(String descMen) {
this.descMen = descMen;
}
public String getIdUsr() {
return idUsr;
}
public void setIdUsr(String idUsr) {
this.idUsr = idUsr;
}
public Date getFecMen() {
return fecMen;
}
public void setFecMen(Date fecMen) {
this.fecMen = fecMen;
}
public String getEstMen() {
return estMen;
}
public void setEstMen(String estMen) {
this.estMen = estMen;
}
public Collection<Producto> getProductoCollection() {
return productoCollection;
}
public void setProductoCollection(Collection<Producto> productoCollection) {
this.productoCollection = productoCollection;
}
public Collection<Caracteristica> getCaracteristicaCollection() {
return caracteristicaCollection;
}
public void setCaracteristicaCollection(Collection<Caracteristica> caracteristicaCollection) {
this.caracteristicaCollection = caracteristicaCollection;
}
public Catalogo getCtlId() {
return ctlId;
}
public void setCtlId(Catalogo ctlId) {
this.ctlId = ctlId;
}
public Collection<Menu> getMenuCollection() {
return menuCollection;
}
public void setMenuCollection(Collection<Menu> menuCollection) {
this.menuCollection = menuCollection;
}
public Menu getPadId() {
return padId;
}
public void setPadId(Menu padId) {
this.padId = padId;
}
@Override
public int hashCode() {
int hash = 0;
hash += (menuId != null ? menuId.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 Menu)) {
return false;
}
Menu other = (Menu) object;
if ((this.menuId == null && other.menuId != null) || (this.menuId != null && !this.menuId.equals(other.menuId))) {
return false;
}
return true;
}
@Override
public String toString() {
return "Mercado.Persistencia.Menu[menuId=" + menuId + "]";
}
}