/*
*
* 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.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.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
/**
* Classe relativa ao Bean para o cadastro de Recursos de producao
*
*
* @author felipe
*
*/
/* Defini��o das NamedQueries usadas
* A NamedQuerie tem que ter exatamente o nome do m�todo que a emprega
* Atencao Estamos usando order by codRecurso e nao por id.
*/
@NamedQueries(
{
@NamedQuery
( name = "Recurso.recuperaRecurso",
query = "select r from Recurso r where r.id = ? "
),
@NamedQuery
( name = "Recurso.recuperaRecursoPeloCodigo",
query = "select r from Recurso r where r.codRecurso = ?"
),
@NamedQuery(name = "Recurso.recuperaListaDeRecursosPeloCodigoLike",
query = "select r from Recurso r " +
"where r.codRecurso like '%' || upper(?) || '%' "
),
@NamedQuery(name = "Recurso.recuperaListaDeRecursosPorDescricao",
query = "select distinct(r) from Recurso r " +
"where upper(r.descrRecurso) like '%' || upper(?) || '%' " +
"order by r.codRecurso "
),
@NamedQuery
( name = "Recurso.recuperaListaDeRecursos",
query = "select r from Recurso r order by r.codRecurso asc"
),
@NamedQuery
( name = "Recurso.recuperaListaPaginadaDeRecursos",
query = "select distinct r from Recurso r order by r.codRecurso asc"
),
@NamedQuery
( name = "Recurso.recuperaListaPaginadaDeRecursosCount",
query = "select count (distinct r) from Recurso r"
),
@NamedQuery
( name = "Recurso.recuperaRecursoComListaDeRecModels",
query = "select r from Recurso r " +
"left outer join fetch r.recModels " +
"where r = ?"
),
@NamedQuery
( name = "Recurso.recuperaRecursoComListaDeCapacRecs",
query = "select r from Recurso r " +
"left outer join fetch r.capacRecs " +
"where r = ?"
),
@NamedQuery
( name = "Recurso.recuperaListaPaginadaDeRecursosComListaDeRecModels",
query = "select distinct r from Recurso r " +
"left outer join fetch r.recModels rm order by r.codRecurso asc"
),
@NamedQuery
( name = "Recurso.recuperaListaPaginadaDeRecursosComListaDeRecModelsCount",
query = "select count(distinct r) from Recurso r " +
"left outer join r.recModels "
),
@NamedQuery
( name = "Recurso.recuperaListaPaginadaDeRecursosComListaDeCapacRecs",
query = "select distinct r from Recurso r " +
"left outer join fetch r.capacRecs cr order by r.codRecurso asc"
),
@NamedQuery
( name = "Recurso.recuperaListaPaginadaDeRecursosComListaDeCapacRecsCount",
query = "select count(distinct r) from Recurso r " +
"left outer join r.capacRecs "
),
@NamedQuery
( name = "Recurso.recuperaListaDeRecursosComRecModels",
query = "select distinct r from Recurso r " +
"left outer join fetch r.recModels "
),@NamedQuery
( name = "Recurso.recuperaListaDeRecursosQueTenhamApenasRecModels",
query = "select distinct r from Recurso r " +
"inner join r.recModels "
)
})
@Entity
@Table(name="RECURSO")
@SequenceGenerator(name="SEQUENCIA",
sequenceName="SEQ_RECURSO",
allocationSize=1)
public class Recurso implements Serializable{
private static final long serialVersionUID = 1L;
/** identificador do recurso */
private Long id;
/** codigo do recurso */
private String codRecurso;
/** descricao do recurso */
private String descrRecurso;
/** UM do recurso */
private String UM;
/** custo unitario do recurso em R$ */
private double custoUnit;
private List<RecModel> recModels = new ArrayList<RecModel>();
private List<CapacRec> capacRecs = new ArrayList<CapacRec>();
public Recurso() {
}
// ********* 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;
}
@Column(nullable = false)
public String getCodRecurso() {
return codRecurso;
}
public void setCodRecurso(String codRecurso) {
this.codRecurso = codRecurso;
}
public String getDescrRecurso() {
return descrRecurso;
}
public void setDescrRecurso(String descrRecurso) {
this.descrRecurso = descrRecurso;
}
public String getUM() {
return UM;
}
public void setUM(String UM) {
this.UM = UM;
}
public double getCustoUnit() {
return custoUnit;
}
public void setCustoUnit(double custoUnit) {
this.custoUnit = custoUnit;
}
// ********* M�todos para Associa��es *********
@OneToMany(mappedBy = "recurso", fetch=FetchType.LAZY, cascade=CascadeType.REMOVE)
public List<RecModel> getRecModels() {
return recModels;
}
/**
* @param recModels the recModels to set
*/
public void setRecModels(List<RecModel> recModels) {
this.recModels = recModels;
}
@OneToMany(mappedBy = "recurso", fetch=FetchType.LAZY, cascade=CascadeType.REMOVE)
public List<CapacRec> getCapacRecs() {
if(!capacRecs.isEmpty()){
Collections.sort(capacRecs);
}
return capacRecs;
}
public void setCapacRecs(List<CapacRec> capacRecs) {
this.capacRecs = capacRecs;
}
public String toString() {
return codRecurso + " - " + descrRecurso + " - " + UM;
}
}