package gcom.gui.cadastro.cliente;
import gcom.cadastro.cliente.ClienteFone;
import gcom.cadastro.cliente.IClienteFone;
import gcom.gui.GcomAction;
import java.util.Collection;
import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.validator.DynaValidatorForm;
/**
* < <Descri��o da Classe>>
*
* @author Administrador
*/
public class RemoverClienteTelefoneAction extends GcomAction {
/**
* < <Descri��o do m�todo>>
*
* @param actionMapping
* Descri��o do par�metro
* @param actionForm
* Descri��o do par�metro
* @param httpServletRequest
* Descri��o do par�metro
* @param httpServletResponse
* Descri��o do par�metro
* @return Descri��o do retorno
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Prepara o retorno da A��o
ActionForward retorno = null;
if (httpServletRequest.getParameter("tela").trim().equals("inserir")) {
retorno = actionMapping.findForward("inserirClienteTelefone");
} else if (httpServletRequest.getParameter("tela").trim().equals(
"atualizar")) {
retorno = actionMapping.findForward("atualizarClienteTelefone");
}
// Obt�m a inst�ncia da sess�o
HttpSession sessao = httpServletRequest.getSession(false);
DynaValidatorForm clienteActionForm = (DynaValidatorForm) actionForm;
Collection colecaoClienteFone = (Collection) sessao
.getAttribute("colecaoClienteFone");
ClienteFone clienteFone = null;
// Obt�m os ids de remo��o
String[] ids = (String[]) clienteActionForm.get("idRegistrosRemocao");
if (ids != null && ids.length != 0) {
if (colecaoClienteFone != null && !colecaoClienteFone.isEmpty()) {
Iterator iteratorColecaoClienteFone = colecaoClienteFone
.iterator();
while (iteratorColecaoClienteFone.hasNext()) {
clienteFone = (ClienteFone) iteratorColecaoClienteFone
.next();
for (int i = 0; i < ids.length; i++) {
if (clienteFone.getDddTelefone().equals(ids[i])) {
// Verifica se o clienteFone removido era o
// principal para adicionar o indicador de principal
// para o primeiro da lista
if (obterTimestampIdObjeto(clienteFone) == (((Long) clienteActionForm
.get("indicadorTelefonePadrao"))
.longValue())
&& colecaoClienteFone.size() > 1) {
Iterator iteratorTemp = colecaoClienteFone
.iterator();
// Pega o primeiro da lista
IClienteFone clienteFonePrimeiroDaLista = (IClienteFone) iteratorTemp
.next();
// Verifica se o primeiro da lista � o mesmo que
// ser� removido
if (clienteFonePrimeiroDaLista
.equals(clienteFone)) {
// Seta como principal o segundo da lista
clienteFonePrimeiroDaLista = (IClienteFone) iteratorTemp
.next();
}
// Seta o indicador no form
clienteActionForm
.set(
"indicadorTelefonePadrao",
new Long(
obterTimestampIdObjeto(clienteFonePrimeiroDaLista)));
}
iteratorColecaoClienteFone.remove();
}
}
}
}
clienteActionForm.set("botaoClicado", null);
// Se a cole��o de telefones tiver apenas um item, ent�o este item
// tem que estar selecionado
// como telefone principal
Iterator iterator = colecaoClienteFone.iterator();
if (colecaoClienteFone != null && colecaoClienteFone.size() == 1) {
clienteFone = (ClienteFone) iterator.next();
clienteActionForm.set("indicadorTelefonePadrao", new Long(
obterTimestampIdObjeto(clienteFone)));
}
}
return retorno;
}
}