package gcom.gui.micromedicao;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.micromedicao.AlterarDatasLeiturasHelper;
import gcom.util.Util;
import java.util.ArrayList;
import java.util.Collection;
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 para altera��o das datas de leituras
*
* @author bruno
* @date 26/02/2009
*/
public class AlterarDatasLeiturasAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse arg3) throws Exception {
HttpSession sessao = httpServletRequest.getSession(false);
ActionForward retorno = actionMapping.findForward("telaSucesso");
AlterarDatasLeiturasActionForm form =
(AlterarDatasLeiturasActionForm) actionForm;
Collection<AlterarDatasLeiturasHelper> colHelper =
( Collection<AlterarDatasLeiturasHelper> )
sessao.getAttribute( "colecaoHelper" );
processar( form, colHelper );
montarPaginaSucesso(httpServletRequest,
"Datas informadas alteradas com sucesso.",
"Alterar outras datas",
"exibirAlterarDatasLeiturasAction.do?menu=sim");
return retorno;
}
/**
*
* [UC0889] Alterar Datas das Leituras
*
* Montamos o helper e alteramos as datas solicitadas
*
* @author bruno
* @date 26/02/2009
*
* @param httpServletRequest
*/
private void processar(
AlterarDatasLeiturasActionForm form,
Collection<AlterarDatasLeiturasHelper> colHelper ){
Object[] arrayHelper = colHelper.toArray();
Collection<AlterarDatasLeiturasHelper> colHelperParaAlteracao
= new ArrayList();
if ( form.getArrDtAtual() != null || form.getArrDtAnterior() != null ){
for ( int i=0; i<form.getArrDtAtual().length; i++ ){
String dtAtual = form.getArrDtAtual()[i];
String dtAnterior = form.getArrDtAnterior()[i];
// Caso ambas as datas estejam nulas elas n�o foram informadas...
if ( ( dtAtual == null || dtAtual.equals( "" ) ) &&
( dtAnterior == null || dtAnterior.equals( "" ) ) ){
continue;
}
// [FS0005] Validar data de leitura
if ( ( dtAtual == null || dtAtual.equals( "" ) ) &&
( dtAnterior != null && !dtAtual.equals( "" ) ) ){
throw new ActionServletException("atencao.informar_data_leitura_atual");
}
// [FS0005] Validar data de leitura
if ( ( dtAtual != null && !dtAtual.equals( "" ) ) &&
( dtAnterior == null || dtAtual.equals( "" ) ) ){
throw new ActionServletException("atencao.informar_data_leitura_anterior");
}
// [FS0005] Validar data de leitura
if ( Util.compararData( Util.converteStringParaDate( dtAnterior ),
Util.converteStringParaDate( dtAtual ) ) == 1 ){
throw new ActionServletException("atencao.data.anterior.atual");
}
AlterarDatasLeiturasHelper obj =
( AlterarDatasLeiturasHelper ) arrayHelper[i];
obj.setDtLeituraAnteriorNova( dtAnterior );
obj.setDtLeituraAtualNova( dtAtual );
colHelperParaAlteracao.add( obj );
}
}
Fachada fachada = Fachada.getInstancia();
fachada.alterarDatasLeituras( colHelperParaAlteracao, Integer.parseInt( form.getIdGrupo() ) );
}
}