package gcom.gui.operacional.abastecimento;
import gcom.cadastro.geografico.Bairro;
import gcom.cadastro.geografico.BairroArea;
import gcom.cadastro.geografico.Municipio;
import gcom.gui.GcomAction;
import gcom.operacional.DistritoOperacional;
import gcom.operacional.SetorAbastecimento;
import gcom.operacional.ZonaAbastecimento;
import gcom.operacional.abastecimento.AbastecimentoProgramacao;
import gcom.operacional.abastecimento.ManutencaoProgramacao;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* [UC0414] - Informar Programa��o de Abastecimento e Manuten��o
*
* @author Rafael Pinto
* @date 14/11/2006
*/
public class ExibirInformarProgramacaoAbastecimentoManutencaoAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("informarProgramacaoAbastecimentoManutencao");
InformarProgramacaoAbastecimentoManutencaoActionForm form =
(InformarProgramacaoAbastecimentoManutencaoActionForm) actionForm;
String tipoOperacao = httpServletRequest.getParameter("tipoOperacao");
if(tipoOperacao != null && !tipoOperacao.equals("") && tipoOperacao.equals("E")){
String indice = null;
boolean ehAbastecimento = true;
if(httpServletRequest.getParameter("removerAbastecimento") != null){
indice = httpServletRequest.getParameter("removerAbastecimento");
}else{
indice = httpServletRequest.getParameter("removerManutencao");
ehAbastecimento = false;
}
this.removeProgramacao(form,ehAbastecimento,new Integer(indice));
}else if(tipoOperacao == null || tipoOperacao.equals("")){
Collection colecaoProgramacaoAbastecimento =
(Collection) this.getSessao(httpServletRequest).getAttribute("colecaoProgramacaoAbastecimento");
Collection colecaoProgramacaoManutencao =
(Collection) this.getSessao(httpServletRequest).getAttribute("colecaoProgramacaoManutencao");
form.setAbastecimentoProgramacao(colecaoProgramacaoAbastecimento);
form.setManutencaoProgramacao(colecaoProgramacaoManutencao);
String mesAnoReferencia =
(String) this.getSessao(httpServletRequest).getAttribute("mesAnoReferencia");
Municipio mun = (Municipio) this.getSessao(httpServletRequest).getAttribute("municipio");
Bairro bair = (Bairro) this.getSessao(httpServletRequest).getAttribute("bairro");
BairroArea bairroArea = (BairroArea) this.getSessao(httpServletRequest).getAttribute("bairroArea");
String municipio = ""+mun.getId();
String nomeMunicipio = mun.getNome();
String bairro = "";
String nomeBairro = "";
String areaBairro = "";
String nomeAreaBairro = "";
if ( bair != null && !bair.equals("") ) {
bairro = ""+bair.getCodigo();
nomeBairro = bair.getNome();
areaBairro = ""+bairroArea.getId();
nomeAreaBairro = bairroArea.getNome();
}
String sistemaAbastecimento = null;
String nomeSistemaAbastecimento = null;
String setorAbastecimento = null;
String nomeSetorAbastecimento = null;
String zonaAbastecimento = null;
String nomeZonaAbastecimento = null;
String distritoOperacional = null;
String nomeDistritoOperacional = null;
if(bairroArea != null && !bairroArea.equals("")){
if(bairroArea.getDistritoOperacional() != null){
DistritoOperacional distrito = bairroArea.getDistritoOperacional();
distritoOperacional = ""+bairroArea.getDistritoOperacional().getId();
nomeDistritoOperacional = bairroArea.getDistritoOperacional().getDescricao();
if(distrito.getSetorAbastecimento() != null){
SetorAbastecimento setor = distrito.getSetorAbastecimento();
setorAbastecimento = ""+setor.getId();
nomeSetorAbastecimento = setor.getDescricao();
if(setor.getSistemaAbastecimento() != null){
sistemaAbastecimento = ""+setor.getSistemaAbastecimento().getId();
nomeSistemaAbastecimento = setor.getSistemaAbastecimento().getDescricao();
}
}
if(distrito.getZonaAbastecimento() != null){
ZonaAbastecimento zona = distrito.getZonaAbastecimento();
zonaAbastecimento = ""+zona.getId();
nomeZonaAbastecimento = zona.getDescricao();
}
}
}
form.setMesAnoReferencia(mesAnoReferencia);
form.setMunicipio(municipio);
form.setNomeMunicipio(nomeMunicipio);
form.setBairro(bairro);
form.setNomeBairro(nomeBairro);
form.setAreaBairro(areaBairro);
form.setNomeAreaBairro(nomeAreaBairro);
form.setSistemaAbastecimento(sistemaAbastecimento);
form.setNomeSistemaAbastecimento(nomeSistemaAbastecimento);
form.setSetorAbastecimento(setorAbastecimento);
form.setNomeSetorAbastecimento(nomeSetorAbastecimento);
form.setZonaAbastecimento(zonaAbastecimento);
form.setNomeZonaAbastecimento(nomeZonaAbastecimento);
form.setDistritoOperacional(distritoOperacional);
form.setNomeDistritoOperacional(nomeDistritoOperacional);
}
this.ordenaColecao(httpServletRequest);
return retorno;
}
/**
* Ordena a colecao de abastecimento
*
* @author Rafael Pinto
* @date 19/11/2006
*
* @param InformarProgramacaoAbastecimentoManutencaoActionForm
* @param ehAbastecimento
* @param indice
*/
private void ordenaColecao(HttpServletRequest httpServletRequest) {
Collection colecaoProgramacaoAbastecimento =
(Collection) this.getSessao(httpServletRequest).getAttribute("colecaoProgramacaoAbastecimento");
Collection colecaoProgramacaoManutencao =
(Collection) this.getSessao(httpServletRequest).getAttribute("colecaoProgramacaoManutencao");
Collections.sort((List) colecaoProgramacaoAbastecimento,
new Comparator() {
public int compare(Object a, Object b) {
AbastecimentoProgramacao abastecimento1 = (AbastecimentoProgramacao) a;
AbastecimentoProgramacao abastecimento2 = (AbastecimentoProgramacao) b;
Date dataInicio1 = abastecimento1.getDataInicio();
Date dataInicio2 = abastecimento2.getDataInicio();
return dataInicio1.compareTo(dataInicio2);
}
}
);
Collections.sort((List) colecaoProgramacaoManutencao,
new Comparator() {
public int compare(Object a, Object b) {
ManutencaoProgramacao manutencao1 = (ManutencaoProgramacao) a;
ManutencaoProgramacao manutencao2 = (ManutencaoProgramacao) b;
Date dataInicio1 = manutencao1.getDataInicio();
Date dataInicio2 = manutencao2.getDataInicio();
return dataInicio1.compareTo(dataInicio2);
}
}
);
}
/**
* Remove Programa��o
*
* [SB0002] - Remover Programa��o de Abastecimento
* [SB0005] - Remover Programa��o de Abastecimento
*
* @author Rafael Pinto
* @date 14/11/2006
*
* @param InformarProgramacaoAbastecimentoManutencaoActionForm
* @param ehAbastecimento
* @param indice
*/
private void removeProgramacao(InformarProgramacaoAbastecimentoManutencaoActionForm form,
boolean ehAbastecimento,Integer indice) {
if(ehAbastecimento){
Collection novaColecao = new ArrayList();
int index = 0;
for (Iterator iter = form.getAbastecimentoProgramacao().iterator(); iter.hasNext();) {
index++;
AbastecimentoProgramacao element = (AbastecimentoProgramacao) iter.next();
if (index != indice.intValue()) {
novaColecao.add(element);
}else{
//Verifca se tem id porque que dizer que esse objeto persiste no banco
if(element.getId() != null){
form.getAbastecimentoProgramacaoRemovidas().add(element);
}
}
}
form.setAbastecimentoProgramacao(novaColecao);
}else{
Collection novaColecao = new ArrayList();
int index = 0;
for (Iterator iter = form.getManutencaoProgramacao().iterator(); iter.hasNext();) {
index++;
ManutencaoProgramacao element = (ManutencaoProgramacao) iter.next();
if (index != indice.intValue()) {
novaColecao.add(element);
}else{
//Verifca se tem id porque que dizer que esse objeto persiste no banco
if(element.getId() != null){
form.getManutencaoProgramacaoRemovidas().add(element);
}
}
}
form.setManutencaoProgramacao(novaColecao);
}
}
}