package br.usp.ime.academicdevoir.entidade; import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; import java.util.Date; import java.util.Iterator; import java.util.List; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinTable; import javax.persistence.JoinColumn; import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.OrderBy; import javax.persistence.Temporal; import javax.persistence.TemporalType; //import javax.validation.constraints.Future; @Entity public class Turma { /** * @uml.property name="id" */ @Id @GeneratedValue private Long id; /** * @uml.property name="nome" */ private String nome; /** * @uml.property name="professor" * @uml.associationEnd inverse="turmas:br.usp.ime.academicdevoir.entidade.Professor" */ @ManyToOne private Professor professor; /** * @uml.property name="alunos" * @uml.associationEnd multiplicity="(0 -1)" inverse="turmas:br.usp.ime.academicdevoir.entidade.Aluno" */ @ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE }) @JoinTable(name = "Turma_Aluno", joinColumns = @JoinColumn(name = "turma_id"), inverseJoinColumns = @JoinColumn(name = "aluno_id")) @OrderBy("nome") private Collection<Aluno> alunos = new ArrayList<Aluno>(); /** * @uml.property name="disciplina" * @uml.associationEnd */ @ManyToOne private Disciplina disciplina; /** * @uml.property name="listasDeExercicios" */ @OneToMany(mappedBy = "turma") private List<ListaDeExercicios> listasDeExercicios; /** * @uml.property name="dataLimite" * @uml.associationEnd */ @Temporal(TemporalType.DATE) private Date prazoDeMatricula; private String temPrazo; public String getTemPrazo() { return temPrazo; } public void setTemPrazo(String temPrazo) { this.temPrazo = temPrazo; } /** * @return * @uml.property name="disciplina" */ public Disciplina getDisciplina() { return disciplina; } /** * @param disciplina * @uml.property name="disciplina" */ public void setDisciplina(Disciplina disciplina) { this.disciplina = disciplina; } public Collection<Aluno> getAlunos() { return alunos; } public void setAlunos(Collection<Aluno> alunos) { this.alunos = alunos; } /** * @return * @uml.property name="nome" */ public String getNome() { return nome; } /** * @param nome * @uml.property name="nome" */ public void setNome(String nome) { this.nome = nome; } /** * @return * @uml.property name="professor" */ public Professor getProfessor() { return professor; } /** * @param professor * @uml.property name="professor" */ public void setProfessor(Professor professor) { this.professor = professor; } /** * @return * @uml.property name="id" */ public Long getId() { return id; } /** * @param id * @uml.property name="id" */ public void setId(Long id) { this.id = id; } public List<ListaDeExercicios> getListas() { return listasDeExercicios; } public void setListas(List<ListaDeExercicios> listas) { this.listasDeExercicios = listas; } public Date getPrazoDeMatricula() { return prazoDeMatricula; } public void setPrazoDeMatricula(List<Integer> prazoDeMatricula) { Calendar data = Calendar.getInstance(); if(prazoDeMatricula == null || prazoDeMatricula.size() != 3) { System.out.println("Erro!! Parametro invalido. -- Turma.setPrazoDeMatricula."); return; } data.set(prazoDeMatricula.get(2).intValue(), prazoDeMatricula.get(1).intValue() - 1, prazoDeMatricula.get(0).intValue()); this.setTemPrazo("sim"); this.prazoDeMatricula = new Date(data.getTimeInMillis()); } public boolean alunoMatriculado(Long idAluno) { Iterator<Aluno> it = alunos.iterator(); while(it.hasNext()){ Aluno a = it.next(); if(a.getId() == idAluno) return true; } return false; } }