Minhas classes estão ficando assim… estou com dúvida quanto o mapeamento da classe que vai tornar o questionário dinâmico, como mostrado no primeiro post.
jakefrog, sua ideia de RESPOSTA_TEM_PERGUNTA está na linha que preciso, mas a resposta tem que relacionar com determinada pergunta (na minha visão).
Por isso acho que tenho que ter uma tabela com PerguntaGatilho;RespostaGatilho; PerguntaQueSeráRendezizada.
Gostaria que me ajudasse nessa missão… tá bem difícil pensar em um jeito de realizar essa tarefa (e ainda estou certo que vou ter dificuldade em coletar a resposta do usuário… mas vamos deixar isso mais para frente)
======================
Classe Perguntas
[code]@Entity
@SequenceGenerator(name=“SEQ_PERGUNTA”)
public class Perguntas implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator=“SEQ_PERGUNTA”)
private Long id;
private String pergunta;
private String observacao;
private Boolean padrao;
@ManyToMany(fetch= FetchType.EAGER) // mais de uma pergunta pode estar relacionada com mais de uma resposta
@JoinTable(name="PERGUNTA_TEM_RESPOSTAS",
joinColumns={@JoinColumn(name="ID_PERGUNTA")},
inverseJoinColumns={@JoinColumn(name="ID_RESPOSTA")})
private List<Respostas> listRespostas;
}[/code]
Classe Respostas
[code]@Entity
@SequenceGenerator(name=“SEQ_RESPOSTA”)
public class Respostas implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO,generator="SEQ_RESPOSTA")
private Long id;
private String resposta;
private String copmlemento;
private TipoResposta tipoResposta; //enum UNICA,MULTIPLA,DESCRITIVA
@ManyToMany(fetch= FetchType.LAZY)
@JoinTable(name="PERGUNTA_TEM_RESPOSTAS",
joinColumns={@JoinColumn(name="ID_RESPOSTA")},
inverseJoinColumns={@JoinColumn(name="ID_PERGUNTA")})
private List<Perguntas> listPerguntas;
}[/code]
Classe TipoResposta (ENUM)
public enum TipoResposta {
MULTIPLA,UNICA,DESCRITIVA //Para renderizar as respostas na view com option, check ou text
}
Classe Questionário - tem as perguntas (com as respectivas opções respostas)
@Entity
@SequenceGenerator(name="SEQ_QUESTIONARIO")
public class Questionario implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO,generator="SEQ_QUESTIONARIO")
private Long id;
private String nomeQuestionario;
@ManyToMany
@JoinTable(name="QUESTIONARIO_PERGUNTAS",
joinColumns={@JoinColumn(name="ID_QUESTIONARIO")},
inverseJoinColumns={@JoinColumn(name="ID_PERGUNTA")})
private List<Perguntas> listPerguntas;
}
Classe Entrevista - um questionário respondido entre um entrevistador e um entrevistado em determinada data. Substuirei as Strings por classes
@Entity
@SequenceGenerator(name="SEQ_ENTREVISTA")
public class Entrevista implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator="SEQ_ENTREVISTA")
private Long id;
@OneToOne(mappedBy="nomeQuestionario")
private Questionario questionario;
private String usuario; // Vou substituir pela classe que representa o entrevistador
private String cliente; // '' representa o entrevistado
private String acao; // '' levará o nome/prazo/etc da ação de entrevistas
@Temporal(javax.persistence.TemporalType.DATE)
private Date dataEntrevista; //Armazena a data da entrevista
}
Classe Regras - Essa tá sendo a parte mais foda de pensar… é o que vai deixar o questionário dinâmico… nem sei se está na linha certa e por isso estou postando… heeeelp please 
@Entity
@SequenceGenerator(name="SEQ_REGRAS")
public class Regras implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator="SEQ_REGRAS")
private Long id;
private Perguntas perguntaGatilho;//Duvida!!
private Respostas respostaGatilho;
private Perguntas perguntaDisparada;
}
A dúvida é com relação a lógica, considerando que terei que:
- Exibir/Ocultar perguntas (e respectivas opções de resposta) de acordo com as respostas no questionário
- Terei que salvar as respostas do questionário em meu banco
Como relaciono essas classe regra com as outras classes? terei que mapear nas outras também?
Desde já agradeço e adianto que toda ajuda será muito bem vinda!!
Abs