package gcom.gui.atendimentopublico.registroatendimento;
import gcom.atendimentopublico.ordemservico.EspecificacaoServicoTipo;
import gcom.atendimentopublico.ordemservico.EspecificacaoServicoTipoPK;
import gcom.atendimentopublico.ordemservico.FiltroServicoTipo;
import gcom.atendimentopublico.ordemservico.ServicoTipo;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;
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;
/**
* Action respons�vel pela exibi��o
*
* @author S�vio Luiz
* @created 28 de Julho de 2006
*/
public class AdicionarSolicitacaoEspecificacaoTipoServicoAction extends
GcomAction {
/**
* Description of the Method
*
* @param actionMapping
* Description of the Parameter
* @param actionForm
* Description of the Parameter
* @param httpServletRequest
* Description of the Parameter
* @param httpServletResponse
* Description of the Parameter
* @return Description of the Return Value
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Mudar isso quando tiver esquema de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
// Set no mapeamento de retorno
ActionForward retorno = actionMapping
.findForward("exibirAdicionarSolicitacaoEspecificacao");
if (sessao.getAttribute("retornarTelaPopup") != null) {
String retonarTelaPopup = (String) sessao
.getAttribute("retornarTelaPopup");
if (retonarTelaPopup.equalsIgnoreCase("atualizar")) {
retorno = actionMapping
.findForward("exibirAtualizarAdicionarSolicitacaoEspecificacao");
}
}
AdicionarSolicitacaoEspecificacaoActionForm adicionarSolicitacaoEspecificacaoActionForm = (AdicionarSolicitacaoEspecificacaoActionForm) actionForm;
// Obt�m a inst�ncia da Fachada
Fachada fachada = Fachada.getInstancia();
Collection colecaoEspecificacaoServicoTipo = null;
if (sessao.getAttribute("colecaoEspecificacaoServicoTipo") == null) {
colecaoEspecificacaoServicoTipo = new ArrayList();
} else {
colecaoEspecificacaoServicoTipo = (Collection) sessao
.getAttribute("colecaoEspecificacaoServicoTipo");
}
// seta os campos do form no objeto SolicitacaoTipoEspecificacao
EspecificacaoServicoTipo especificacaoServicoTipo = new EspecificacaoServicoTipo();
EspecificacaoServicoTipoPK especificacaoServicoTipoPK = new EspecificacaoServicoTipoPK();
// id do tipo de servico
if (adicionarSolicitacaoEspecificacaoActionForm.getIdTipoServico() != null
&& !adicionarSolicitacaoEspecificacaoActionForm
.getIdTipoServico().equals("")) {
FiltroServicoTipo filtroServicoTipo = new FiltroServicoTipo();
filtroServicoTipo.adicionarParametro(new ParametroSimples(
FiltroServicoTipo.ID,
adicionarSolicitacaoEspecificacaoActionForm
.getIdTipoServico()));
Collection servicoTipoEncontrado = fachada.pesquisar(
filtroServicoTipo, ServicoTipo.class.getName());
if (servicoTipoEncontrado != null
&& !servicoTipoEncontrado.isEmpty()) {
ServicoTipo servicoTipo = (ServicoTipo) ((List) servicoTipoEncontrado)
.get(0);
especificacaoServicoTipoPK
.setIdServicoTipo(servicoTipo.getId());
especificacaoServicoTipo.setServicoTipo(servicoTipo);
} else {
throw new ActionServletException(
"atencao.pesquisa_inexistente", null, "Servi�o Tipo");
}
} else {
throw new ActionServletException("atencao.required", null,
"Tipo do Servi�o");
}
// id do tipo de servico
if (adicionarSolicitacaoEspecificacaoActionForm.getOrdemExecucao() != null
&& !adicionarSolicitacaoEspecificacaoActionForm
.getOrdemExecucao().equals("")) {
Short ordemExecucao = new Short(
adicionarSolicitacaoEspecificacaoActionForm
.getOrdemExecucao());
// [SF0004] - Validar Valor Ordem de Servi�o 1� parte
fachada.verificarExistenciaOrdemExecucao(
colecaoEspecificacaoServicoTipo, ordemExecucao);
especificacaoServicoTipo.setOrdemExecucao(ordemExecucao);
}
// seta o PK na especifica��o do tipo de servi�o
especificacaoServicoTipo.setComp_id(especificacaoServicoTipoPK);
especificacaoServicoTipo.setUltimaAlteracao(new Date());
colecaoEspecificacaoServicoTipo.add(especificacaoServicoTipo);
sessao.setAttribute("colecaoEspecificacaoServicoTipo",
colecaoEspecificacaoServicoTipo);
return retorno;
}
}