/* * * 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 java.util.Set; import java.util.TreeSet; 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; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.Transient; /** * Classe relativa ao Bean PerioPAP que informa os per�odos do Plano Agregado da Produ��o * * * @author daysemou/felipe * */ @NamedQueries( { @NamedQuery ( name = "PerioPAP.recuperaPerioPAP", query = "select p from PerioPAP p where p.id = ?" ), @NamedQuery ( name = "PerioPAP.recuperaPerioPAPPorPeriodoPAP", query = "select p from PerioPAP p where p.periodoPAP = ?" ), @NamedQuery ( name = "PerioPAP.recuperaListaDePerioPAPs", query = "select p from PerioPAP p order by p.periodoPAP" ), @NamedQuery ( name = "PerioPAP.recuperaListaPaginadaDePerioPAPs", query = "select distinct p from PerioPAP p order by p.periodoPAP" ), @NamedQuery ( name = "PerioPAP.recuperaListaPaginadaDePerioPAPsCount", query = "select count (distinct p) from PerioPAP p" ), @NamedQuery ( name = "PerioPAP.recuperaPerioPAPComPerioPMsPorPeriodoPAP", query = "select pap from PerioPAP pap left outer join fetch pap.perioPMs where pap.periodoPAP = ? " ), @NamedQuery ( name = "PerioPAP.recuperaIntervaloDePerioPAPs", query = "select p from PerioPAP p " + "where p.periodoPAP >= ? " + "and p.periodoPAP <= ? " ) } ) @Entity @Table(name="PerioPAP") @SequenceGenerator(name="SEQUENCIA", sequenceName="SEQ_PERIOPAP", allocationSize=1) /** * precisa implementar Comparable e deve sobrescrever o metodo compareTo para que a lista possa * se reordenar * */ public class PerioPAP implements Serializable, Comparable<PerioPAP> { private static final long serialVersionUID = 1L; /** identificador do periodo do plano agregado */ private Long id; /** numero do periodo do plano agredado */ private int periodoPAP; private List<PerioPM> perioPMs; private List<DeFamPer> deFamPers; /** * Campos Calculados obtidos a partir da lista de PerioPMs e da tabela PerioPM. * Para que nao sejam criados os campos na tabela � preciso usar o modificador "transient" e * a anotacao "@transient" nos gets dos respectivos atributos * */ /** periodo PMP inicial que corresponde ao PeriodoPAP * * Obtido a partir do primeiro PerioPM da lista de PerioPMs que compoem este PerioPAP*/ private transient int periodoPMInic; /** periodo PMP final que corresponde ao PeriodoPAP * Obtido a partir do ultimo PerioPM da lista de PerioPMs que compoem este PerioPAP*/ private transient int periodoPMFinal; /** data inicial relativa ao periodo do plano agregado. * Obtido a partir da dataIncial do primeiro PerioPM da lista de PerioPMs que compoem este PerioPAP*/ private transient Calendar dataInicial; /** data final relativa ao periodo do plano agregado. * Obtido a partir da dataFinal do ultimo PerioPM da lista de PerioPMs que compoem este PerioPAP */ private transient Calendar dataFinal; /** Numero de dias uteis na matriz relativo ao periodo do plano agregado. * � calculado a partir da soma do numDiasUteisMatriz dos perioPMs que compoem esse perioPAP * * */ private transient double numDiasUteis; // ********* Construtores ********* public PerioPAP() { } public PerioPAP( int periodoPAP, List<PerioPM> perioPMs) { this.periodoPAP = periodoPAP; this.perioPMs = perioPMs; } // ********* 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 */ public int getPeriodoPAP() { return periodoPAP; } /** * @param periodoPM the periodoPM to set */ public void setPeriodoPAP(int periodoPAP) { this.periodoPAP = periodoPAP; } public void setPerioPMs(List<PerioPM> perioPMs) { this.perioPMs = perioPMs; } @OneToMany(mappedBy="perioPAP", fetch=FetchType.EAGER) public List<PerioPM> getPerioPMs() { return perioPMs; } @OneToMany(mappedBy="perioPAP", fetch=FetchType.LAZY) public List<DeFamPer> getDeFamPers() { return deFamPers; } public void setDeFamPers(List<DeFamPer> deFamPers) { this.deFamPers = deFamPers; } @Transient public int getPeriodoPMInic() { return periodoPMInic; } public void setPeriodoPMInic(int periodoPMInic) { this.periodoPMInic = periodoPMInic; } @Transient public int getPeriodoPMFinal() { return periodoPMFinal; } public void setPeriodoPMFinal(int periodoPMFinal) { this.periodoPMFinal = periodoPMFinal; } @Transient @Temporal(value = TemporalType.DATE) public Calendar getDataInicial() { return dataInicial; } public void setDataInicial(Calendar dataInicial) { this.dataInicial = dataInicial; } @Transient @Temporal(value = TemporalType.DATE) public Calendar getDataFinal() { return dataFinal; } public void setDataFinal(Calendar dataFinal) { this.dataFinal = dataFinal; } @Transient public double getNumDiasUteis() { return numDiasUteis; } public void setNumDiasUteis(double numDiasUteis) { this.numDiasUteis = numDiasUteis; } /** * @author felipe * @return int * * Este m�todo consiste em definir o crit�rio de ordena��o entre 2 objetos PerioPAP, que deve estar * associado a um de seus atributos. No nosso caso, o atributo em quest�o � o 'periodoPAP', que � do tipo * nativo 'int', que sabe internamente se auto-ordenar, gra�as a implementa��o da API Java que o realiza. * * retorna -1 se for menor, 0 se for igual, e 1 se for maior */ @Override public int compareTo(PerioPAP o) { return this.periodoPAP < o.periodoPAP ? -1 : this.periodoPAP > o.periodoPAP ? 1 : 0; } @Override public String toString(){ return "PerioPAP [" + this.periodoPAP + "]"; } }