package br.com.centralit.citquestionario.negocio;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import br.com.centralit.citquestionario.bean.QuestaoQuestionarioDTO;
import br.com.centralit.citquestionario.bean.RespostaItemAuxiliarDTO;
import br.com.centralit.citquestionario.bean.RespostaItemQuestionarioAnexosDTO;
import br.com.centralit.citquestionario.bean.RespostaItemQuestionarioDTO;
import br.com.centralit.citquestionario.bean.RespostaItemQuestionarioOpcoesDTO;
import br.com.centralit.citquestionario.integracao.QuestaoQuestionarioDao;
import br.com.centralit.citquestionario.integracao.RespostaItemQuestionarioAnexosDao;
import br.com.centralit.citquestionario.integracao.RespostaItemQuestionarioDao;
import br.com.centralit.citquestionario.integracao.RespostaItemQuestionarioOpcoesDao;
import br.com.centralit.citquestionario.util.ConstantesQuestionario;
import br.com.citframework.excecao.LogicException;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.integracao.Condition;
import br.com.citframework.integracao.TransactionControler;
import br.com.citframework.integracao.TransactionControlerImpl;
import br.com.citframework.service.CrudServiceImpl;
import br.com.citframework.util.UtilDatas;
import br.com.citframework.util.UtilI18N;
public class RespostaItemQuestionarioServiceBean extends CrudServiceImpl implements RespostaItemQuestionarioService {
private RespostaItemQuestionarioDao dao;
@Override
protected RespostaItemQuestionarioDao getDao() {
if (dao == null) {
dao = new RespostaItemQuestionarioDao();
}
return dao;
}
/**
* Recebe uma Collection de RespostaItemAuxiliarDTO e processa.
*
* @param tc
* @param col
* @param idIdentificadorResposta
* @throws Exception
*/
public Collection processCollection(final TransactionControler tc, final Collection col, final Collection colAnexos, final Integer idIdentificadorResposta,
final HttpServletRequest request) throws Exception {
QuestaoQuestionarioDTO questaoQuestionarioDto;
RespostaItemQuestionarioDTO respostaItemQuestionarioDto;
RespostaItemQuestionarioOpcoesDTO respostaItemQuestionarioOpcoesDto;
final QuestaoQuestionarioDao questaoDao = new QuestaoQuestionarioDao();
final RespostaItemQuestionarioDao respostaItemDao = new RespostaItemQuestionarioDao();
final RespostaItemQuestionarioOpcoesDao respItemOpcoesDao = new RespostaItemQuestionarioOpcoesDao();
final RespostaItemQuestionarioAnexosDao respostaItemQuestionarioAnexosDao = new RespostaItemQuestionarioAnexosDao();
questaoDao.setTransactionControler(tc);
respostaItemDao.setTransactionControler(tc);
respItemOpcoesDao.setTransactionControler(tc);
respostaItemQuestionarioAnexosDao.setTransactionControler(tc);
final Collection result = new ArrayList(); // Esta collection apenas armazena os CIDS. Para verificacao entre outro passo sobre vigilancia epidemiologica.
if (colAnexos != null && colAnexos.size() > 0) {
boolean bPrimVez = true;
RespostaItemQuestionarioDTO respostaItemQuestionarioDtoAux = new RespostaItemQuestionarioDTO();
for (final Iterator it = colAnexos.iterator(); it.hasNext();) {
final RespostaItemQuestionarioAnexosDTO respItemAnexo = (RespostaItemQuestionarioAnexosDTO) it.next();
if (bPrimVez) {
respostaItemQuestionarioDtoAux.setIdQuestaoQuestionario(respItemAnexo.getIdQuestaoQuestionario());
respostaItemQuestionarioDtoAux.setIdIdentificadorResposta(idIdentificadorResposta);
respostaItemQuestionarioDtoAux = (RespostaItemQuestionarioDTO) respostaItemDao.create(respostaItemQuestionarioDtoAux);
}
bPrimVez = false;
respItemAnexo.setIdRespostaItemQuestionario(respostaItemQuestionarioDtoAux.getIdRespostaItemQuestionario());
respostaItemQuestionarioAnexosDao.create(respItemAnexo);
}
}
if (col != null) {
for (final Iterator it = col.iterator(); it.hasNext();) {
final RespostaItemAuxiliarDTO respItem = (RespostaItemAuxiliarDTO) it.next();
if (respItem.getFieldName().length() < 9) {
continue;
}
if (respItem.getFieldName().substring(0, 9).equalsIgnoreCase("campoDyn_")) {
String idQuestaoStr = respItem.getFieldName().substring(9);
if (idQuestaoStr.indexOf(" ") != -1) {
idQuestaoStr = idQuestaoStr.substring(0, idQuestaoStr.indexOf(" "));
}
questaoQuestionarioDto = new QuestaoQuestionarioDTO();
questaoQuestionarioDto.setIdQuestaoQuestionario(new Integer(Integer.parseInt(idQuestaoStr)));
questaoQuestionarioDto = (QuestaoQuestionarioDTO) questaoDao.restore(questaoQuestionarioDto);
respostaItemQuestionarioDto = new RespostaItemQuestionarioDTO();
respostaItemQuestionarioDto.setIdIdentificadorResposta(idIdentificadorResposta);
respostaItemQuestionarioDto.setIdQuestaoQuestionario(new Integer(Integer.parseInt(idQuestaoStr)));
if (questaoQuestionarioDto.getTipoQuestao().equalsIgnoreCase("T") || questaoQuestionarioDto.getTipoQuestao().equalsIgnoreCase("L")
|| questaoQuestionarioDto.getTipoQuestao().equalsIgnoreCase("A") || questaoQuestionarioDto.getTipoQuestao().equalsIgnoreCase("9")) {
respostaItemQuestionarioDto.setRespostaTextual(respItem.getFieldValue());
if (questaoQuestionarioDto.getObrigatoria().equalsIgnoreCase("S")) {
if (respostaItemQuestionarioDto.getRespostaTextual().equalsIgnoreCase("")) {
throw new LogicException(UtilI18N.internacionaliza(request, "questionario.camposObrigatoriosNaoPreenchidos"));
}
}
}
if (questaoQuestionarioDto.getTipoQuestao().equalsIgnoreCase("N")) {
if (respItem.getFieldValue() != null && !respItem.getFieldValue().trim().equalsIgnoreCase("")) {
String aux = respItem.getFieldValue().replaceAll("\\.", "");
aux = aux.replaceAll("\\,", "\\.");
try {
respostaItemQuestionarioDto.setRespostaNumero(Double.valueOf(aux));
} catch (final Exception e) {
e.printStackTrace();
respostaItemQuestionarioDto.setRespostaNumero(new Double(0));
}
if (respostaItemQuestionarioDto.getRespostaNumero() == null && questaoQuestionarioDto.getObrigatoria().equalsIgnoreCase("S")) {
throw new LogicException(UtilI18N.internacionaliza(request, "questionario.camposObrigatoriosNaoPreenchidos"));
}
}
}
if (questaoQuestionarioDto.getTipoQuestao().equalsIgnoreCase("V")) {
if (respItem.getFieldValue() != null && !respItem.getFieldValue().trim().equalsIgnoreCase("")) {
String aux = respItem.getFieldValue().replaceAll("\\.", "");
aux = aux.replaceAll("\\,", "\\.");
try {
respostaItemQuestionarioDto.setRespostaValor(Double.valueOf(aux));
} catch (final Exception e) {
e.printStackTrace();
respostaItemQuestionarioDto.setRespostaValor(new Double(0));
}
if (respostaItemQuestionarioDto.getRespostaValor() == null && questaoQuestionarioDto.getObrigatoria().equalsIgnoreCase("S")) {
throw new LogicException(UtilI18N.internacionaliza(request, "questionario.camposObrigatoriosNaoPreenchidos"));
}
}
}
if (questaoQuestionarioDto.getTipoQuestao().equalsIgnoreCase("%")) {
if (respItem.getFieldValue() != null && !respItem.getFieldValue().trim().equalsIgnoreCase("")) {
String aux = respItem.getFieldValue().replaceAll("\\.", "");;
aux = aux.replaceAll("\\,", "\\.");
try {
respostaItemQuestionarioDto.setRespostaPercentual(Double.valueOf(aux));
} catch (final Exception e) {
e.printStackTrace();
respostaItemQuestionarioDto.setRespostaPercentual(new Double(0));
}
if (respostaItemQuestionarioDto.getRespostaPercentual() == null && questaoQuestionarioDto.getObrigatoria().equalsIgnoreCase("S")) {
throw new LogicException(UtilI18N.internacionaliza(request, "questionario.camposObrigatoriosNaoPreenchidos"));
}
}
}
if (questaoQuestionarioDto.getTipoQuestao().equalsIgnoreCase("D")) {
if (respItem.getFieldValue() != null && !respItem.getFieldValue().trim().equalsIgnoreCase("")) {
try {
respostaItemQuestionarioDto.setRespostaData(UtilDatas.strToSQLDate(respItem.getFieldValue()));
} catch (final Exception e) {
e.printStackTrace();
respostaItemQuestionarioDto.setRespostaData(null);
}
if (respostaItemQuestionarioDto.getRespostaData() == null && questaoQuestionarioDto.getObrigatoria().equalsIgnoreCase("S")) {
throw new LogicException(UtilI18N.internacionaliza(request, "questionario.camposObrigatoriosNaoPreenchidos"));
}
}
}
if (questaoQuestionarioDto.getTipoQuestao().equalsIgnoreCase("H")) {
if (respItem.getFieldValue() != null && !respItem.getFieldValue().trim().equalsIgnoreCase("")) {
respostaItemQuestionarioDto.setRespostaHora(respItem.getFieldValue().replaceAll(":", ""));
}
}
if (questaoQuestionarioDto.getTipoQuestao().equalsIgnoreCase("Q")) { // Frequencia Cardiaca
if (respItem.getFieldValue() != null && !respItem.getFieldValue().trim().equalsIgnoreCase("")) {
final String[] resp = respItem.getFieldValue().split(ConstantesQuestionario.CARACTER_SEPARADOR);
if (resp != null) {
if (resp[0] != null && !resp[0].trim().equalsIgnoreCase("")) {
try {
respostaItemQuestionarioDto.setRespostaValor(new Double(resp[0]));
} catch (final Exception e) {
e.printStackTrace();
respostaItemQuestionarioDto.setRespostaValor(new Double(0));
}
}
}
if (respostaItemQuestionarioDto.getRespostaValor() == null && questaoQuestionarioDto.getObrigatoria().equalsIgnoreCase("S")) {
throw new LogicException(UtilI18N.internacionaliza(request, "questionario.camposObrigatoriosNaoPreenchidos"));
}
}
}
if (questaoQuestionarioDto.getTipoQuestao().equalsIgnoreCase("G")) { // Mes e Ano
if (respItem.getFieldValue() != null && !respItem.getFieldValue().trim().equalsIgnoreCase("")) {
final String[] resp = respItem.getFieldValue().split(ConstantesQuestionario.CARACTER_SEPARADOR);
if (resp != null) {
if (resp[0] != null && !resp[0].trim().equalsIgnoreCase("")) {
respostaItemQuestionarioDto.setRespostaMes(new Integer(resp[0]));
}
if (resp.length > 1) {
if (resp[1] != null && !resp[1].trim().equalsIgnoreCase("")) {
respostaItemQuestionarioDto.setRespostaAno(new Integer(resp[1]));
}
}
}
}
}
if (questaoQuestionarioDto.getTipoQuestao().equalsIgnoreCase("*")) { // % e Valor
if (respItem.getFieldValue() != null && !respItem.getFieldValue().trim().equalsIgnoreCase("")) {
final String[] resp = respItem.getFieldValue().split(ConstantesQuestionario.CARACTER_SEPARADOR);
if (resp != null) {
if (resp[0] != null && !resp[0].trim().equalsIgnoreCase("")) {
resp[0] = resp[0].replaceAll("\\.", "");
resp[0] = resp[0].replaceAll("\\,", "\\.");
respostaItemQuestionarioDto.setRespostaPercentual(new Double(resp[0]));
}
if (resp.length > 1) {
if (resp[1] != null && !resp[1].trim().equalsIgnoreCase("")) {
resp[1] = resp[1].replaceAll("\\.", "");
resp[1] = resp[1].replaceAll("\\,", "\\.");
respostaItemQuestionarioDto.setRespostaValor(new Double(resp[1]));
}
}
}
}
}
if (questaoQuestionarioDto.getTipoQuestao().equalsIgnoreCase("1")) { // Faixa de Valores Numeros
if (respItem.getFieldValue() != null && !respItem.getFieldValue().trim().equalsIgnoreCase("")) {
final String[] resp = respItem.getFieldValue().split(ConstantesQuestionario.CARACTER_SEPARADOR);
if (resp != null) {
if (resp[0] != null && !resp[0].trim().equalsIgnoreCase("")) {
resp[0] = resp[0].replaceAll("\\.", "");
resp[0] = resp[0].replaceAll("\\,", "\\.");
respostaItemQuestionarioDto.setRespostaNumero(new Double(resp[0]));
}
if (resp.length > 1) {
if (resp[1] != null && !resp[1].trim().equalsIgnoreCase("")) {
resp[1] = resp[1].replaceAll("\\.", "");
resp[1] = resp[1].replaceAll("\\,", "\\.");
respostaItemQuestionarioDto.setRespostaNumero2(new Double(resp[1]));
}
}
}
if (respostaItemQuestionarioDto.getRespostaNumero2() == null && questaoQuestionarioDto.getObrigatoria().equalsIgnoreCase("S")) {
throw new LogicException(UtilI18N.internacionaliza(request, "questionario.camposObrigatoriosNaoPreenchidos"));
}
}
}
if (questaoQuestionarioDto.getTipoQuestao().equalsIgnoreCase("2")) { // Faixa de Valores Decimais
if (respItem.getFieldValue() != null && !respItem.getFieldValue().trim().equalsIgnoreCase("")) {
final String[] resp = respItem.getFieldValue().split(ConstantesQuestionario.CARACTER_SEPARADOR);
if (resp != null) {
if (resp[0] != null && !resp[0].trim().equalsIgnoreCase("")) {
resp[0] = resp[0].replaceAll("\\.", "");
resp[0] = resp[0].replaceAll("\\,", "\\.");
respostaItemQuestionarioDto.setRespostaValor(new Double(resp[0]));
}
if (resp.length > 1) {
if (resp[1] != null && !resp[1].trim().equalsIgnoreCase("")) {
resp[1] = resp[1].replaceAll("\\.", "");
resp[1] = resp[1].replaceAll("\\,", "\\.");
respostaItemQuestionarioDto.setRespostaValor2(new Double(resp[1]));
}
}
}
if (respostaItemQuestionarioDto.getRespostaValor2() == null && questaoQuestionarioDto.getObrigatoria().equalsIgnoreCase("S")) {
throw new LogicException(UtilI18N.internacionaliza(request, "questionario.camposObrigatoriosNaoPreenchidos"));
}
}
}
if (questaoQuestionarioDto.getTipoQuestao().equalsIgnoreCase("8")) { // Listagem
if (respItem.getFieldValue() != null && !respItem.getFieldValue().trim().equalsIgnoreCase("")) {
respostaItemQuestionarioDto.setRespostaIdListagem(respItem.getFieldValue().trim());
}
}
respostaItemQuestionarioDto = (RespostaItemQuestionarioDTO) respostaItemDao.create(respostaItemQuestionarioDto);
if (!respItem.isMultiple()) {
if (questaoQuestionarioDto.getTipoQuestao().equalsIgnoreCase("R") || questaoQuestionarioDto.getTipoQuestao().equalsIgnoreCase("C")
|| questaoQuestionarioDto.getTipoQuestao().equalsIgnoreCase("X")) {
respostaItemQuestionarioOpcoesDto = new RespostaItemQuestionarioOpcoesDTO();
respostaItemQuestionarioOpcoesDto.setIdOpcaoRespostaQuestionario(new Integer(Integer.parseInt(respItem.getFieldValue())));
respostaItemQuestionarioOpcoesDto.setIdRespostaItemQuestionario(respostaItemQuestionarioDto.getIdRespostaItemQuestionario());
respItemOpcoesDao.create(respostaItemQuestionarioOpcoesDto);
}
} else {
if (questaoQuestionarioDto.getTipoQuestao().equalsIgnoreCase("R") || questaoQuestionarioDto.getTipoQuestao().equalsIgnoreCase("C")
|| questaoQuestionarioDto.getTipoQuestao().equalsIgnoreCase("X")) {
respItem.setFieldValue(respItem.getFieldValue() + ConstantesQuestionario.CARACTER_SEPARADOR);
final String[] resp = respItem.getFieldValue().split(ConstantesQuestionario.CARACTER_SEPARADOR);
if (resp != null) {
for (int i = 0; i < resp.length; i++) {
if (resp[i] != null && !resp[i].trim().equalsIgnoreCase("")) {
respostaItemQuestionarioOpcoesDto = new RespostaItemQuestionarioOpcoesDTO();
try {
respostaItemQuestionarioOpcoesDto.setIdOpcaoRespostaQuestionario(new Integer(Integer.parseInt(resp[i])));
respostaItemQuestionarioOpcoesDto.setIdRespostaItemQuestionario(respostaItemQuestionarioDto.getIdRespostaItemQuestionario());
respItemOpcoesDao.create(respostaItemQuestionarioOpcoesDto);
} catch (final Exception e) {
e.printStackTrace();
}
}
}
}
}
}
}
}
}
return result;
}
@Override
public void deleteByIdQuestaoAndIdentificadorResposta(final Integer idQuestaoQuestionario, final Integer idIdentificadorResposta) throws Exception {
this.getDao().deleteByIdQuestaoAndIdentificadorResposta(idQuestaoQuestionario, idIdentificadorResposta);
}
@Override
public Collection listByIdIdentificadorAndIdQuestao(final Integer idIdentificadorResposta, final Integer idQuestaoQuestionario) throws Exception {
return this.getDao().listByIdIdentificadorAndIdQuestao(idIdentificadorResposta, idQuestaoQuestionario);
}
@Override
public Collection getRespostasOpcoesByIdRespostaItemQuestionario(final Integer idRespostaItemQuestionario) throws Exception {
final RespostaItemQuestionarioOpcoesDao respostaItemQuestionarioOpcoesDao = new RespostaItemQuestionarioOpcoesDao();
return respostaItemQuestionarioOpcoesDao.getRespostasOpcoesByIdRespostaItemQuestionario(idRespostaItemQuestionario);
}
@Override
public void deleteByIdIdentificadorResposta(final RespostaItemQuestionarioDTO resposta) throws ServiceException, LogicException {
final RespostaItemQuestionarioDao dao = this.getDao();
final TransactionControler tc = new TransactionControlerImpl(dao.getAliasDB());
try {
this.deleteByIdIdentificadorResposta(resposta, tc);
tc.commit();
tc.close();
} catch (final Exception e) {
e.printStackTrace();
this.rollbackTransaction(tc, e);
}
}
@Override
public void deleteByIdIdentificadorResposta(final RespostaItemQuestionarioDTO resposta, final TransactionControler tc) throws Exception {
this.validaDelete(resposta);
final RespostaItemQuestionarioDao dao = this.getDao();
final RespostaItemQuestionarioAnexosDao riqaDao = new RespostaItemQuestionarioAnexosDao();
final RespostaItemQuestionarioOpcoesDao riqoDao = new RespostaItemQuestionarioOpcoesDao();
dao.setTransactionControler(tc);
riqaDao.setTransactionControler(tc);
riqoDao.setTransactionControler(tc);
tc.start();
final List where = new ArrayList();
where.add(new Condition("idIdentificadorResposta", "=", resposta.getIdIdentificadorResposta()));
final Collection respostas = dao.findByCondition(where, new ArrayList());
if (respostas != null && !respostas.isEmpty()) {
RespostaItemQuestionarioDTO resp = null;
for (final Iterator it = respostas.iterator(); it.hasNext();) {
resp = (RespostaItemQuestionarioDTO) it.next();
riqoDao.deleteByIdRespostaItemQuestionario(resp.getIdRespostaItemQuestionario());
riqaDao.deleteByIdRespostaItemQuestionario(resp.getIdRespostaItemQuestionario());
}
dao.deleteByIdIdentificadorResposta(resposta.getIdIdentificadorResposta());
}
}
}