/*
*
* 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 relativo a todas as classes de negocio.
* Com as classes bean
*/
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.OrderBy;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
/**
* Classe relativa ao bean que informa a capacidade de recurso cr�tico por per�odo do plano mestre
* (CAPACREC)
*
* @author felipe.arruda
*
*
*/
@NamedQueries( {
@NamedQuery(name = "CapacRec.recuperaCapacRecComPerioPM",
query = "select cr from CapacRec cr "
+ "left outer join fetch cr.perioPM " + "where cr = ?"),
@NamedQuery(name = "CapacRec.recuperaListaDeCapacRecs",
query = "select cr from CapacRec cr "
+ "order by cr.id"),
@NamedQuery(name = "CapacRec.recuperaListaDeCapacRecsPorRecurso",
query = "select cr from CapacRec cr " +
"left outer join fetch cr.recurso " +
"where cr.recurso = ?" +
"order by cr.id"),
@NamedQuery(name = "CapacRec.recuperaListaDeCapacRecsComPerioPMs",
query = "select cr from CapacRec cr "
+ "left outer join fetch cr.perioPM " + "order by cr.id"),
@NamedQuery(name = "CapacRec.recuperaListaDeCapacRecsComRecursosEPerioPMs",
query = "select cr from CapacRec cr "
+ "left outer join fetch cr.recurso "
+ "left outer join fetch cr.perioPM "
+ "order by cr.id"),
@NamedQuery(name = "CapacRec.recuperaCapacRecPorRecursoEPerioPM",
query = "select cr from CapacRec cr " +
"left outer join fetch cr.recurso " +
"left outer join fetch cr.perioPM " +
"where cr.recurso = ? and cr.perioPM = ?"
)
})
@Entity
@Table(name = "CAPACREC")
@SequenceGenerator(name = "SEQUENCIA", sequenceName = "SEQ_CAPACREC", allocationSize = 1)
public class CapacRec implements Serializable, Comparable<CapacRec>{
private static final long serialVersionUID = 1L;
/** identificador de recModel */
private Long id;
/** Informa a capacidade de cada recurso critico por periodo */
private double capacDiaria;
/** Um CapacRec � relativo a um unico recurso */
private Recurso recurso;
/** Periodo do Plano Mestre relativo ao HP - Um CapacRec � relativo a um unico periodo*/
private PerioPM perioPM;
public CapacRec() {
}
// ********* M�todos get/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 void setCapacDiaria(double capacDiaria) {
this.capacDiaria = capacDiaria;
}
public double getCapacDiaria() {
return capacDiaria;
}
// ********* M�todos para Associa��es *********
/*
* O atributo fetch indica se a associa��o deve ser carregada atrav�s da
* utiliza��o de proxy (de forma "lazy") ou se ela deve ser carregada
* antecipadamente. Neste caso, o default � EAGER (recupera��o antecipada).
*
* O elemento @JoinColumn tamb�m � opcional. Se o nome da FK n�o for declarada a
* JPA automaticamente utiliza a combina��o: nome da entidade alvo (PRODUTO,
* neste caso) concatenado ao nome da propriedade identificadora no banco de
* dados (ID, neste caso).
*/
// lazy significa que nao vai trazer automaticamente o outro elemento da
// associa��o
// com a anota�ao Manytoone permite que estando no capacRec consiga
// recuperar o recurso
// sem esta anota�ao nao adianta ter o metodo
@ManyToOne(fetch = FetchType.LAZY)
// usar lazy normalmente para evitar acabar levando todo o banco
@JoinColumn(name = "RECURSO_ID", nullable = false)
// name define o nome da chave estrangeira na tabela
public Recurso getRecurso() {
return recurso;
}
public void setRecurso(Recurso recurso) {
this.recurso = recurso;
}
@ManyToOne
/** n�o estou usando lazy pois quero os dados do perioPM sempre que mostrar
capacRec */
@JoinColumn(name = "PERIOPM_ID", nullable = false)
// name define o nome da chave estrangeira na tabela
@OrderBy("periodoPM")
public PerioPM getPerioPM() {
return perioPM;
}
public void setPerioPM(PerioPM perioPM) {
this.perioPM = perioPM;
}
/**
*
* 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 CapacRec
* @return int
*
*/
@Override
public int compareTo(CapacRec o) {
return this.perioPM.compareTo(o.getPerioPM());
}
}