package br.usp.ime.academicdevoir.entidade; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import javax.persistence.CascadeType; import javax.persistence.CollectionTable; import javax.persistence.ElementCollection; import javax.persistence.Embedded; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.validation.Valid; @Entity /** * Entidade que representa uma lista e Exercícios cadastrada no sistema. * @author André */ public class ListaDeExercicios { /** * @uml.property name="id" */ @Id @GeneratedValue private Long id; @Embedded @Valid private PropriedadesDaListaDeExercicios propriedades; /** * @uml.property name="turmas" * @uml.associationEnd multiplicity="(0 -1)" elementType="br.usp.ime.academicdevoir.entidade.Turma" */ @ManyToOne private Turma turma; /** * @uml.property name="questoes" * @uml.associationEnd multiplicity="(0 -1)" elementType="br.usp.ime.academicdevoir.entidade.QuestaoDaLista" */ @ElementCollection @CollectionTable(name = "questoesDaLista") private List<QuestaoDaLista> questoes; @OneToMany(mappedBy = "listaDeExercicios", fetch = FetchType.LAZY, cascade = CascadeType.ALL) private List<ListaDeRespostas> respostas; /** * @return id da lista de exercícios * @uml.property name="id" */ public Long getId() { return id; } /** * @param id id da lista de exercícios * @uml.property name="id" */ public void setId(Long id) { this.id = id; } public Turma getTurma() { return turma; } public void setTurma(Turma turma) { this.turma = turma; } public List<QuestaoDaLista> getQuestoes() { Collections.sort(questoes, new Comparator<QuestaoDaLista>() { public int compare(QuestaoDaLista q1, QuestaoDaLista q2) { return q1.getOrdem() < q2.getOrdem() ? -1 : (q1.getOrdem() > q2.getOrdem() ? +1 : 0); } }); return questoes; } public void setQuestoes(List<QuestaoDaLista> questoes) { this.questoes = questoes; } public List<ListaDeRespostas> getRespostas() { return respostas; } public void setRespostas(List<ListaDeRespostas> respostas) { this.respostas = respostas; } public PropriedadesDaListaDeExercicios getPropriedades() { return propriedades; } public void setPropriedades(PropriedadesDaListaDeExercicios propriedades) { this.propriedades = propriedades; } public void getPesos() { List<Integer> pesos = new ArrayList<Integer>(); for(QuestaoDaLista questao : questoes) { pesos.add(questao.getPeso()); } } }