package gcom.gui.faturamento;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import gcom.cadastro.imovel.Categoria;
import gcom.cadastro.imovel.FiltroCategoria;
import gcom.cadastro.imovel.FiltroSubCategoria;
import gcom.cadastro.imovel.Subcategoria;
import gcom.fachada.Fachada;
import gcom.faturamento.ConsumoMinimoParametro;
import gcom.faturamento.FiltroConsumoMinimoParametro;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.micromedicao.ConsumoMinimoArea;
import gcom.util.ConstantesSistema;
import gcom.util.filtro.ParametroNulo;
import gcom.util.filtro.ParametroSimples;
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;
/**
* Este caso de uso permite a inclus�o ou altera��o de um novo consumo por par�metro
*
* [UC1173] Informar Consumo por Par�metros
*
* @author Mariana Victor
* @date 20/05/2011
*/
public class ExibirInformarConsumoParametroAction extends GcomAction {
/**
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping
.findForward("exibirInformarConsumoParametro");
Fachada fachada = Fachada.getInstancia();
HttpSession sessao = httpServletRequest.getSession(false);
InformarConsumoParametroActionForm form = (InformarConsumoParametroActionForm) actionForm;
this.carregarDadosTela(fachada, httpServletRequest, sessao, form);
if (httpServletRequest.getParameter("consultar") != null) {
String ano = form.getMesAnoReferencia().substring(3, 7);
String mes = form.getMesAnoReferencia().substring(0, 2);
String anoMesInformado = ano + mes;
this.pesquisarConsumoMinimoParametro(form, anoMesInformado, sessao,
fachada, httpServletRequest);
}
if (httpServletRequest.getParameter("desfazer") != null
&& httpServletRequest.getParameter("desfazer")
.equalsIgnoreCase("S")) {
// -------------- bt DESFAZER ---------------
form.setMesAnoReferencia("");
form.setIdCategoria("-1");
form.setIdSubCategoria("-1");
sessao.setAttribute("colecaoConsumoMinimoParametro", new ArrayList());
// ------------- bt DESFAZER ---------------
}
// --------------Remover ConsumoMinimoParametro-------------
if (httpServletRequest.getParameter("remover") != null) {
httpServletRequest.setAttribute("adicionar", true);
httpServletRequest.setAttribute("informar", true);
List colecaoConsumoMinimoParametro = (List) sessao
.getAttribute("colecaoConsumoMinimoParametro");
if (colecaoConsumoMinimoParametro != null
&& !colecaoConsumoMinimoParametro.isEmpty()) {
int posicao = new Integer(httpServletRequest
.getParameter("remover")).intValue();
int index = 0;
Iterator colecaoConsumoMinimoParametroIterator = colecaoConsumoMinimoParametro.iterator();
while (colecaoConsumoMinimoParametroIterator.hasNext()) {
index++;
ConsumoMinimoParametro consumoMinimoParametro = (ConsumoMinimoParametro) colecaoConsumoMinimoParametroIterator.next();
if (index == posicao) {
colecaoConsumoMinimoParametro.remove(consumoMinimoParametro);
sessao.setAttribute("colecaoConsumoMinimoParametro", colecaoConsumoMinimoParametro);
break;
}
}
}
}
// --------------Remover ConsumoMinimoParametro-------------
return retorno;
}
void carregarDadosTela(Fachada fachada,
HttpServletRequest httpServletRequest, HttpSession sessao,
InformarConsumoParametroActionForm form) {
FiltroCategoria filtroCategoria = new FiltroCategoria();
filtroCategoria.setCampoOrderBy(FiltroCategoria.DESCRICAO);
List<Categoria> colecaoCategoria = (List) fachada.pesquisar(
filtroCategoria, Categoria.class.getName());
if (colecaoCategoria == null || colecaoCategoria.isEmpty()) {
throw new ActionServletException(
"atencao.entidade_sem_dados_para_selecao", null,
"Categoria");
}
httpServletRequest.setAttribute("colecaoCategoria", colecaoCategoria);
List<Subcategoria> colecaoSubcategoria = new ArrayList();
if (form.getIdCategoria() != null
&& !form.getIdCategoria().equalsIgnoreCase("-1")) {
FiltroSubCategoria filtroSubcategoria = new FiltroSubCategoria();
filtroSubcategoria.adicionarParametro(new ParametroSimples(
FiltroSubCategoria.CATEGORIA_ID, form.getIdCategoria()));
filtroSubcategoria
.setCampoOrderBy(FiltroSubCategoria.DESCRICAO);
colecaoSubcategoria = (List) fachada.pesquisar(filtroSubcategoria,
Subcategoria.class.getName());
if (colecaoSubcategoria == null || colecaoSubcategoria.isEmpty()) {
throw new ActionServletException(
"atencao.entidade_sem_dados_para_selecao", null,
"Subcategoria");
}
}
httpServletRequest.setAttribute("colecaoSubcategoria", colecaoSubcategoria);
List<ConsumoMinimoArea> colecaoConsumoMinimoArea;
if (sessao.getAttribute("colecaoConsumoMinimoArea") != null) {
colecaoConsumoMinimoArea = (List) sessao.getAttribute("colecaoConsumoMinimoArea");
} else {
colecaoConsumoMinimoArea = new ArrayList();
}
sessao.setAttribute("colecaoConsumoMinimoArea", colecaoConsumoMinimoArea);
if(sessao.getAttribute("adicionar")!= null){
httpServletRequest.setAttribute("adicionar",true);
}
if(sessao.getAttribute("informar")!= null){
httpServletRequest.setAttribute("informar",true);
}
}
void pesquisarConsumoMinimoParametro(InformarConsumoParametroActionForm form,
String anoMesInformado, HttpSession sessao, Fachada fachada,
HttpServletRequest httpServletRequest) {
List colecaoConsumoMinimoParametro;
sessao.removeAttribute("colecaoConsumoMinimoParametro");
if (form.getIdCategoria() != null
&& !form.getIdCategoria().equals("")
&& !form.getIdCategoria().equals("-1")) {
sessao.setAttribute("idCategoria", form.getIdCategoria());
} else {
sessao.removeAttribute("idCategoria");
}
if (form.getIdSubCategoria() != null
&& !form.getIdSubCategoria().equals("")
&& !form.getIdSubCategoria().equals("-1")) {
sessao.setAttribute("subCategoria", form.getIdSubCategoria());
} else {
sessao.removeAttribute("subCategoria");
}
sessao.setAttribute("mesAnoReferencia", form.getMesAnoReferencia());
Integer anoMesInformadoInteiro = new Integer(anoMesInformado);
Integer qtde;
/**
* [FS0005] - Validar ano maior ou igual
*/
qtde = fachada
.pesquisarAnoMesMenorAnoMesReferenciaFaturamentoGrupo(anoMesInformadoInteiro
.intValue());
if (qtde == 0) {
httpServletRequest.removeAttribute("adicionar");
httpServletRequest.removeAttribute("informar");
} else {
httpServletRequest.setAttribute("adicionar", true);
//httpServletRequest.setAttribute("informar", true);
}
/**
* [FS0005] - FIM- Validar ano maior ou igual
*/
FiltroConsumoMinimoParametro filtroConsumoMinimoParametro = new FiltroConsumoMinimoParametro();
filtroConsumoMinimoParametro.adicionarParametro(new ParametroSimples(
FiltroConsumoMinimoParametro.ANO_MES_REFERENCIA,
anoMesInformadoInteiro));
filtroConsumoMinimoParametro.adicionarParametro(new ParametroSimples(
FiltroConsumoMinimoParametro.CATEGORIA, form.getIdCategoria()));
if (form.getIdSubCategoria() != null
&& !form.getIdSubCategoria().equals("")
&& !form.getIdSubCategoria().equals("-1")) {
filtroConsumoMinimoParametro.adicionarParametro(new ParametroSimples(
FiltroConsumoMinimoParametro.SUBCATEGORIA, form.getIdSubCategoria()));
} else {
filtroConsumoMinimoParametro.adicionarParametro(new ParametroNulo(
FiltroConsumoMinimoParametro.SUBCATEGORIA));
}
filtroConsumoMinimoParametro.adicionarParametro(new ParametroSimples(
FiltroConsumoMinimoParametro.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
filtroConsumoMinimoParametro.setCampoOrderBy(FiltroConsumoMinimoParametro.NUMERO_PARAMETRO_FINAL);
filtroConsumoMinimoParametro
.adicionarCaminhoParaCarregamentoEntidade(FiltroConsumoMinimoParametro.CATEGORIA);
filtroConsumoMinimoParametro
.adicionarCaminhoParaCarregamentoEntidade(FiltroConsumoMinimoParametro.SUBCATEGORIA);
colecaoConsumoMinimoParametro = (List) fachada.pesquisar(filtroConsumoMinimoParametro,
ConsumoMinimoParametro.class.getName());
if ((colecaoConsumoMinimoParametro == null)
|| (colecaoConsumoMinimoParametro.isEmpty())) {
colecaoConsumoMinimoParametro = new ArrayList();
}
sessao.setAttribute("colecaoConsumoMinimoParametro",
colecaoConsumoMinimoParametro);
Collection colecaoConsumoMinimoParametroBase = fachada.pesquisar(filtroConsumoMinimoParametro,
ConsumoMinimoParametro.class.getName());
if ((colecaoConsumoMinimoParametroBase == null)
|| (colecaoConsumoMinimoParametroBase.isEmpty())) {
colecaoConsumoMinimoParametroBase = new ArrayList();
}
sessao.setAttribute("colecaoConsumoMinimoParametroBase",
colecaoConsumoMinimoParametroBase);
}
}