public void updateRelationshipPaciente(Paciente paciente) throws Exception { Long pacienteId = paciente.getCodigo(); List<QuestionarioAnamnese> questionarios = new ArrayList<QuestionarioAnamnese>(paciente.getAnamneses().values()); if (questionarios != null) { DaoPacienteQuestionarioAnamnese daoPQA = new DaoPacienteQuestionarioAnamnese(); List<PacienteQuestionarioAnamnese> pqas = daoPQA.getPQARelationshipPaciente(pacienteId); for (PacienteQuestionarioAnamnese pqa : pqas) { if (!containsPQARelationship(questionarios, pqa)) { daoPQA.remover(pqa); } } Iterator<Entry<PacienteQuestionarioAnamnese, QuestionarioAnamnese>> iterator = paciente.getAnamneses().entrySet().iterator(); while (iterator.hasNext()) { Entry<PacienteQuestionarioAnamnese, QuestionarioAnamnese> entry = iterator.next(); PacienteQuestionarioAnamnese pqa = entry.getKey(); QuestionarioAnamnese questionario = entry.getValue(); if (!containsQARelationship(pqas, questionario)) { pqa.setPacienteId(pacienteId); pqa.setQuestionarioAnamneseId(questionario.getCodigo()); daoPQA.inserir(pqa); } else { daoPQA.alterar(pqa); } } } }
@Override protected void afterLoad(QuestionarioAnamnese o) throws Exception { DaoQuestaoQuestionarioAnamnese daoQQA = new DaoQuestaoQuestionarioAnamnese(); List<QuestaoQuestionarioAnamnese> questoes = daoQQA.getQQARelationshipQA(o.getCodigo()); Map<QuestaoQuestionarioAnamnese, QuestaoAnamnese> questoesMap = new TreeMap<QuestaoQuestionarioAnamnese, QuestaoAnamnese>(); DaoQuestaoAnamnese daoQA = new DaoQuestaoAnamnese(); for (QuestaoQuestionarioAnamnese qqa : questoes) { questoesMap.put(qqa, daoQA.findByKey(qqa.getQuestaoAnamneseId())); } o.setQuestoes(questoesMap); }
@Override protected boolean beforeRemove(QuestionarioAnamnese o, Map<String, Object> params) throws Exception { EntityManager<QuestaoQuestionarioAnamnese> daoQQA = new DaoQuestaoQuestionarioAnamnese(); for (QuestaoQuestionarioAnamnese qqa : o.getQuestoes().keySet()) { daoQQA.remover(qqa); } return true; }
private boolean containsQARelationship( List<PacienteQuestionarioAnamnese> pqas, QuestionarioAnamnese questionario) { for (Iterator<PacienteQuestionarioAnamnese> iterator = pqas.iterator(); iterator.hasNext(); ) { if (iterator.next().getQuestionarioAnamneseId().equals(questionario.getCodigo())) { return true; } } return false; }