package br.com.centralit.citcorpore.ajaxForms; import java.util.ArrayList; import java.util.Collection; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import br.com.centralit.citajax.html.AjaxFormAction; import br.com.centralit.citajax.html.DocumentHTML; import br.com.centralit.citcorpore.bean.RequisicaoMudancaDTO; import br.com.centralit.citcorpore.bean.RequisicaoMudancaServicoDTO; import br.com.centralit.citcorpore.bean.ServicoDTO; import br.com.centralit.citcorpore.integracao.RequisicaoMudancaServicoDao; import br.com.centralit.citcorpore.negocio.RequisicaoMudancaServicoService; import br.com.centralit.citcorpore.negocio.ServicoService; import br.com.citframework.excecao.LogicException; import br.com.citframework.excecao.ServiceException; import br.com.citframework.service.ServiceLocator; /** * @author breno.guimaraes * */ @SuppressWarnings("rawtypes") public class RequisicaoMudancaServico extends AjaxFormAction implements IRequisicaoMudancaRelacionamento{ private RequisicaoMudancaServicoService requisicaoMudancaServicoService; private ServicoService servicoService; public RequisicaoMudancaServico() { } @Override public Class getBeanClass() { return RequisicaoMudancaServicoDTO.class; } @Override public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { } /** * Registra os ics relacionados na entidade relacionamento * * @param idRequisicaoMudanca * @param listaICsDeserializada * @author breno.guimaraes * @throws Exception * @throws ServiceException * @throws LogicException */ @SuppressWarnings("unchecked") public void gravarRelacionamentos(Integer idRequisicaoMudanca, Collection listaDeserializada) throws LogicException, ServiceException, Exception{ ArrayList<RequisicaoMudancaServicoDTO> reqMudancaServicos = (ArrayList<RequisicaoMudancaServicoDTO>) listaDeserializada; ArrayList<RequisicaoMudancaServicoDTO> servicosBanco = null; RequisicaoMudancaServicoDTO aux = null; if(listaDeserializada != null){ //se n�o existir no banco, cria, caso contr�rio, atualiza for(RequisicaoMudancaServicoDTO i : reqMudancaServicos){ i.setIdRequisicaoMudanca(idRequisicaoMudanca); aux = (RequisicaoMudancaServicoDTO) getRequisicaoMudancaServicoService().restoreByChaveComposta(i); if(aux == null){ getRequisicaoMudancaServicoService().create(i); } else { getRequisicaoMudancaServicoService().update(aux); } } } //confere se existe algo no banco que n�o est� na lista salva, e deleta servicosBanco = getRequisicaoMudancaServicoService().listByIdRequisicaoMudanca(idRequisicaoMudanca); if(servicosBanco != null){ for(RequisicaoMudancaServicoDTO i : servicosBanco){ if(!requisicaoMudancaServicoExisteNaLista(i, reqMudancaServicos)){ getRequisicaoMudancaServicoService().delete(i); } } } } /** * Verifica se o item existe na lista. * * @param item * @param lista * @return */ private boolean requisicaoMudancaServicoExisteNaLista(RequisicaoMudancaServicoDTO item, ArrayList<RequisicaoMudancaServicoDTO> lista){ if(lista == null) return false; for(RequisicaoMudancaServicoDTO l : lista){ //equals sobrescrito if(l.equals(item)){ return true; } } return false; } /** * Lista os ics relacionados a requisi��o de mudan�a * e atribui o nome do item de configura��o para correta * restaura��o de suas informa��es na table * * @param RequisicaoMudancaServicoDTO * @throws ServiceException * @throws Exception */ public ArrayList<RequisicaoMudancaServicoDTO> listItensRelacionadosRequisicaoMudanca(RequisicaoMudancaDTO requisicaoMudancaDTO) throws ServiceException, Exception{ ServicoDTO req = null; ArrayList<RequisicaoMudancaServicoDTO> listaReqMudancaServico = (ArrayList<RequisicaoMudancaServicoDTO>) new RequisicaoMudancaServicoDao().findByIdMudancaEDataFim(requisicaoMudancaDTO.getIdRequisicaoMudanca()); //getRequisicaoMudancaServicoService().listByIdRequisicaoMudanca(requisicaoMudancaDTO.getIdRequisicaoMudanca()); //atribui informa��es adicionais para os itens retornados if(listaReqMudancaServico != null){ for(RequisicaoMudancaServicoDTO r : listaReqMudancaServico){ req = (ServicoDTO) getServicoService().restore(r); r.setNome(req.getNomeServico()); r.setDescricao(req.getDetalheServico()); } } return listaReqMudancaServico; } /** * @param document * @param request * @param response * @throws Exception * @author breno.guimaraes */ public void delete(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { } /** * @return EmpregadoService * @throws ServiceException * @throws Exception * @author breno.guimaraes */ private RequisicaoMudancaServicoService getRequisicaoMudancaServicoService() throws ServiceException, Exception{ if(requisicaoMudancaServicoService == null){ requisicaoMudancaServicoService = (RequisicaoMudancaServicoService) ServiceLocator.getInstance().getService(RequisicaoMudancaServicoService.class, null); } return requisicaoMudancaServicoService; } /** * @return EmpregadoService * @throws ServiceException * @throws Exception * @author breno.guimaraes */ private ServicoService getServicoService() throws ServiceException, Exception{ if(servicoService == null){ servicoService = (ServicoService) ServiceLocator.getInstance().getService(ServicoService.class, null); } return servicoService; } }