package gcom.gui.faturamento;
import gcom.cadastro.imovel.Categoria;
import gcom.cadastro.imovel.Subcategoria;
import gcom.faturamento.ConsumoMinimoParametro;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import java.math.BigDecimal;
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 javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class AdicionarConsumoParametroAction 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("exibirAdicionarConsumoParametro");
HttpSession sessao = httpServletRequest.getSession(false);
AdicionarConsumoParametroActionForm form = (AdicionarConsumoParametroActionForm) actionForm;
String numeroConsumo = form.getNumeroConsumo();
String numeroParametroFormatado = form.getNumeroParametro().replace(".", "")
.replace(",", ".");
BigDecimal numeroParametro = new BigDecimal(numeroParametroFormatado);
List<ConsumoMinimoParametro> colecaoConsumoMinimoParametroAux = (List) sessao
.getAttribute("colecaoConsumoMinimoParametro");
if (sessao.getAttribute("colecaoConsumoMinimoParametro") != null) {
List<ConsumoMinimoParametro> colecaoConsumoMinimoParametro = (List) sessao
.getAttribute("colecaoConsumoMinimoParametro");
if (httpServletRequest.getParameter("adicionar") != null) {
String ano = form.getMesAnoReferencia().substring(3, 7);
String mes = form.getMesAnoReferencia().substring(0, 2);
String anoMesInformado = ano + mes;
String idCategoria = (String) sessao.getAttribute("idCategoria");
String idSubCategoria = null;
if (sessao.getAttribute("idSubCategoria") != null
&& !sessao.getAttribute("idSubCategoria").equals("")
&& !sessao.getAttribute("idSubCategoria").equals("-1")) {
idSubCategoria = (String) sessao.getAttribute("idSubCategoria");
}
ConsumoMinimoParametro consumoMinimoParametro = new ConsumoMinimoParametro();
consumoMinimoParametro.setAnoMesReferencia((new Integer(
anoMesInformado)).intValue());
Categoria categoria = new Categoria();
categoria.setId(new Integer(idCategoria));
consumoMinimoParametro.setCategoria(categoria);
if (idSubCategoria != null) {
Subcategoria subcategoria = new Subcategoria();
subcategoria.setId(new Integer(idSubCategoria));
consumoMinimoParametro.setSubCategoria(subcategoria);
}
consumoMinimoParametro.setNumeroConsumo(new Integer(numeroConsumo));
consumoMinimoParametro.setNumeroParametroFinal(numeroParametro);
consumoMinimoParametro.setIndicadorUso(ConstantesSistema.INDICADOR_USO_ATIVO);
consumoMinimoParametro.setUltimaAlteracao(new Date());
/**
* [FS0006] � Validar par�metro igual
*/
Iterator colecaoConsumoMinimoParametroAuxIterator = colecaoConsumoMinimoParametroAux.iterator();
while (colecaoConsumoMinimoParametroAuxIterator.hasNext()) {
ConsumoMinimoParametro consumoMinimoParametroAux = (ConsumoMinimoParametro) colecaoConsumoMinimoParametroAuxIterator
.next();
if (consumoMinimoParametro.getAnoMesReferencia() == consumoMinimoParametroAux.getAnoMesReferencia()
&& consumoMinimoParametro.getCategoria().getId().intValue() == consumoMinimoParametroAux.getCategoria().getId().intValue()
&& (consumoMinimoParametro.getSubCategoria() == null || consumoMinimoParametro.getSubCategoria().getId().intValue() == consumoMinimoParametroAux.getSubCategoria().getId().intValue())
&& consumoMinimoParametro.getNumeroParametroFinal().compareTo(consumoMinimoParametroAux.getNumeroParametroFinal()) == 0) {
if (consumoMinimoParametro.getSubCategoria() == null) {
throw new ActionServletException(
"atencao.parametro_ja_informado.sem_sub_categoria", form
.getNumeroParametro(), form
.getMesAnoReferencia(), form
.getIdCategoria());
} else {
throw new ActionServletException(
"atencao.parametro_ja_informado", form
.getNumeroParametro(), form
.getMesAnoReferencia(), form
.getIdCategoria(), form.getIdSubCategoria());
}
}
}
/**
* FIM - [FS0006] � Validar par�metro igual
*/
colecaoConsumoMinimoParametro.add(consumoMinimoParametro);
sessao.setAttribute("colecaoConsumoMinimoParametro",
colecaoConsumoMinimoParametro);
} else {// atualizar
int posicaoComponente;
if (sessao.getAttribute("posicaoComponente") != null) {
posicaoComponente = (Integer) sessao
.getAttribute("posicaoComponente");
} else {
posicaoComponente = 0;
}
ConsumoMinimoParametro consumoMinimoParametro = colecaoConsumoMinimoParametro.get(posicaoComponente - 1);
consumoMinimoParametro.setNumeroConsumo(new Integer(numeroConsumo));
consumoMinimoParametro.setIndicadorUso(ConstantesSistema.INDICADOR_USO_ATIVO);
for (int i = 0; i < colecaoConsumoMinimoParametro.size(); i++) {
ConsumoMinimoParametro consumoMinimoParametroAux = (ConsumoMinimoParametro) colecaoConsumoMinimoParametro.get(i);
if ((posicaoComponente - 1) != i
&& consumoMinimoParametro.getAnoMesReferencia() == consumoMinimoParametroAux.getAnoMesReferencia()
&& consumoMinimoParametro.getCategoria().getId().intValue() == consumoMinimoParametroAux.getCategoria().getId().intValue()
&& (consumoMinimoParametro.getSubCategoria() == null || consumoMinimoParametro.getSubCategoria().getId().intValue() == consumoMinimoParametroAux.getSubCategoria().getId().intValue())
&& numeroParametro.compareTo(consumoMinimoParametroAux.getNumeroParametroFinal()) == 0) {
if (consumoMinimoParametro.getSubCategoria() == null) {
throw new ActionServletException(
"atencao.parametro_ja_informado.sem_sub_categoria", form
.getNumeroParametro(), form
.getMesAnoReferencia(), form
.getIdCategoria());
} else {
throw new ActionServletException(
"atencao.parametro_ja_informado", form
.getNumeroParametro(), form
.getMesAnoReferencia(), form
.getIdCategoria(), form.getIdSubCategoria());
}
}
}
consumoMinimoParametro.setNumeroParametroFinal(numeroParametro);
Collections.sort((List) colecaoConsumoMinimoParametro, new Comparator() {
public int compare(Object a, Object b) {
BigDecimal area1 = ((ConsumoMinimoParametro) a).getNumeroParametroFinal();
BigDecimal area2 = ((ConsumoMinimoParametro) b).getNumeroParametroFinal();
return area1.compareTo(area2);
}
});
sessao.setAttribute("colecaoConsumoMinimoParametro", colecaoConsumoMinimoParametro);
}
httpServletRequest.setAttribute("reload", true);
}
sessao.setAttribute("adicionar", true);
sessao.setAttribute("informar", true);
return retorno;
}
}