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.ItemConfiguracaoDTO;
import br.com.centralit.citcorpore.bean.RequisicaoMudancaDTO;
import br.com.centralit.citcorpore.bean.RequisicaoMudancaItemConfiguracaoDTO;
import br.com.centralit.citcorpore.negocio.ItemConfiguracaoService;
import br.com.centralit.citcorpore.negocio.RequisicaoMudancaItemConfiguracaoService;
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 RequisicaoMudancaItemConfiguracao extends AjaxFormAction implements IRequisicaoMudancaRelacionamento{
private RequisicaoMudancaItemConfiguracaoService requisicaoMudancaItemConfiguracaoService;
private ItemConfiguracaoService itemConfiguracaoService;
@Override
public Class getBeanClass() {
return RequisicaoMudancaItemConfiguracaoDTO.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<RequisicaoMudancaItemConfiguracaoDTO> ics = (ArrayList<RequisicaoMudancaItemConfiguracaoDTO>) listaDeserializada;
ArrayList<RequisicaoMudancaItemConfiguracaoDTO> icsBanco = null;
RequisicaoMudancaItemConfiguracaoDTO aux = null;
if(listaDeserializada != null){
//se n�o existir no banco, cria, caso contr�rio, atualiza
for(RequisicaoMudancaItemConfiguracaoDTO i : ics){
i.setIdRequisicaoMudanca(idRequisicaoMudanca);
aux = (RequisicaoMudancaItemConfiguracaoDTO) getRequisicaoMudancaItemConfiguracaoService().restoreByChaveComposta(i);
if(aux == null){
getRequisicaoMudancaItemConfiguracaoService().create(i);
} else {
getRequisicaoMudancaItemConfiguracaoService().update(aux);
}
}
}
//confere se existe algo no banco que n�o est� na lista salva, e deleta
icsBanco = getRequisicaoMudancaItemConfiguracaoService().listByIdRequisicaoMudanca(idRequisicaoMudanca);
if (icsBanco != null) {
for(RequisicaoMudancaItemConfiguracaoDTO i : icsBanco){
if(!requisicaoMudancaICExisteNaLista(i, ics)){
getRequisicaoMudancaItemConfiguracaoService().delete(i);
}
}
}
}
/**
* Verifica se o item existe na lista.
*
* @param item
* @param lista
* @return
*/
private boolean requisicaoMudancaICExisteNaLista(RequisicaoMudancaItemConfiguracaoDTO item, ArrayList<RequisicaoMudancaItemConfiguracaoDTO> lista){
if(lista == null) return false;
for(RequisicaoMudancaItemConfiguracaoDTO 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 requisicaoMudancaItemConfiguracaoDTO
* @throws ServiceException
* @throws Exception
*/
public ArrayList<RequisicaoMudancaItemConfiguracaoDTO> listItensRelacionadosRequisicaoMudanca(RequisicaoMudancaDTO requisicaoMudancaDTO) throws ServiceException, Exception{
ItemConfiguracaoDTO ic = null;
ArrayList<RequisicaoMudancaItemConfiguracaoDTO> listaReqMudancaIC =
getRequisicaoMudancaItemConfiguracaoService().listByIdRequisicaoMudanca(requisicaoMudancaDTO.getIdRequisicaoMudanca());
//atribui nome para os itens retornados
if(listaReqMudancaIC != null){
for(RequisicaoMudancaItemConfiguracaoDTO r : listaReqMudancaIC){
ic = getItemConfiguracaoService().restoreByIdItemConfiguracao(r.getIdItemConfiguracao());
if(ic != null){
r.setNomeItemConfiguracao(ic.getIdentificacao());
}
}
}
return listaReqMudancaIC;
}
/**
* @param document
* @param request
* @param response
* @throws Exception
* @author breno.guimaraes
*/
public void delete(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
}
/**
* @return RequisicaoMudancaItemConfigurcaoService
* @throws ServiceException
* @throws Exception
* @author breno.guimaraes
*/
private RequisicaoMudancaItemConfiguracaoService getRequisicaoMudancaItemConfiguracaoService() throws ServiceException, Exception{
if(requisicaoMudancaItemConfiguracaoService == null){
requisicaoMudancaItemConfiguracaoService = (RequisicaoMudancaItemConfiguracaoService) ServiceLocator.getInstance().getService(RequisicaoMudancaItemConfiguracaoService.class, null);
}
return requisicaoMudancaItemConfiguracaoService ;
}
/**
* @return EmpregadoService
* @throws ServiceException
* @throws Exception
* @author breno.guimaraes
*/
private ItemConfiguracaoService getItemConfiguracaoService() throws ServiceException, Exception{
if(itemConfiguracaoService == null){
itemConfiguracaoService = (ItemConfiguracaoService) ServiceLocator.getInstance().getService(ItemConfiguracaoService.class, null);
}
return itemConfiguracaoService;
}
}