package br.com.centralit.citcorpore.ajaxForms;
import java.util.Collection;
import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import br.com.centralit.citajax.html.AjaxFormAction;
import br.com.centralit.citajax.html.DocumentHTML;
import br.com.centralit.citajax.util.CitAjaxWebUtil;
import br.com.centralit.citcorpore.bean.BICategoriasDTO;
import br.com.centralit.citcorpore.bean.BIConsultaDTO;
import br.com.centralit.citcorpore.bean.BIDashBoardDTO;
import br.com.centralit.citcorpore.bean.BIItemDashBoardDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.negocio.BICategoriasService;
import br.com.centralit.citcorpore.negocio.BIConsultaService;
import br.com.centralit.citcorpore.negocio.BIDashBoardService;
import br.com.centralit.citcorpore.negocio.BIItemDashBoardService;
import br.com.centralit.citcorpore.util.WebUtil;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.Constantes;
import br.com.citframework.util.UtilI18N;
public class DashBoardBuilderInternal extends AjaxFormAction {
@Override
public void load(DocumentHTML document, HttpServletRequest request,
HttpServletResponse response) throws Exception {
UsuarioDTO usuarioDto = WebUtil.getUsuario(request);
if (usuarioDto == null) {
document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada"));
document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'");
return;
}
BIDashBoardDTO biDashBoardDTO = (BIDashBoardDTO)document.getBean();
document.executeScript("HTMLUtils.setForm(document.form)");
BICategoriasService biCategoriasService = (BICategoriasService) ServiceLocator.getInstance().getService(BICategoriasService.class, null);
Collection lst = biCategoriasService.findSemPai();
int nivel = 1;
if (lst != null){
for (Iterator it = lst.iterator(); it.hasNext();){
BICategoriasDTO biCategoriaDto = (BICategoriasDTO) it.next();
document.getSelectById("idConsulta").addOption("", geraNivel(nivel - 1) + "<" + biCategoriaDto.getNomeCategoria() + ">");
preencheConsultasByIdCategoria(biCategoriaDto.getIdCategoria(), document, nivel);
preencheCategoriasFilhasByIdCategoria(biCategoriaDto.getIdCategoria(), document, biCategoriasService, nivel);
}
}
BIDashBoardService biDashBoardService = (BIDashBoardService) ServiceLocator.getInstance().getService(BIDashBoardService.class, null);
BIConsultaService biConsultaService = (BIConsultaService) ServiceLocator.getInstance().getService(BIConsultaService.class, null);
BIItemDashBoardService biItemDashBoardService = (BIItemDashBoardService) ServiceLocator.getInstance().getService(BIItemDashBoardService.class, null);
int iAux = 0;
if (biDashBoardDTO.getIdDashBoard() != null && biDashBoardDTO.getIdDashBoard()>0){
document.executeScript("hash = new HashMap()");
document.executeScript("hashTitulo = new HashMap()");
document.executeScript("hashSubst = new HashMap()");
biDashBoardDTO = (BIDashBoardDTO) biDashBoardService.restore(biDashBoardDTO);
if (biDashBoardDTO != null){
document.getForm("formSalvar").setValues(biDashBoardDTO);
}
Collection col = biItemDashBoardService.findByIdDashBoard(biDashBoardDTO.getIdDashBoard());
if (col != null){
for (Iterator it = col.iterator(); it.hasNext();){
BIItemDashBoardDTO biItemDashBoardDTO = (BIItemDashBoardDTO)it.next();
document.executeScript("document.getElementById('testdiv_" + (iAux + 1) + "').style.top = '" + biItemDashBoardDTO.getItemTop() + "px'");
document.executeScript("document.getElementById('testdiv_" + (iAux + 1) + "').style.left = '" + biItemDashBoardDTO.getItemLeft() + "px'");
document.executeScript("document.getElementById('testdiv_" + (iAux + 1) + "').style.width = '" + biItemDashBoardDTO.getItemWidth() + "px'");
document.executeScript("document.getElementById('testdiv_" + (iAux + 1) + "').style.height = '" + biItemDashBoardDTO.getItemHeight() + "px'");
if (biItemDashBoardDTO.getIdConsulta() != null){
BIConsultaDTO biConsultaDTO = new BIConsultaDTO();
biConsultaDTO.setIdConsulta(biItemDashBoardDTO.getIdConsulta());
biConsultaDTO = (BIConsultaDTO) biConsultaService.restore(biConsultaDTO);
if (biConsultaDTO != null){
String str = biConsultaDTO.getNomeConsulta().replaceAll("\"", "");
str = biConsultaDTO.getNomeConsulta().replaceAll("\'", "");
document.executeScript("document.getElementById('testdiv_" + (iAux + 1) + "_internal').innerHTML = \"" + str + "\"");
document.executeScript("hash['testdiv_" + (iAux + 1) + "'] = " + biConsultaDTO.getIdConsulta());
if (biConsultaDTO.getNomeConsulta() != null){
document.executeScript("hashTitulo['testdiv_" + (iAux + 1) + "'] = '" + biConsultaDTO.getNomeConsulta().replaceAll("\"", "").replaceAll("\'", "") + "'");
}
}
if (biItemDashBoardDTO.getParmsSubst() != null){
document.executeScript("hashSubst['testdiv_" + (iAux + 1) + "'] = ObjectUtils.decodificaEnter('" + CitAjaxWebUtil.codificaEnter(biItemDashBoardDTO.getParmsSubst().replaceAll("\"", "").replaceAll("\'", "")) + "')");
}
}
iAux++;
}
}
}
}
public void preencheConsultasByIdCategoria(Integer idCategoria, DocumentHTML document, int nivel) throws ServiceException, Exception{
BIConsultaService biConsultaService = (BIConsultaService) ServiceLocator.getInstance().getService(BIConsultaService.class, null);
Collection colConsultas = biConsultaService.findByIdCategoria(idCategoria);
if (colConsultas != null){
for (Iterator it = colConsultas.iterator(); it.hasNext();){
BIConsultaDTO biConsultaDTO = (BIConsultaDTO)it.next();
document.getSelectById("idConsulta").addOption("" + biConsultaDTO.getIdConsulta(), geraNivel(nivel) + biConsultaDTO.getNomeConsulta());
}
}
}
public void preencheCategoriasFilhasByIdCategoria(Integer idCategoria, DocumentHTML document, BICategoriasService biCategoriasService, int nivel) throws ServiceException, Exception{
Collection col = biCategoriasService.findByIdCategoriaPai(idCategoria);
if (col != null){
for (Iterator it = col.iterator(); it.hasNext();){
BICategoriasDTO categDto = (BICategoriasDTO)it.next();
document.getSelectById("idConsulta").addOption("", geraNivel(nivel) + "<" + categDto.getNomeCategoria() + ">");
preencheConsultasByIdCategoria(categDto.getIdCategoria(), document, nivel + 1);
preencheCategoriasFilhasByIdCategoria(categDto.getIdCategoria(), document, biCategoriasService, nivel + 1);
}
}
}
private String geraNivel(int nivel){
String nivelStr = "";
for (int i = 0; i < nivel; i++){
nivelStr = nivelStr + ".....";
}
return nivelStr;
}
@Override
public Class getBeanClass() {
return BIDashBoardDTO.class;
}
}