/*
*
* 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 java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.List;
import javax.persistence.CascadeType;
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.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
import xfuzzy.lang.Specification;
/**
* Classe relativa ao Bean para o cadastro de Excec�oMens
* Define as mensagens de Excecao para determinada combinacao PlanoModelo, tipo de Excecao e periodo de origem
* a que esta se refere.
*
*
* @author felipe
*
*/
@NamedQueries(
{
@NamedQuery
( name = "ExcecaoMens.recuperaExcecaoMens",
query = "select ex from ExcecaoMens ex where ex.id = ? "
),
@NamedQuery(name="ExcecaoMens.recuperaExcecaoMensPorPlanoModeloEExcecaoEPeriodoOrigemEPeriodoDestino",
query = "select exm from ExcecaoMens exm " +
"left outer join fetch exm.planoModelo pl " +
"left outer join fetch exm.excecao ex " +
"left outer join exm.periodoOrigem pm " +
"left outer join exm.periodoDestino pd " +
"where pl = ? " +
"and ex = ? " +
"and po = ? "+
"and pd = ? "
),
@NamedQuery
( name = "ExcecaoMens.recuperaListaDeExcecaoMensPorExcecao",
query = "select exm from ExcecaoMens exm " +
"left outer join fetch exm.excecao ex " +
"where ex = ? "
),
@NamedQuery
( name = "ExcecaoMens.recuperaListaDeExcecaoMensPorPlanoModelo",
query = "select exm from ExcecaoMens exm " +
"left outer join fetch exm.planoModelo pl " +
"where pl = ? "
),
@NamedQuery
( name = "ExcecaoMens.recuperaListaDeExcecaoMensPorPlanoModeloEExcecao",
query = "select exm from ExcecaoMens exm " +
"left outer join fetch exm.planoModelo pl " +
"left outer join fetch exm.excecao ex " +
"where pl = ? "+
"and ex = ? "
),
@NamedQuery(name="ExcecaoMens.recuperaListaDeExcecaoMensPorPlanoModeloEExcecaoEPeriodoOrigem",
query = "select exm from ExcecaoMens exm " +
"left outer join fetch exm.planoModelo pl " +
"left outer join fetch exm.excecao ex " +
"left outer join exm.periodoOrigem pm " +
"where pl = ? " +
"and ex = ? " +
"and pm = ? "
),
@NamedQuery
( name = "ExcecaoMens.recuperaListaDeExcecaoMens",
query = "select exm "+
"from ExcecaoMens exm "
),
@NamedQuery
( name = "ExcecaoMens.recuperaListaPaginadaDeExcecaoMens",
query = "select distinct exm from ExcecaoMens exm"
),
@NamedQuery
( name = "ExcecaoMens.recuperaListaPaginadaDeExcecaoMensCount",
query = "select count (distinct exm) from ExcecaoMens exm"
),
})
@Entity
@Table(name="EXCECAOMENS")
@SequenceGenerator(name="SEQUENCIA",
sequenceName="SEQ_EXCECAOMENS",
allocationSize=1)
/**
* ExcecaoMens - Armazena mensagem de exce��o por planoModelo, por tipo de exce��o e por periodo.
*
* @author arruda
*
*/
public class ExcecaoMens implements Serializable, Comparable<ExcecaoMens>{
private static final long serialVersionUID = 1L;
/** identificador da ExcecaoMens */
private Long id;
/** Quantidade de pe�as do modelo relativa a exce��o */
private Double quantidade;
/**
* Atributo que cont�m a excecao a que essa mensagem se refere.
*/
private Excecao excecao;
/**
* Atributo que indica o planoModelo a que essa mensagem se refere.
*/
private PlanoModelo planoModelo;
/**
* Atributo que indica o periodoPM de origem a que essa mensagem se refere.
*/
private PerioPM periodoOrigem;
/**
* Atributo que indica o periodoPM de destino a que essa mensagem se refere.
*/
private PerioPM periodoDestino;
public ExcecaoMens() {
}
// ********* M�todos do Tipo Get e Set *********
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQUENCIA")
@Column(name="ID")
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Double getQuantidade() {
return quantidade;
}
public void setQuantidade(Double quantidade) {
this.quantidade = quantidade;
}
// ********* M�todos para Associa��es *********
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="EXCECAO_ID", nullable=false)
public Excecao getExcecao() {
return excecao;
}
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="PLANOMODELO_ID", nullable=false)
public PlanoModelo getPlanoModelo() {
return planoModelo;
}
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="PERIODOPM_ID1", nullable=true)
public PerioPM getPeriodoOrigem() {
return periodoOrigem;
}
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="PERIODOPM_ID2", nullable=true)
public PerioPM getPeriodoDestino() {
return periodoDestino;
}
public void setPeriodoDestino(PerioPM periodoDestino) {
this.periodoDestino = periodoDestino;
}
public void setPeriodoOrigem(PerioPM periodoOrigem) {
this.periodoOrigem = periodoOrigem;
}
public void setExcecao(Excecao excecao) {
this.excecao = excecao;
}
public void setPlanoModelo(PlanoModelo planoModelo) {
this.planoModelo = planoModelo;
}
@Override
public String toString() {
return this.planoModelo + " - " + this.excecao + " (" + this.periodoOrigem + " / " + this.periodoDestino+ ")";
}
@Override
public int compareTo(ExcecaoMens o) {
return this.excecao.compareTo(o.getExcecao());
}
}