/* * * 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 as classes de negocio * Com as classes bean * */ package modelo; import java.io.Serializable; import java.util.ArrayList; import java.util.Calendar; 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.OneToOne; import javax.persistence.SequenceGenerator; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.Transient; /** * Classe relativa ao Bean PerioPMVig que informa os per�odos do Plano Mestre da Produ��o Vigente * * * @author felipe * */ @NamedQueries( { @NamedQuery ( name = "PerioPMVig.recuperaPerioPMVig", query = "select p from PerioPMVig p where p.id = ?" ), @NamedQuery ( name = "PerioPMVig.recuperaPerioPMVigPorPeriodoPM", query = "select p from PerioPMVig p where p.periodoPM = ? " ), @NamedQuery ( name = "PerioPMVig.recuperaListaDePerioPMVigs", query = "select p from PerioPMVig p order by p.periodoPM" ), @NamedQuery ( name = "PerioPMVig.recuperaListaPaginadaDePerioPMVigs", query = "select distinct p from PerioPMVig p order by p.periodoPM" ), @NamedQuery ( name = "PerioPMVig.recuperaListaPaginadaDePerioPMVigsCount", query = "select count (distinct p) from PerioPMVig p" ), @NamedQuery ( name = "PerioPMVig.recuperaIntervaloDePerioPMVigs", query = "select p from PerioPMVig p " + "where p.periodoPM >= ? " + "and p.periodoPM <= ? " + "order by p.periodoPM " ), @NamedQuery ( name = "PerioPMVig.recuperaListaDePerioPMVigsPorPerioPAPVig", query = "select p from PerioPMVig p " + "where p.perioPAPVig = ? " + "order by p.periodoPM" ) } ) @Entity @Table(name="PerioPMVig") @SequenceGenerator(name="SEQUENCIA", sequenceName="SEQ_PERIOPMVIG", allocationSize=1) public class PerioPMVig implements Serializable, Comparable<PerioPMVig> { private static final long serialVersionUID = 1L; /** identificador do periodo do plano mestre */ private Long id; /** numero do periodo do plano mestre */ private int periodoPM; /** data inicial relativa ao periodo do plano mestre */ private Calendar dataInicial; /** data final relativa ao periodo do plano mestre */ private Calendar dataFinal; /** Numero de dias uteis na matriz no periodo do plano mestre */ private double numDiasUteisMatriz; /** Numero de dias uteis na unidade 2 no periodo do plano mestre */ private double numDiasUteisU2; /** Relativo ao perioPAP do plano agregado vigente ao qual pertence esse periodo do plano mestre vigente */ private PerioPAPVig perioPAPVig; /** Lista de registros do Plano mestre Vigente que utilizam esses periodo vigente */ private List<PMP> pmps; // ********* Construtores ********* public PerioPMVig() { } public PerioPMVig(int periodoPM, Calendar dataInicial, Calendar dataFinal, double numDiasUteisMatriz, double numDiasUteisU2) { this.periodoPM = periodoPM; this.dataInicial = dataInicial; this.dataFinal = dataFinal; this.numDiasUteisMatriz = numDiasUteisMatriz; this.numDiasUteisU2 = numDiasUteisU2; } // ********* M�todos do Tipo Get e Set ********* @Id @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQUENCIA") @Column(name="ID") public Long getId() { return id; } @SuppressWarnings("unused") public void setId(Long id) { this.id = id; } /** * @return the periodoPM */ @Column(unique=true) public int getPeriodoPM() { return periodoPM; } /** * @param periodoPM the periodoPM to set */ public void setPeriodoPM(int periodoPM) { this.periodoPM = periodoPM; } /** * @return the dataInicial */ @Temporal(value = TemporalType.DATE) public Calendar getDataInicial() { return dataInicial; } /** * @param dataInicial the dataInicial to set */ public void setDataInicial(Calendar dataInicial) { this.dataInicial = dataInicial; } /** * @return the dataFinal */ @Temporal(value = TemporalType.DATE) public Calendar getDataFinal() { return dataFinal; } /** * @param dataFinal the dataFinal to set */ public void setDataFinal(Calendar dataFinal) { this.dataFinal = dataFinal; } /** * @return the numDiasUteisMatriz */ public double getNumDiasUteisMatriz() { return numDiasUteisMatriz; } /** * @param numDiasUteisMatriz the numDiasUteisMatriz to set */ public void setNumDiasUteisMatriz(double numDiasUteisMatriz) { this.numDiasUteisMatriz = numDiasUteisMatriz; } /** * @return the numDiasUteisU2 */ public double getNumDiasUteisU2() { return numDiasUteisU2; } /** * @param numDiasUteisU2 the numDiasUteisU2 to set */ public void setNumDiasUteisU2(double numDiasUteisU2) { this.numDiasUteisU2 = numDiasUteisU2; } @ManyToOne(fetch = FetchType.LAZY) // Usa-se lazy normalmente para evitar acabar levando todo o banco @JoinColumn(name = "PERIOPAPVIG_ID",nullable = false) public PerioPAPVig getPerioPAPVig() { return perioPAPVig; } public void setPerioPAPVig(PerioPAPVig perioPAPVig) { this.perioPAPVig = perioPAPVig; } @OneToMany(mappedBy = "perioPMVig", fetch=FetchType.LAZY, cascade=CascadeType.REMOVE) public List<PMP> getPmps() { return pmps; } /** * @param pMPs the pMPs to set */ public void setPmps(List<PMP> pmps) { this.pmps = pmps; } /** * * Este m�todo consiste em definir o crit�rio de ordena��o entre 2 objetos PerioPM, que deve estar * associado a um de seus atributos. No nosso caso, o atributo em quest�o � o 'periodoPM', que � do tipo * nativo 'int', que sabe internamente se auto-ordenar, gra�as a implementa��o da API Java que o realiza. * * @author walanem.junior * @param PerioPMVig * @return int * */ @Override public int compareTo(PerioPMVig o) { return this.periodoPM < o.periodoPM ? -1 : this.periodoPM > o.periodoPM ? 1 : 0; } @Override public String toString(){ return "Periodo - "+this.periodoPM; } }