/*
*
* 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;
@Entity
@Table(name="DeModPer")
@SequenceGenerator(name="SEQUENCIA", sequenceName="SEQ_DEMODPER", allocationSize=1)
@NamedQueries(
{
@NamedQuery(name="DeModPer.recuperaListaDeDemandaModeloPeriodo",
query="select deModPer from DeModPer deModPer " +
"left outer join deModPer.modelo modelo " +
"left outer join deModPer.periodo periodo " +
"order by modelo,periodo "
),
@NamedQuery(name="DeModPer.recuperaListaDeDeModPerPorModelo",
query="select deModPer from DeModPer deModPer " +
"where deModPer.modelo = ? "
),
@NamedQuery(name="DeModPer.recuperaDeModPerPorPeriodoEModelo",
query="select deModPer from DeModPer deModPer " +
"where deModPer.periodo = ? " +
"and deModPer.modelo = ? "
)
}
)
public class DeModPer implements Serializable, Comparable<DeModPer> {
private static final long serialVersionUID = 1L;
public DeModPer(){
}
public DeModPer(Modelo modelo, PerioPM periodo){
this.modelo = modelo;
this.periodo = periodo;
this.vendasProjetadasModelo = 0.0;
this.pedidosModelo = 0.0;
}
private Long idDeModPer;
private Modelo modelo;
private PerioPM periodo;
private Double vendasProjetadasModelo;
private Double pedidosModelo;
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQUENCIA")
@Column(name="ID")
public Long getIdDeModPer() {
return idDeModPer;
}
public void setIdDeModPer(Long idDemandaModeloPeriodo) {
this.idDeModPer = idDemandaModeloPeriodo;
}
// Lembrar de deixar como EAGER, pois na tela SEMPRE se quer exibir a informa��o do Modelo
@ManyToOne(optional=false, fetch=FetchType.EAGER)
@JoinColumn(name="MODELO_ID")
public Modelo getModelo() {
return modelo;
}
// 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="PERIOPM_ID")
public PerioPM getPeriodo() {
return periodo;
}
public void setModelo(Modelo modelo) {
this.modelo = modelo;
}
public void setPeriodo(PerioPM periodo) {
this.periodo = periodo;
}
public Double getVendasProjetadasModelo() {
return vendasProjetadasModelo;
}
public void setVendasProjetadasModelo(Double vendasProjetadasModelo) {
this.vendasProjetadasModelo = vendasProjetadasModelo;
}
public Double getPedidosModelo() {
return pedidosModelo;
}
public void setPedidosModelo(Double pedidosModelo) {
this.pedidosModelo = pedidosModelo;
}
@Override
public String toString(){
return this.modelo.getDescrModelo() + " - " + this.periodo.getPeriodoPM() + " - " +
this.vendasProjetadasModelo + " - " + this.pedidosModelo;
}
/**
* Este m�todo consiste em definir o crit�rio de compara��o entre 2 objetos DeModPer, 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.
*
* @author walanem.junior
* @param DeModPer
* @return int
*
*/
@Override
public int compareTo(DeModPer o) {
return this.periodo.compareTo(o.getPeriodo());
}
}