package br.com.centralit.citquestionario.negocio;
import java.util.Collection;
import java.util.Iterator;
import br.com.centralit.citged.bean.ControleGEDDTO;
import br.com.centralit.citged.integracao.ControleGEDDao;
import br.com.centralit.citquestionario.bean.GrupoQuestionarioDTO;
import br.com.centralit.citquestionario.bean.OpcaoRespostaQuestionarioDTO;
import br.com.centralit.citquestionario.bean.QuestaoQuestionarioDTO;
import br.com.centralit.citquestionario.bean.QuestionarioDTO;
import br.com.centralit.citquestionario.bean.RespostaItemQuestionarioAnexosDTO;
import br.com.centralit.citquestionario.bean.RespostaItemQuestionarioDTO;
import br.com.centralit.citquestionario.integracao.GrupoQuestionarioDao;
import br.com.centralit.citquestionario.integracao.OpcaoRespostaQuestionarioDao;
import br.com.centralit.citquestionario.integracao.QuestaoQuestionarioDao;
import br.com.centralit.citquestionario.integracao.QuestionarioDao;
import br.com.centralit.citquestionario.integracao.RespostaItemQuestionarioAnexosDao;
import br.com.centralit.citquestionario.integracao.RespostaItemQuestionarioDao;
import br.com.centralit.citquestionario.integracao.RespostaItemQuestionarioOpcoesDao;
import br.com.citframework.dto.IDto;
import br.com.citframework.excecao.LogicException;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.integracao.CrudDAO;
import br.com.citframework.integracao.TransactionControler;
import br.com.citframework.integracao.TransactionControlerImpl;
import br.com.citframework.service.CrudServiceImpl;
import br.com.citframework.util.WebUtil;
public class QuestionarioServiceBean extends CrudServiceImpl implements QuestionarioService {
private QuestionarioDao dao;
@Override
protected QuestionarioDao getDao() {
if (dao == null) {
dao = new QuestionarioDao();
}
return dao;
}
private void verificaAtributosQuestao(final QuestaoQuestionarioDTO questaoDto) throws Exception {
if (questaoDto.getSigla() != null && questaoDto.getSigla().trim().equalsIgnoreCase("")) {
questaoDto.setSigla(null);
}
if (questaoDto.getObrigatoria() == null || questaoDto.getObrigatoria().trim().equalsIgnoreCase("")) {
questaoDto.setObrigatoria("N");
}
if (questaoDto.getInfoResposta() == null || questaoDto.getInfoResposta().trim().equalsIgnoreCase("")) {
questaoDto.setInfoResposta("L");
}
if (questaoDto.getTipo() == null || questaoDto.getTipo().trim().equalsIgnoreCase("")) {
questaoDto.setTipo("Q");
}
if (questaoDto.getTituloQuestaoQuestionario() == null || questaoDto.getTituloQuestaoQuestionario().trim().equalsIgnoreCase("")) {
questaoDto.setTituloQuestaoQuestionario(" ");
}
if (questaoDto.getImprime() == null || questaoDto.getImprime().trim().equalsIgnoreCase("")) {
questaoDto.setImprime("S");
}
if (questaoDto.getCalculada() == null || questaoDto.getCalculada().trim().equalsIgnoreCase("")) {
questaoDto.setCalculada("N");
}
if (questaoDto.getEditavel() == null || questaoDto.getEditavel().trim().equalsIgnoreCase("")) {
questaoDto.setEditavel("N");
}
if (questaoDto.getUltimoValor() == null || questaoDto.getUltimoValor().trim().equalsIgnoreCase("")) {
questaoDto.setUltimoValor("N");
}
}
private void validaQuestoes(final Object arg0) throws Exception {
final QuestaoQuestionarioDao questaoDao = new QuestaoQuestionarioDao();
final QuestionarioDTO questionarioDto = (QuestionarioDTO) arg0;
final Iterator itGrupo = questionarioDto.getColGrupos().iterator();
for (; itGrupo.hasNext();) {
final GrupoQuestionarioDTO grupoDto = (GrupoQuestionarioDTO) itGrupo.next();
if (grupoDto.getColQuestoes() != null) {
final Iterator itQuestao = grupoDto.getColQuestoes().iterator();
for (; itQuestao.hasNext();) {
final QuestaoQuestionarioDTO questaoDto = (QuestaoQuestionarioDTO) itQuestao.next();
if (questaoDto.getSigla() != null && !questaoDto.getSigla().trim().equalsIgnoreCase("")) {
Integer idQuestao = questaoDto.getIdQuestaoQuestionario();
if (idQuestao == null) {
idQuestao = 0;
}
Integer idQuestaoOrigem = questaoDto.getIdQuestaoOrigem();
if (idQuestaoOrigem == null) {
idQuestaoOrigem = 0;
}
final Collection colQuestoesSigla = questaoDao.listBySiglaAndIdQuestao(questaoDto.getSigla(), idQuestaoOrigem, idQuestao);
if (colQuestoesSigla.size() > 0) {
// throw new LogicException("A sigla "+questaoDto.getSigla()+" j� est� sendo utilizada por outra quest�o.");
}
}
}
}
}
}
@Override
protected void validaCreate(final Object arg0) throws Exception {
this.validaQuestoes(arg0);
}
@Override
protected void validaDelete(final Object arg0) throws Exception {
}
@Override
protected void validaFind(final Object arg0) throws Exception {
}
@Override
protected void validaUpdate(final Object arg0) throws Exception {
this.validaQuestoes(arg0);
}
@Override
public IDto create(IDto model) throws ServiceException, LogicException {
// Instancia Objeto controlador de transacao
final CrudDAO crudDao = this.getDao();
final QuestaoQuestionarioDao questaoDao = new QuestaoQuestionarioDao();
final GrupoQuestionarioDao grupoDao = new GrupoQuestionarioDao();
final OpcaoRespostaQuestionarioDao opcaoRespostaDao = new OpcaoRespostaQuestionarioDao();
final TransactionControler tc = new TransactionControlerImpl(crudDao.getAliasDB());
final QuestionarioDTO questionarioDto = (QuestionarioDTO) model;
try {
// Faz validacao, caso exista.
this.validaCreate(questionarioDto);
// Seta o TransactionController para os DAOs
crudDao.setTransactionControler(tc);
questaoDao.setTransactionControler(tc);
grupoDao.setTransactionControler(tc);
opcaoRespostaDao.setTransactionControler(tc);
// Inicia transacao
tc.start();
// Executa operacoes pertinentes ao negocio.
((QuestionarioDTO) model).setAtivo("S");
model = crudDao.create(model);
((QuestionarioDTO) model).setIdQuestionarioOrigem(((QuestionarioDTO) model).getIdQuestionario());
crudDao.update(model);
final Iterator itGrupo = questionarioDto.getColGrupos().iterator();
int i = 1;
for (; itGrupo.hasNext();) {
GrupoQuestionarioDTO grupoDto = (GrupoQuestionarioDTO) itGrupo.next();
grupoDto.setIdQuestionario(questionarioDto.getIdQuestionario());
grupoDto.setOrdem(new Integer(i));
grupoDto = (GrupoQuestionarioDTO) grupoDao.create(grupoDto);
i++;
if (grupoDto.getColQuestoes() != null) {
final Iterator itQuestao = grupoDto.getColQuestoes().iterator();
int sequenciaQuestaoAux = 1;
for (; itQuestao.hasNext();) {
QuestaoQuestionarioDTO questaoDto = (QuestaoQuestionarioDTO) itQuestao.next();
questaoDto.setSequenciaQuestao(new Integer(sequenciaQuestaoAux));
sequenciaQuestaoAux++;
questaoDto.setIdGrupoQuestionario(grupoDto.getIdGrupoQuestionario());
if (questaoDto.getTituloQuestaoQuestionario() != null) {
questaoDto.setIdQuestaoQuestionario(null);
this.verificaAtributosQuestao(questaoDto);
questaoDto = (QuestaoQuestionarioDTO) questaoDao.create(questaoDto);
if (questaoDto.getColOpcoesResposta() != null) {
for (final Iterator itOpcoes = questaoDto.getColOpcoesResposta().iterator(); itOpcoes.hasNext();) {
final OpcaoRespostaQuestionarioDTO opcaoRespostaDto = (OpcaoRespostaQuestionarioDTO) itOpcoes.next();
opcaoRespostaDto.setIdQuestaoQuestionario(questaoDto.getIdQuestaoQuestionario());
if (opcaoRespostaDto.getExibeComplemento().equalsIgnoreCase("S") && opcaoRespostaDto.getQuestaoComplementoDto() != null) {
QuestaoQuestionarioDTO questaoComplementoDto = opcaoRespostaDto.getQuestaoComplementoDto();
questaoComplementoDto.setIdQuestaoQuestionario(null);
questaoComplementoDto.setIdGrupoQuestionario(null);
questaoComplementoDto.setIdQuestaoAgrupadora(null);
questaoComplementoDto.setIdQuestaoOrigem(null);
questaoComplementoDto.setSequenciaQuestao(1);
questaoComplementoDto.setUltimoValor(questaoDto.getUltimoValor());
this.verificaAtributosQuestao(questaoComplementoDto);
questaoComplementoDto = (QuestaoQuestionarioDTO) questaoDao.create(questaoComplementoDto);
opcaoRespostaDto.setIdQuestaoComplemento(questaoComplementoDto.getIdQuestaoQuestionario());
}
opcaoRespostaDao.create(opcaoRespostaDto);
}
}
if (questaoDto.getColQuestoesAgrupadas() != null) {
final Iterator itQuestaoAgrupada = questaoDto.getColQuestoesAgrupadas().iterator();
int sequenciaQuestaoAgrupada = 1;
for (; itQuestaoAgrupada.hasNext();) {
QuestaoQuestionarioDTO questaoAgrupadaDto = (QuestaoQuestionarioDTO) itQuestaoAgrupada.next();
questaoAgrupadaDto.setSequenciaQuestao(new Integer(sequenciaQuestaoAgrupada));
sequenciaQuestaoAgrupada++;
questaoAgrupadaDto.setIdGrupoQuestionario(grupoDto.getIdGrupoQuestionario());
questaoAgrupadaDto.setIdQuestaoAgrupadora(questaoDto.getIdQuestaoQuestionario());
questaoAgrupadaDto.setUltimoValor(questaoDto.getUltimoValor());
if (questaoAgrupadaDto.getTituloQuestaoQuestionario() != null) {
questaoAgrupadaDto.setIdQuestaoQuestionario(null);
this.verificaAtributosQuestao(questaoAgrupadaDto);
questaoAgrupadaDto = (QuestaoQuestionarioDTO) questaoDao.create(questaoAgrupadaDto);
if (questaoAgrupadaDto.getColOpcoesResposta() != null) {
for (final Iterator itOpcoes = questaoAgrupadaDto.getColOpcoesResposta().iterator(); itOpcoes.hasNext();) {
final OpcaoRespostaQuestionarioDTO opcaoRespostaDto = (OpcaoRespostaQuestionarioDTO) itOpcoes.next();
opcaoRespostaDto.setIdQuestaoQuestionario(questaoAgrupadaDto.getIdQuestaoQuestionario());
opcaoRespostaDao.create(opcaoRespostaDto);
}
}
}
}
}
if (questaoDto.getColCabecalhosLinha() != null) {
final Iterator itCabecalho = questaoDto.getColCabecalhosLinha().iterator();
int sequenciaCabecalho = 1;
for (; itCabecalho.hasNext();) {
QuestaoQuestionarioDTO cabecalho = (QuestaoQuestionarioDTO) itCabecalho.next();
cabecalho.setSequenciaQuestao(new Integer(sequenciaCabecalho));
sequenciaCabecalho++;
cabecalho.setIdGrupoQuestionario(grupoDto.getIdGrupoQuestionario());
cabecalho.setIdQuestaoAgrupadora(questaoDto.getIdQuestaoQuestionario());
if (cabecalho.getTituloQuestaoQuestionario() != null) {
cabecalho.setIdQuestaoQuestionario(null);
this.verificaAtributosQuestao(cabecalho);
cabecalho = (QuestaoQuestionarioDTO) questaoDao.create(cabecalho);
}
}
}
if (questaoDto.getColCabecalhosColuna() != null) {
final Iterator itCabecalho = questaoDto.getColCabecalhosColuna().iterator();
int sequenciaCabecalho = 1;
for (; itCabecalho.hasNext();) {
QuestaoQuestionarioDTO cabecalho = (QuestaoQuestionarioDTO) itCabecalho.next();
cabecalho.setSequenciaQuestao(new Integer(sequenciaCabecalho));
sequenciaCabecalho++;
cabecalho.setIdGrupoQuestionario(grupoDto.getIdGrupoQuestionario());
cabecalho.setIdQuestaoAgrupadora(questaoDto.getIdQuestaoQuestionario());
if (cabecalho.getTituloQuestaoQuestionario() != null) {
cabecalho.setIdQuestaoQuestionario(null);
this.verificaAtributosQuestao(cabecalho);
cabecalho = (QuestaoQuestionarioDTO) questaoDao.create(cabecalho);
}
}
}
}
}
}
}
// Faz commit e fecha a transacao.
tc.commit();
tc.close();
return model;
} catch (final Exception e) {
this.rollbackTransaction(tc, e);
}
return model;
}
@Override
public void update(final IDto model) throws ServiceException, LogicException {
// Instancia Objeto controlador de transacao
final QuestionarioDao crudDao = new QuestionarioDao();
final QuestaoQuestionarioDao questaoDao = new QuestaoQuestionarioDao();
final GrupoQuestionarioDao grupoDao = new GrupoQuestionarioDao();
final OpcaoRespostaQuestionarioDao opcaoRespostaDao = new OpcaoRespostaQuestionarioDao();
final TransactionControler tc = new TransactionControlerImpl(crudDao.getAliasDB());
QuestionarioDTO questionarioDto = (QuestionarioDTO) model;
try {
// Faz validacao, caso exista.
this.validaUpdate(model);
// Instancia ou obtem os DAOs necessarios.
// Seta o TransactionController para os DAOs
crudDao.setTransactionControler(tc);
questaoDao.setTransactionControler(tc);
grupoDao.setTransactionControler(tc);
opcaoRespostaDao.setTransactionControler(tc);
// Inicia transacao
tc.start();
if (this.existeResposta(questionarioDto.getIdQuestionario())) {
questionarioDto.setAtivo("N");
crudDao.updateNotNull(questionarioDto);
questionarioDto.setIdQuestionarioOrigem(questionarioDto.getIdQuestionarioOrigem());
questionarioDto.setIdQuestionario(null);
questionarioDto.setAtivo("S");
questionarioDto = (QuestionarioDTO) crudDao.create(questionarioDto);
} else {
questionarioDto.setAtivo("S");
crudDao.update(questionarioDto);
final Collection colGruposRecuperado = grupoDao.listByIdQuestionario(questionarioDto.getIdQuestionario());
final Iterator itGrupoRecuperado = colGruposRecuperado.iterator();
for (; itGrupoRecuperado.hasNext();) {
final GrupoQuestionarioDTO grupoDto = (GrupoQuestionarioDTO) itGrupoRecuperado.next();
questaoDao.deleteByIdGrupoQuestionario(grupoDto.getIdGrupoQuestionario());
grupoDao.delete(grupoDto);
}
}
int i = 1;
final Iterator itGrupo = questionarioDto.getColGrupos().iterator();
for (; itGrupo.hasNext();) {
GrupoQuestionarioDTO grupoDto = (GrupoQuestionarioDTO) itGrupo.next();
grupoDto.setIdQuestionario(questionarioDto.getIdQuestionario());
grupoDto.setOrdem(new Integer(i));
grupoDto = (GrupoQuestionarioDTO) grupoDao.create(grupoDto);
i++;
if (grupoDto.getColQuestoes() != null) {
final Iterator itQuestao = grupoDto.getColQuestoes().iterator();
int sequenciaQuestaoAux = 1;
for (; itQuestao.hasNext();) {
QuestaoQuestionarioDTO questaoDto = (QuestaoQuestionarioDTO) itQuestao.next();
questaoDto.setSequenciaQuestao(new Integer(sequenciaQuestaoAux));
sequenciaQuestaoAux++;
questaoDto.setIdGrupoQuestionario(grupoDto.getIdGrupoQuestionario());
if (questaoDto.getTituloQuestaoQuestionario() != null) {
questaoDto.setIdQuestaoQuestionario(null);
this.verificaAtributosQuestao(questaoDto);
questaoDto = (QuestaoQuestionarioDTO) questaoDao.create(questaoDto);
if (questaoDto.getColOpcoesResposta() != null) {
for (final Iterator itOpcoes = questaoDto.getColOpcoesResposta().iterator(); itOpcoes.hasNext();) {
final OpcaoRespostaQuestionarioDTO opcaoRespostaDto = (OpcaoRespostaQuestionarioDTO) itOpcoes.next();
opcaoRespostaDto.setIdQuestaoQuestionario(questaoDto.getIdQuestaoQuestionario());
if (opcaoRespostaDto.getExibeComplemento().equalsIgnoreCase("S") && opcaoRespostaDto.getQuestaoComplementoDto() != null) {
QuestaoQuestionarioDTO questaoComplementoDto = opcaoRespostaDto.getQuestaoComplementoDto();
questaoComplementoDto.setIdQuestaoQuestionario(null);
questaoComplementoDto.setIdGrupoQuestionario(null);
questaoComplementoDto.setIdQuestaoAgrupadora(null);
questaoComplementoDto.setIdQuestaoOrigem(null);
questaoComplementoDto.setSequenciaQuestao(1);
questaoComplementoDto.setUltimoValor(questaoDto.getUltimoValor());
this.verificaAtributosQuestao(questaoComplementoDto);
questaoComplementoDto = (QuestaoQuestionarioDTO) questaoDao.create(questaoComplementoDto);
if (questaoComplementoDto.getColOpcoesResposta() != null) {
for (final Iterator itOpcoesComp = questaoComplementoDto.getColOpcoesResposta().iterator(); itOpcoesComp.hasNext();) {
final OpcaoRespostaQuestionarioDTO opcaoRespostaCompDto = (OpcaoRespostaQuestionarioDTO) itOpcoesComp.next();
opcaoRespostaCompDto.setIdQuestaoQuestionario(questaoComplementoDto.getIdQuestaoQuestionario());
opcaoRespostaDao.create(opcaoRespostaCompDto);
}
}
opcaoRespostaDto.setIdQuestaoComplemento(questaoComplementoDto.getIdQuestaoQuestionario());
}
opcaoRespostaDto.setIdOpcaoRespostaQuestionario(null);
opcaoRespostaDao.create(opcaoRespostaDto);
}
}
if (questaoDto.getColQuestoesAgrupadas() != null) {
final Iterator itQuestaoAgrupada = questaoDto.getColQuestoesAgrupadas().iterator();
int sequenciaQuestaoAgrupada = 1;
for (; itQuestaoAgrupada.hasNext();) {
QuestaoQuestionarioDTO questaoAgrupadaDto = (QuestaoQuestionarioDTO) itQuestaoAgrupada.next();
questaoAgrupadaDto.setSequenciaQuestao(new Integer(sequenciaQuestaoAgrupada));
sequenciaQuestaoAgrupada++;
questaoAgrupadaDto.setIdGrupoQuestionario(grupoDto.getIdGrupoQuestionario());
questaoAgrupadaDto.setIdQuestaoAgrupadora(questaoDto.getIdQuestaoQuestionario());
questaoAgrupadaDto.setUltimoValor(questaoDto.getUltimoValor());
if (questaoAgrupadaDto.getTituloQuestaoQuestionario() != null) {
questaoAgrupadaDto.setIdQuestaoQuestionario(null);
this.verificaAtributosQuestao(questaoAgrupadaDto);
questaoAgrupadaDto = (QuestaoQuestionarioDTO) questaoDao.create(questaoAgrupadaDto);
if (questaoAgrupadaDto.getColOpcoesResposta() != null) {
for (final Iterator itOpcoes = questaoAgrupadaDto.getColOpcoesResposta().iterator(); itOpcoes.hasNext();) {
final OpcaoRespostaQuestionarioDTO opcaoRespostaDto = (OpcaoRespostaQuestionarioDTO) itOpcoes.next();
opcaoRespostaDto.setIdQuestaoQuestionario(questaoAgrupadaDto.getIdQuestaoQuestionario());
opcaoRespostaDao.create(opcaoRespostaDto);
}
}
}
}
}
if (questaoDto.getColCabecalhosLinha() != null) {
final Iterator itCabecalho = questaoDto.getColCabecalhosLinha().iterator();
int sequenciaCabecalho = 1;
for (; itCabecalho.hasNext();) {
QuestaoQuestionarioDTO cabecalho = (QuestaoQuestionarioDTO) itCabecalho.next();
cabecalho.setSequenciaQuestao(new Integer(sequenciaCabecalho));
sequenciaCabecalho++;
cabecalho.setIdGrupoQuestionario(grupoDto.getIdGrupoQuestionario());
cabecalho.setIdQuestaoAgrupadora(questaoDto.getIdQuestaoQuestionario());
if (cabecalho.getTituloQuestaoQuestionario() != null) {
cabecalho.setIdQuestaoQuestionario(null);
this.verificaAtributosQuestao(cabecalho);
cabecalho = (QuestaoQuestionarioDTO) questaoDao.create(cabecalho);
}
}
}
if (questaoDto.getColCabecalhosColuna() != null) {
final Iterator itCabecalho = questaoDto.getColCabecalhosColuna().iterator();
int sequenciaCabecalho = 1;
for (; itCabecalho.hasNext();) {
QuestaoQuestionarioDTO cabecalho = (QuestaoQuestionarioDTO) itCabecalho.next();
cabecalho.setSequenciaQuestao(new Integer(sequenciaCabecalho));
sequenciaCabecalho++;
cabecalho.setIdGrupoQuestionario(grupoDto.getIdGrupoQuestionario());
cabecalho.setIdQuestaoAgrupadora(questaoDto.getIdQuestaoQuestionario());
if (cabecalho.getTituloQuestaoQuestionario() != null) {
cabecalho.setIdQuestaoQuestionario(null);
this.verificaAtributosQuestao(cabecalho);
cabecalho = (QuestaoQuestionarioDTO) questaoDao.create(cabecalho);
}
}
}
}
}
}
}
// Faz commit e fecha a transacao.
tc.commit();
tc.close();
} catch (final Exception e) {
this.rollbackTransaction(tc, e);
}
}
@Override
public void updateOrdemGrupos(final IDto model) throws ServiceException, LogicException {
// Instancia Objeto controlador de transacao
final CrudDAO crudDao = this.getDao();
final GrupoQuestionarioDao grupoDao = new GrupoQuestionarioDao();
final TransactionControler tc = new TransactionControlerImpl(crudDao.getAliasDB());
final QuestionarioDTO questionarioDto = (QuestionarioDTO) model;
try {
// Seta o TransactionController para os DAOs
grupoDao.setTransactionControler(tc);
// Inicia transacao
tc.start();
final Iterator itGrupo = questionarioDto.getColGrupos().iterator();
int i = 1;
for (; itGrupo.hasNext();) {
final GrupoQuestionarioDTO grupoDto = (GrupoQuestionarioDTO) itGrupo.next();
grupoDto.setIdQuestionario(questionarioDto.getIdQuestionario());
grupoDto.setNomeGrupoQuestionario(null);
grupoDto.setOrdem(new Integer(i));
grupoDao.updateOrdem(grupoDto);
i++;
}
// Faz commit e fecha a transacao.
tc.commit();
tc.close();
} catch (final Exception e) {
this.rollbackTransaction(tc, e);
}
}
@Override
public void updateNomeGrupo(final IDto model) throws ServiceException, LogicException {
// Instancia Objeto controlador de transacao
final CrudDAO crudDao = this.getDao();
final GrupoQuestionarioDao grupoDao = new GrupoQuestionarioDao();
final TransactionControler tc = new TransactionControlerImpl(crudDao.getAliasDB());
final QuestionarioDTO questionarioDto = (QuestionarioDTO) model;
try {
// Seta o TransactionController para os DAOs
grupoDao.setTransactionControler(tc);
// Inicia transacao
tc.start();
final GrupoQuestionarioDTO grupoDto = new GrupoQuestionarioDTO();
grupoDto.setIdGrupoQuestionario(questionarioDto.getIdGrupoQuestionario());
grupoDto.setNomeGrupoQuestionario(questionarioDto.getNomeGrupoQuestionario());
grupoDto.setIdQuestionario(null);
grupoDto.setOrdem(null);
grupoDao.updateNome(grupoDto);
// Faz commit e fecha a transacao.
tc.commit();
tc.close();
} catch (final Exception e) {
this.rollbackTransaction(tc, e);
}
}
private void recuperaOpcoesResposta(final QuestaoQuestionarioDTO questDto, final Collection colRespostas) throws ServiceException, LogicException {
final RespostaItemQuestionarioOpcoesDao respItemQuestOpDao = new RespostaItemQuestionarioOpcoesDao();
final RespostaItemQuestionarioAnexosDao respostaItemQuestionarioAnexosDao = new RespostaItemQuestionarioAnexosDao();
try {
if (colRespostas != null) {
if (colRespostas.size() > 0) {
for (final Iterator itAux = colRespostas.iterator(); itAux.hasNext();) {
final RespostaItemQuestionarioDTO respostaItemDto = (RespostaItemQuestionarioDTO) itAux.next();
if (colRespostas.size() == 1) {
questDto.setRespostaItemDto(respostaItemDto);
}
final Collection colOpcoesResposta = respItemQuestOpDao.getRespostasOpcoesByIdRespostaItemQuestionario(respostaItemDto.getIdRespostaItemQuestionario());
respostaItemDto.setColOpcoesResposta(colOpcoesResposta);
if (questDto.getTipoQuestao().equalsIgnoreCase("M")) { // Galeria Multimidia
final Collection colRelacaoAnexos = respostaItemQuestionarioAnexosDao.listByIdRespostaItemQuestionario(respostaItemDto.getIdRespostaItemQuestionario());
if (colRelacaoAnexos != null) {
final ControleGEDDao controleGedDao = new ControleGEDDao();
for (final Iterator itAnexos = colRelacaoAnexos.iterator(); itAnexos.hasNext();) {
final RespostaItemQuestionarioAnexosDTO respAnexoDto = (RespostaItemQuestionarioAnexosDTO) itAnexos.next();
ControleGEDDTO controleGedDto = new ControleGEDDTO();
final String idControleGEDStr = respAnexoDto.getCaminhoAnexo();
if (idControleGEDStr != null) {
Integer idControleGED;
try {
idControleGED = new Integer(idControleGEDStr);
} catch (final Exception e) {
idControleGED = new Integer(0);
}
controleGedDto.setIdControleGED(idControleGED);
controleGedDto = (ControleGEDDTO) controleGedDao.restore(controleGedDto);
if (controleGedDto != null) {
respAnexoDto.setNomeArquivo(controleGedDto.getNomeArquivo());
respAnexoDto.setIdControleGED(controleGedDto.getIdControleGED());
}
}
}
}
respostaItemDto.setColRelacaoAnexos(colRelacaoAnexos);
}
}
questDto.setSerializeRespostas(WebUtil.serializeObjects(colRespostas));
questDto.setColRespostas(colRespostas);
}
}
} catch (final LogicException e) {
throw new ServiceException(e);
} catch (final Exception e) {
throw new ServiceException(e);
}
}
private void obtemRespostaQuestao(final QuestaoQuestionarioDTO questDto, final Integer idIdentificadorResposta) throws ServiceException, LogicException {
final RespostaItemQuestionarioDao respostaDao = new RespostaItemQuestionarioDao();
try {
Collection colRespostas = null;
if (questDto.getTipo().equalsIgnoreCase("L")) {
colRespostas = respostaDao.listByIdIdentificadorAndIdTabela(idIdentificadorResposta, questDto.getIdQuestaoQuestionario());
} else {
colRespostas = respostaDao.listByIdIdentificadorAndIdQuestao(idIdentificadorResposta, questDto.getIdQuestaoQuestionario());
}
this.recuperaOpcoesResposta(questDto, colRespostas);
} catch (final LogicException e) {
throw new ServiceException(e);
} catch (final Exception e) {
throw new ServiceException(e);
}
}
private void obtemUltimaResposta(final QuestaoQuestionarioDTO questDto, final Integer idSolicitacaoServico) throws ServiceException, LogicException {
/*
* if (questDto.getUltimoValor().equalsIgnoreCase("N")) {
* return;
* }
* RespostaItemQuestionarioDao respostaDao = new RespostaItemQuestionarioDao();
* QuestaoQuestionarioDao questaoDao = new QuestaoQuestionarioDao();
* try {
* Collection colRespostas = new ArrayList();
* if (questDto.getTipo().equalsIgnoreCase("L") || questDto.getTipo().equalsIgnoreCase("M")) {
* if (questDto.getColQuestoesAgrupadas() != null && questDto.getColQuestoesAgrupadas().size() > 0) {
* // recupera a �ltima questao respondida da matriz ou tabela
* RespostaItemQuestionarioDTO respostaItemDto = respostaDao.getUltimaRespostaBySiglaQuestaoAgrupadora(questDto.getSigla(), idPessoa);
* if (respostaItemDto != null) {
* Collection colRespQuestaoAgrupada = null;
* QuestaoQuestionarioDTO questaoAuxDto = new QuestaoQuestionarioDTO();
* // recupera as respostas da ultima matriz ou tabela
* questaoAuxDto.setIdQuestaoQuestionario(respostaItemDto.getIdQuestaoQuestionario());
* questaoAuxDto = (QuestaoQuestionarioDTO) questaoDao.restore(questaoAuxDto);
* colRespQuestaoAgrupada = respostaDao.listByIdIdentificadorAndIdTabela(respostaItemDto.getIdIdentificadorResposta(), questaoAuxDto.getIdQuestaoAgrupadora());
* if (colRespQuestaoAgrupada != null && colRespQuestaoAgrupada.size() > 0) {
* for (Iterator itResp = colRespQuestaoAgrupada.iterator(); itResp.hasNext();){
* RespostaItemQuestionarioDTO respQuestaoDto = (RespostaItemQuestionarioDTO) itResp.next();
* questaoAuxDto.setIdQuestaoQuestionario(respQuestaoDto.getIdQuestaoQuestionario());
* questaoAuxDto = (QuestaoQuestionarioDTO) questaoDao.restore(questaoAuxDto);
* if (questaoAuxDto.getSigla() != null) {
* // localiza a quest�o com a mesma sigla
* for (Iterator itQuest = questDto.getColQuestoesAgrupadas().iterator(); itQuest.hasNext();){
* QuestaoQuestionarioDTO questaoAgrupadaDto = (QuestaoQuestionarioDTO) itQuest.next();
* if (questaoAgrupadaDto.getSigla() != null && questaoAgrupadaDto.getSigla().equalsIgnoreCase(questaoAuxDto.getSigla())) {
* respQuestaoDto.setIdQuestaoQuestionario(questaoAgrupadaDto.getIdQuestaoQuestionario());
* if (questaoAgrupadaDto.getColRespostas() == null) {
* questaoAgrupadaDto.setColRespostas(new ArrayList());
* }
* questaoAgrupadaDto.getColRespostas().add(respQuestaoDto);
* if (questDto.getTipo().equalsIgnoreCase("M")) {
* questaoAgrupadaDto.setRespostaItemDto(respQuestaoDto);
* }
* colRespostas.add(respQuestaoDto);
* break;
* }
* }
* }
* }
* }
* }
* }
* }else{
* // recupera a �ltima resposta dos outros tipos de quest�o
* RespostaItemQuestionarioDTO respostaItemDto = null;
* if (questDto.getUltimoValor().equalsIgnoreCase("S")) {
* respostaItemDto = respostaDao.getUltimaRespostaByIdQuestao(questDto.getIdQuestaoOrigem(), idPessoa);
* }else if (questDto.getSigla() != null){
* respostaItemDto = respostaDao.getUltimaRespostaBySiglaQuestao(questDto.getSigla(), idPessoa);
* }
* if (respostaItemDto != null) {
* // associa a resposta � quest�o
* respostaItemDto.setIdQuestaoQuestionario(questDto.getIdQuestaoQuestionario());
* colRespostas.add(respostaItemDto);
* }
* }
* // monta as op��es de resposta
* recuperaOpcoesResposta(questDto, colRespostas);
* // limpa o identificador e id da resposta
* for (Iterator itAux = colRespostas.iterator(); itAux.hasNext();){
* RespostaItemQuestionarioDTO respostaItemDto = (RespostaItemQuestionarioDTO)itAux.next();
* respostaItemDto.setIdIdentificadorResposta(null);
* respostaItemDto.setIdRespostaItemQuestionario(null);
* }
* }catch(LogicException e){
* throw new ServiceException(e);
* }catch(Exception e){
* throw new ServiceException(e);
* }
*/
}
@Override
public IDto restore(final IDto model) throws ServiceException, LogicException {
final GrupoQuestionarioDao grupoDao = new GrupoQuestionarioDao();
final QuestaoQuestionarioDao questaoDao = new QuestaoQuestionarioDao();
final OpcaoRespostaQuestionarioDao opcaoRespostaDao = new OpcaoRespostaQuestionarioDao();
final RespostaItemQuestionarioDao respostaDao = new RespostaItemQuestionarioDao();
final RespostaItemQuestionarioOpcoesDao respItemQuestOpDao = new RespostaItemQuestionarioOpcoesDao();
QuestionarioDTO questionarioDto = null;
final QuestionarioDTO questionarioDtoParm = (QuestionarioDTO) model;
try {
if (questionarioDtoParm.getIdIdentificadorResposta() == null && questionarioDtoParm.getIdQuestionarioOrigem() != null) {
questionarioDto = this.restoreByIdOrigem(questionarioDtoParm.getIdQuestionarioOrigem());
}
if (questionarioDto == null) {
questionarioDto = (QuestionarioDTO) this.getDao().restore(model);
}
if (questionarioDto == null) {
return null;
}
final Collection colGruposRecuperado = grupoDao.listByIdQuestionario(questionarioDto.getIdQuestionario());
if(colGruposRecuperado == null){
return null;
}
questionarioDto.setColGrupos(colGruposRecuperado);
final Iterator it = colGruposRecuperado.iterator();
for (; it.hasNext();) {
final GrupoQuestionarioDTO grupoDto = (GrupoQuestionarioDTO) it.next();
final Collection colQuestoes = questaoDao.listByIdGrupoQuestionario(grupoDto.getIdGrupoQuestionario());
if (colQuestoes != null) {
final Iterator itQuestoes = colQuestoes.iterator();
for (; itQuestoes.hasNext();) {
final QuestaoQuestionarioDTO questDto = (QuestaoQuestionarioDTO) itQuestoes.next();
if (questDto.getValorPermitido1() == null) {
questDto.setValorPermitido1(new Double(0));
}
if (questDto.getValorPermitido2() == null) {
questDto.setValorPermitido2(new Double(0));
}
final Collection colOpcoesResposta = opcaoRespostaDao.listByIdQuestaoQuestionario(questDto.getIdQuestaoQuestionario());
if (colOpcoesResposta != null) {
for (final Iterator itOpcao = colOpcoesResposta.iterator(); itOpcao.hasNext();) {
final OpcaoRespostaQuestionarioDTO opcaoResposta = (OpcaoRespostaQuestionarioDTO) itOpcao.next();
if (opcaoResposta.getExibeComplemento() != null && opcaoResposta.getExibeComplemento().equalsIgnoreCase("S")
&& opcaoResposta.getIdQuestaoComplemento() != null) {
QuestaoQuestionarioDTO questaoComplementoDto = new QuestaoQuestionarioDTO();
questaoComplementoDto.setIdQuestaoQuestionario(opcaoResposta.getIdQuestaoComplemento());
questaoComplementoDto = (QuestaoQuestionarioDTO) questaoDao.restore(questaoComplementoDto);
if (questionarioDtoParm.getIdIdentificadorResposta() != null) {
this.obtemRespostaQuestao(questaoComplementoDto, questionarioDtoParm.getIdIdentificadorResposta());
} else if (questaoComplementoDto.getUltimoValor() != null && !questaoComplementoDto.getUltimoValor().equalsIgnoreCase("N")
&& questionarioDtoParm.getModo() != null && questionarioDtoParm.getModo().equalsIgnoreCase(QuestionarioDTO.MODO_VISUALIZACAO)) {
this.obtemUltimaResposta(questaoComplementoDto, questionarioDtoParm.getIdSolicitacaoServico());
}
final Collection colOpcoesRespostaComplemento = opcaoRespostaDao.listByIdQuestaoQuestionario(questaoComplementoDto.getIdQuestaoQuestionario());
questaoComplementoDto.setSerializeOpcoesResposta(WebUtil.serializeObjects(colOpcoesRespostaComplemento));
questaoComplementoDto.setColOpcoesResposta(colOpcoesRespostaComplemento);
opcaoResposta.setSerializeQuestaoComplemento(WebUtil.serializeObject(questaoComplementoDto));
opcaoResposta.setQuestaoComplementoDto(questaoComplementoDto);
}
}
}
questDto.setSerializeOpcoesResposta(WebUtil.serializeObjects(colOpcoesResposta));
questDto.setColOpcoesResposta(colOpcoesResposta);
final Collection colQuestoesAgrupadas = questaoDao.listByIdQuestaoAgrupadora(questDto.getIdQuestaoQuestionario());
questDto.setColQuestoesAgrupadas(colQuestoesAgrupadas);
if (colQuestoesAgrupadas != null) {
final Iterator itQuestoesAgrup = colQuestoesAgrupadas.iterator();
for (; itQuestoesAgrup.hasNext();) {
final QuestaoQuestionarioDTO questAgrup = (QuestaoQuestionarioDTO) itQuestoesAgrup.next();
if (questionarioDtoParm.getIdIdentificadorResposta() != null) {
Collection colRespostas = null;
if (questAgrup.getTipo().equalsIgnoreCase("L")) {
colRespostas = respostaDao.listByIdIdentificadorAndIdTabela(questionarioDtoParm.getIdIdentificadorResposta(),
questAgrup.getIdQuestaoQuestionario());
} else {
colRespostas = respostaDao.listByIdIdentificadorAndIdQuestao(questionarioDtoParm.getIdIdentificadorResposta(),
questAgrup.getIdQuestaoQuestionario());
}
if (colRespostas != null) {
if (colRespostas.size() > 0) {
for (final Iterator itAux = colRespostas.iterator(); itAux.hasNext();) {
final RespostaItemQuestionarioDTO respostaItemDto = (RespostaItemQuestionarioDTO) itAux.next();
if (colRespostas.size() == 1) {
questAgrup.setRespostaItemDto(respostaItemDto);
}
if (questAgrup.getTipoQuestao().equalsIgnoreCase("R") || questAgrup.getTipoQuestao().equalsIgnoreCase("C")
|| questAgrup.getTipoQuestao().equalsIgnoreCase("X")) {
final Collection colOpcoesRespostaAgrup = respItemQuestOpDao.getRespostasOpcoesByIdRespostaItemQuestionario(respostaItemDto
.getIdRespostaItemQuestionario());
respostaItemDto.setColOpcoesResposta(colOpcoesRespostaAgrup);
}
}
questAgrup.setSerializeRespostas(WebUtil.serializeObjects(colRespostas));
questAgrup.setColRespostas(colRespostas);
}
}
}
final Collection colOpcoesRespostaAgrup = opcaoRespostaDao.listByIdQuestaoQuestionario(questAgrup.getIdQuestaoQuestionario());
questAgrup.setSerializeOpcoesResposta(WebUtil.serializeObjects(colOpcoesRespostaAgrup));
questAgrup.setColOpcoesResposta(colOpcoesRespostaAgrup);
}
}
if (questionarioDtoParm.getIdIdentificadorResposta() != null) {
this.obtemRespostaQuestao(questDto, questionarioDtoParm.getIdIdentificadorResposta());
} else if (questDto.getUltimoValor() != null && !questDto.getUltimoValor().equalsIgnoreCase("N") && questionarioDtoParm.getModo() != null
&& questionarioDtoParm.getModo().equalsIgnoreCase(QuestionarioDTO.MODO_VISUALIZACAO)) {
this.obtemUltimaResposta(questDto, questionarioDtoParm.getIdSolicitacaoServico());
}
final Collection colCabecalhosLinha = questaoDao.listCabecalhosLinha(questDto.getIdQuestaoQuestionario());
questDto.setSerializeCabecalhosLinha(WebUtil.serializeObjects(colCabecalhosLinha));
questDto.setColCabecalhosLinha(colCabecalhosLinha);
final Collection colCabecalhosColuna = questaoDao.listCabecalhosColuna(questDto.getIdQuestaoQuestionario());
questDto.setSerializeCabecalhosColuna(WebUtil.serializeObjects(colCabecalhosColuna));
questDto.setColCabecalhosColuna(colCabecalhosColuna);
}
}
grupoDto.setColQuestoes(colQuestoes);
}
return questionarioDto;
} catch (final LogicException e) {
throw new ServiceException(e);
} catch (final Exception e) {
throw new ServiceException(e);
}
}
@Override
public Collection listByIdEmpresa(final Integer idEmpresa) throws Exception {
return this.getDao().listByIdEmpresa(idEmpresa);
}
@Override
public Collection listByIdEmpresaAndAplicacao(final Integer idEmpresa, final String aplicacao) throws Exception {
return this.getDao().listByIdEmpresaAndAplicacao(idEmpresa, aplicacao);
}
public boolean existeResposta(final Integer idQuestionario) throws Exception {
return this.getDao().existeResposta(idQuestionario);
}
@Override
public QuestionarioDTO restoreByIdOrigem(final Integer idQuestionarioOrigem) throws Exception {
return this.getDao().restoreByIdOrigem(idQuestionarioOrigem);
}
@Override
public void copyGroup(final IDto model) throws ServiceException, LogicException {
// Instancia Objeto controlador de transacao
final CrudDAO crudDao = this.getDao();
final QuestaoQuestionarioDao questaoDao = new QuestaoQuestionarioDao();
final GrupoQuestionarioDao grupoDao = new GrupoQuestionarioDao();
final OpcaoRespostaQuestionarioDao opcaoRespostaDao = new OpcaoRespostaQuestionarioDao();
final TransactionControler tc = new TransactionControlerImpl(crudDao.getAliasDB());
final QuestionarioDTO questionarioDto = (QuestionarioDTO) model;
try {
// Seta o TransactionController para os DAOs
questaoDao.setTransactionControler(tc);
grupoDao.setTransactionControler(tc);
opcaoRespostaDao.setTransactionControler(tc);
// Inicia transacao
tc.start();
final Collection colQuestoes = questaoDao.listByIdGrupoQuestionario(questionarioDto.getIdGrupoQuestionario());
GrupoQuestionarioDTO grupoDto = new GrupoQuestionarioDTO();
grupoDto.setIdQuestionario(questionarioDto.getIdQuestionarioCopiar());
grupoDto.setNomeGrupoQuestionario(questionarioDto.getNomeGrupoQuestionario());
grupoDto = (GrupoQuestionarioDTO) grupoDao.create(grupoDto);
final Iterator itQuestoes = colQuestoes.iterator();
for (; itQuestoes.hasNext();) {
QuestaoQuestionarioDTO questaoQuestionarioDto = (QuestaoQuestionarioDTO) itQuestoes.next();
questaoQuestionarioDto.setIdGrupoQuestionario(grupoDto.getIdGrupoQuestionario());
final Collection colOpcoesResposta = opcaoRespostaDao.listByIdQuestaoQuestionario(questaoQuestionarioDto.getIdQuestaoQuestionario());
questaoQuestionarioDto = (QuestaoQuestionarioDTO) questaoDao.create(questaoQuestionarioDto);
if (colOpcoesResposta != null) {
for (final Iterator itOp = colOpcoesResposta.iterator(); itOp.hasNext();) {
final OpcaoRespostaQuestionarioDTO opRespDto = (OpcaoRespostaQuestionarioDTO) itOp.next();
opRespDto.setIdQuestaoQuestionario(questaoQuestionarioDto.getIdQuestaoQuestionario());
opcaoRespostaDao.create(opRespDto);
}
}
}
// Faz commit e fecha a transacao.
tc.commit();
tc.close();
} catch (final Exception e) {
this.rollbackTransaction(tc, e);
}
}
@Override
public Collection listOpcoesRespostaItemQuestionarioOpcoes(final Integer idRespostaItemQuestionario) throws Exception {
final RespostaItemQuestionarioOpcoesDao dao = new RespostaItemQuestionarioOpcoesDao();
return dao.getRespostasOpcoesByIdRespostaItemQuestionario(idRespostaItemQuestionario);
}
@Override
public boolean existeQuestaoObrigatoria(final Integer idQuestionario) throws Exception {
return this.getDao().existeQuestaoObrigatoria(idQuestionario);
}
}