/*
*
* Copyright (c) 2013 - 2014 INT - National Institute of Technology & COPPE - Alberto Luiz Coimbra Institute
- Graduate School and Research in Engineering.
* See the file license.txt for copyright permission.
*
*/
package modelo;
import java.io.Serializable;
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.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
/**
* Classe relativa ao bean correspondente a entidade DeFamPer, que informa a demanda por familia e periodo.
*
* @author marques.araujo
*
*/
@NamedQueries(
{
@NamedQuery(name="DeFamPer.recuperaListaDeDemandaFamiliaPerioPAP",
query="select deFamPer from DeFamPer deFamPer " +
"left outer join deFamPer.familia familia " +
"left outer join DeFamPer.perioPAP perioPAP " +
"order by familia,perioPAP "
),
@NamedQuery(name="DeFamPer.recuperaListaDeDeFamPerPorFamilia",
query="select deFamPer from DeFamPer deFamPer " +
"where deFamPer.familia = ? "
),
@NamedQuery(name="DeFamPer.recuperaDeFamPerPorPerioPAPEFamilia",
query="select deFamPer from DeFamPer deFamPer " +
"where deFamPer.perioPAP = ? " +
"and deFamPer.familia = ? "
)
}
)
@Entity
@Table(name="DeFamPer")
@SequenceGenerator(name="SEQUENCIA", sequenceName="SEQ_DEFAMPER", allocationSize=1)
public class DeFamPer implements Serializable, Comparable<DeFamPer> {
private static final long serialVersionUID = 1L;
/**
* Identificador de DeFamPer.
*
*/
private Long idDeFamPer;
/**
* Uma Familia possui muitos DeFamPer.
*
*/
private Familia familia;
/**
* Um PerioPAP possui muitos DeFamPer.
*
*/
private PerioPAP perioPAP;
/**
* Informa venda projetada em pe�as por familia e periodo.
*
*/
private double vendasProjetadasFamilia;
/**
* Informa pedidos cadastrados de todos as familias(pe�as).
*
*/
private double pedidosFamilia;
/**
* Construtor sem agumentos da classe DeFamPer.
*
*/
public DeFamPer(){
}
/**
* Construtor com agumentos da classe DeFamPer.
*
*/
public DeFamPer(Familia familia, PerioPAP perioPAP){
this.familia = familia;
this.perioPAP = perioPAP;
this.vendasProjetadasFamilia = 0.0;
this.pedidosFamilia = 0.0;
}
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQUENCIA")
@Column(name="ID")
public Long getIdDeFamPer() {
return idDeFamPer;
}
public void setIdDeFamPer(Long idDeFamPer) {
this.idDeFamPer = idDeFamPer;
}
// Lembrar de deixar como EAGER, pois na tela SEMPRE se quer exibir a informa��o da Familia
@ManyToOne(optional=false, fetch=FetchType.EAGER)
@JoinColumn(name="FAMILIA_ID")
public Familia getFamilia() {
return familia;
}
// Lembrar de deixar como EAGER, pois na tela SEMPRE se quer exibir a informa��o do Periodo
@ManyToOne(optional=false, fetch=FetchType.EAGER)
@JoinColumn(name="PERIOPAP_ID")
public PerioPAP getPerioPAP() {
return perioPAP;
}
public void setFamilia(Familia familia) {
this.familia = familia;
}
public void setPerioPAP(PerioPAP perioPAP) {
this.perioPAP = perioPAP;
}
public double getVendasProjetadasFamilia() {
return vendasProjetadasFamilia;
}
public void setVendasProjetadasFamilia(double vendasProjetadasFamilia) {
this.vendasProjetadasFamilia = vendasProjetadasFamilia;
}
public double getPedidosFamilia() {
return pedidosFamilia;
}
public void setPedidosFamilia(double pedidosFamilia) {
this.pedidosFamilia = pedidosFamilia;
}
@Override
public String toString(){
return this.familia.getDescrFamilia() + " - " + this.getPerioPAP() + " - " +
this.vendasProjetadasFamilia + " - " + this.pedidosFamilia;
}
/**
* Este m�todo consiste em definir o crit�rio de compara��o entre 2 objetos DeFamPer, que deve estar
* associado a um de seus atributos. No nosso caso, o atributo em quest�o � o 'periodo', representando a
* classe PerioPM, que sabe internamente se auto-ordenar.
*
* @param DeFamPer
* @return int
*/
@Override
public int compareTo(DeFamPer o) {
return this.perioPAP.compareTo(o.getPerioPAP());
}
}