package br.usp.ime.academicdevoir.entidade; //import java.util.ArrayList; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.OneToMany; import br.usp.ime.academicdevoir.dao.TagDao; @Entity /** * Entidade que representa uma disciplina cadastrada no sistema. * @author Vinicius Rezende */ public class Disciplina { /** * @uml.property name="id" */ @Id @GeneratedValue private Long id; /** * @uml.property name="nome" */ private String nome; /** * @uml.property name="turmas" multiplicity="(0 -1)" */ @OneToMany(mappedBy = "disciplina") private Collection<Turma> turmas; //TODO: estava assim: private Collection<Turma> turmas = new ArrayList<Turma>(); @OneToMany(mappedBy = "disciplina") private Collection<Questao> questoes; @ManyToMany(fetch = FetchType.LAZY) @JoinTable(name = "tags_disciplinas", joinColumns = { @JoinColumn(name = "id_disciplina") }, inverseJoinColumns = { @JoinColumn(name = "id_tag") }) protected List<Tag> tags = new ArrayList<Tag>(); /** * @return id da disciplina * @uml.property name="id" */ public Long getId() { return id; } /** * @param id id da disciplina * @uml.property name="id" */ public void setId(Long id) { this.id = id; } /** * @return nome da disciplina * @uml.property name="nome" */ public String getNome() { return nome; } /** * @param nome nome da disciplina * @uml.property name="nome" */ public void setNome(String nome) { this.nome = nome; } /** * @return lista de turmas da disciplina */ public Collection<Turma> getTurmas() { return turmas; } /** * @param turmas lista de turmas da disciplina */ public void setTurmas(Collection<Turma> turmas) { this.turmas = turmas; } public Collection<Questao> getQuestoes(){ return questoes; } public void setQuestoes(Collection<Questao> questoes){ this.questoes = questoes; } public List<Tag> getTags() { return tags; } public void setTags(String stringTags, TagDao dao) { if (stringTags == null || stringTags.equals("")) return; List<String> tags = Arrays.asList(stringTags.split(",[ ]*")); for (String nome : tags) { Tag tag = dao.buscaPeloNome(nome); if (tag == null) { tag = new Tag(nome); dao.salva(tag); } if(!this.tags.contains(tag)) this.tags.add(tag); } } }