package br.com.centralit.citcorpore.ajaxForms; import java.io.File; import java.io.FileOutputStream; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import br.com.centralit.citajax.html.AjaxFormAction; import br.com.centralit.citajax.html.DocumentHTML; import br.com.centralit.citajax.html.HTMLForm; import br.com.centralit.citajax.html.HTMLSelect; import br.com.centralit.citcorpore.bean.BICategoriasDTO; import br.com.centralit.citcorpore.bean.BIConsultaColunasDTO; import br.com.centralit.citcorpore.bean.BIConsultaDTO; import br.com.centralit.citcorpore.negocio.BICategoriasService; import br.com.centralit.citcorpore.negocio.BIConsultaColunasService; import br.com.centralit.citcorpore.negocio.BIConsultaService; import br.com.centralit.citcorpore.util.WebUtil; import br.com.centralit.citquestionario.util.Upload; import br.com.citframework.service.ServiceLocator; import br.com.citframework.util.Constantes; import br.com.citframework.util.UtilI18N; import br.com.citframework.util.UtilStrings; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.DomDriver; public class ConstrutorConsultas extends AjaxFormAction { @Override public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { BIConsultaDTO biConsultaDTO = (BIConsultaDTO) document.getBean(); BICategoriasService biCategoriasService = (BICategoriasService) ServiceLocator.getInstance().getService(BICategoriasService.class, null); Collection col = biCategoriasService.findSemPai(); HTMLSelect idCategoria = document.getSelectById("idCategoria"); preencheComboCateg(idCategoria, col, biCategoriasService, 0); if (biConsultaDTO.getAcao()!=null){ if (biConsultaDTO.getAcao().equalsIgnoreCase("restore")){ restore(document, request, response); } }else{ Upload upload = new Upload(); HashMap hshRetorno[] = null; try{ hshRetorno = upload.doUploadAll(request); }catch (Exception e) { } if (hshRetorno != null){ Collection fileItems = hshRetorno[1].values(); HashMap formItems = hshRetorno[0]; String acao = (String) formItems.get("ACAO"); if (acao != null && acao.equalsIgnoreCase("importar")){ importar(fileItems, document, request); } } } } private void preencheComboCateg(HTMLSelect idCategoria, Collection col, BICategoriasService biCategoriasService, int nivel) throws Exception { if (col != null){ for (Iterator it = col.iterator(); it.hasNext();){ BICategoriasDTO biCategoriasDTO = (BICategoriasDTO)it.next(); idCategoria.addOption(geraNivel(nivel) + biCategoriasDTO.getIdCategoria(), biCategoriasDTO.getNomeCategoria()); Collection colAux = biCategoriasService.findByIdCategoriaPai(biCategoriasDTO.getIdCategoria()); if (colAux != null){ preencheComboCateg(idCategoria, colAux, biCategoriasService, nivel + 1); } } } } private String geraNivel(int niv){ String ret = ""; for (int i = 0; i < niv; i++){ ret = ret + "..."; } return ret; } @Override public Class getBeanClass() { return BIConsultaDTO.class; } public void save(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { BIConsultaDTO biConsultaDTO = (BIConsultaDTO) document.getBean(); BIConsultaService biConsultaService = (BIConsultaService) ServiceLocator.getInstance().getService(BIConsultaService.class, null); Collection<BIConsultaColunasDTO> colColunas = br.com.citframework.util.WebUtil.deserializeCollectionFromRequest(BIConsultaColunasDTO.class, "colCriterios_Serialize", request); biConsultaDTO.setColColunas(colColunas); if (biConsultaDTO.getIdConsulta() == null || biConsultaDTO.getIdConsulta().intValue() == 0) { biConsultaService.create(biConsultaDTO); document.alert(UtilI18N.internacionaliza(request, "MSG05")); } else { biConsultaService.update(biConsultaDTO); document.alert(UtilI18N.internacionaliza(request, "MSG06")); } HTMLForm form = document.getForm("form"); form.clear(); document.executeScript("GRID_COLUNAS.deleteAllRows();"); } public void exportar(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { BIConsultaDTO biConsultaDTO = (BIConsultaDTO) document.getBean(); BIConsultaService biConsultaService = (BIConsultaService) ServiceLocator.getInstance().getService(BIConsultaService.class, null); Collection<BIConsultaColunasDTO> colColunas = br.com.citframework.util.WebUtil.deserializeCollectionFromRequest(BIConsultaColunasDTO.class, "colCriterios_Serialize", request); biConsultaDTO.setColColunas(colColunas); if (biConsultaDTO.getIdConsulta() == null || biConsultaDTO.getIdConsulta().intValue() == 0) { document.alert(UtilI18N.internacionaliza(request, "construtorconsultas.gravarAntes")); return; } String diretorioExport = request.getSession().getServletContext().getRealPath("/"); String diretorioRelativoExport = Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/"; diretorioExport = diretorioExport + "exportXML"; diretorioRelativoExport = diretorioRelativoExport + "exportXML"; File f = new File(diretorioExport); if (!f.exists()){ f.mkdirs(); } String name = UtilStrings.generateNomeBusca(biConsultaDTO.getIdentificacao()); name = name + ".citreport"; FileOutputStream fOut = new FileOutputStream(diretorioExport + "/" + name); XStream x = new XStream(new DomDriver("ISO-8859-1")); biConsultaDTO.setIdConsulta(null); x.toXML(biConsultaDTO, fOut); fOut.close(); //document.executeScript("JANELA_AGUARDE_MENU.hide()"); document.executeScript("window.open('" + diretorioRelativoExport + "/" + name + "')"); } public void importar(Collection fileItems, DocumentHTML document, HttpServletRequest request) throws Exception{ BIConsultaService biConsultaService = (BIConsultaService) ServiceLocator.getInstance().getService(BIConsultaService.class, null); BIConsultaDTO biConsultaDTO = null; FileItem fi; if (!fileItems.isEmpty()){ Iterator it = fileItems.iterator(); File arquivo; while(it.hasNext()){ fi = (FileItem)it.next(); XStream x = new XStream(new DomDriver("ISO-8859-1")); //System.out.println("Dados importados: " + fi.get().toString()); String str = new String(fi.get(), "ISO-8859-1"); biConsultaDTO = (BIConsultaDTO) x.fromXML(str); } } document.executeScript("GRID_COLUNAS.deleteAllRows();"); HTMLForm form = document.getForm("form"); try{ BIConsultaDTO biConsultaAux = biConsultaService.getByIdentificacao(biConsultaDTO.getIdentificacao()); if (biConsultaAux != null){ biConsultaDTO.setIdConsulta(biConsultaAux.getIdConsulta()); } }catch(Exception e){} form.clear(); form.setValues(biConsultaDTO); Collection<BIConsultaColunasDTO> colColunas = biConsultaDTO.getColColunas(); if (colColunas != null) { int i = 0; for (BIConsultaColunasDTO colunaDto : colColunas) { i++; document.executeScript("GRID_COLUNAS.addRow()"); document.executeScript("seqColuna = NumberUtil.zerosAEsquerda(" + i + ",5)"); document.executeScript("exibeColuna('" + br.com.citframework.util.WebUtil.serializeObject(colunaDto, WebUtil.getLanguage(request)) + "')"); } } document.alert(UtilI18N.internacionaliza(request, "construtorconsultas.importado")); } public void restore(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { BIConsultaDTO biConsultaDTO = (BIConsultaDTO) document.getBean(); BIConsultaService biConsultaService = (BIConsultaService) ServiceLocator.getInstance().getService(BIConsultaService.class, null); BIConsultaColunasService biConsultaColunasService = (BIConsultaColunasService) ServiceLocator.getInstance().getService(BIConsultaColunasService.class, null); biConsultaDTO = (BIConsultaDTO) biConsultaService.restore(biConsultaDTO); document.executeScript("GRID_COLUNAS.deleteAllRows();"); HTMLForm form = document.getForm("form"); form.clear(); form.setValues(biConsultaDTO); Collection<BIConsultaColunasDTO> colColunas = biConsultaColunasService.findByIdConsulta(biConsultaDTO.getIdConsulta()); if (colColunas != null) { int i = 0; for (BIConsultaColunasDTO colunaDto : colColunas) { i++; document.executeScript("GRID_COLUNAS.addRow()"); document.executeScript("seqColuna = NumberUtil.zerosAEsquerda(" + i + ",5)"); document.executeScript("exibeColuna('" + br.com.citframework.util.WebUtil.serializeObject(colunaDto, WebUtil.getLanguage(request)) + "')"); } } } }