package br.com.centralit.citcorpore.ajaxForms; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import net.sf.jasperreports.engine.JRDataSource; import net.sf.jasperreports.engine.JRParameter; import net.sf.jasperreports.engine.JasperCompileManager; import net.sf.jasperreports.engine.JasperExportManager; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; import net.sf.jasperreports.engine.design.JasperDesign; import net.sf.jasperreports.engine.export.JRXlsExporter; import net.sf.jasperreports.engine.export.JRXlsExporterParameter; import net.sf.jasperreports.engine.fill.JRAbstractLRUVirtualizer; import net.sf.jasperreports.engine.fill.JRSwapFileVirtualizer; import net.sf.jasperreports.engine.util.JRSwapFile; import net.sf.jasperreports.engine.xml.JRXmlLoader; import br.com.centralit.citajax.html.AjaxFormAction; import br.com.centralit.citajax.html.DocumentHTML; import br.com.centralit.citajax.html.HTMLElement; import br.com.centralit.citcorpore.bean.CaracteristicaDTO; import br.com.centralit.citcorpore.bean.ItemConfiguracaoDTO; import br.com.centralit.citcorpore.bean.MidiaSoftwareChaveDTO; import br.com.centralit.citcorpore.bean.MidiaSoftwareDTO; import br.com.centralit.citcorpore.bean.UsuarioDTO; import br.com.centralit.citcorpore.negocio.CaracteristicaService; import br.com.centralit.citcorpore.negocio.ItemConfiguracaoService; import br.com.centralit.citcorpore.negocio.MidiaSoftwareService; import br.com.centralit.citcorpore.util.CITCorporeUtil; import br.com.centralit.citcorpore.util.LogoRel; import br.com.centralit.citcorpore.util.UtilRelatorio; import br.com.centralit.citcorpore.util.WebUtil; import br.com.citframework.service.ServiceLocator; import br.com.citframework.util.Constantes; import br.com.citframework.util.UtilDatas; import br.com.citframework.util.UtilI18N; public class RelatorioItemConfiguracaoPacoteOffice extends AjaxFormAction { UsuarioDTO usuario; String localeSession = null; @Override public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { } public void imprimirRelatorioPacoteOffice(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { HttpSession session = ((HttpServletRequest) request).getSession(); ItemConfiguracaoService itemConfiguracaoService = (ItemConfiguracaoService) ServiceLocator.getInstance().getService(ItemConfiguracaoService.class, null); CaracteristicaService caracteristicaService = (CaracteristicaService) ServiceLocator.getInstance().getService(CaracteristicaService.class, null); ItemConfiguracaoDTO configuracaoDTO = (ItemConfiguracaoDTO) document.getBean(); usuario = WebUtil.getUsuario(request); if (usuario == null) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada")); document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'"); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); return; } @SuppressWarnings("unchecked") List<MidiaSoftwareChaveDTO> midiaSoftwareChaves = (List<MidiaSoftwareChaveDTO>) br.com.citframework.util.WebUtil.deserializeCollectionFromRequest(MidiaSoftwareChaveDTO.class, "midiaSoftwareChavesSerealizadas", request); configuracaoDTO.setMidiaSoftwareChaves(midiaSoftwareChaves); /*Lista os itens de configura��o que possuem o pacote office instalado*/ List<ItemConfiguracaoDTO> listItemConfiguracaoDTO = null; if(configuracaoDTO.getDuplicado() != null && (midiaSoftwareChaves != null && !midiaSoftwareChaves.isEmpty())) { listItemConfiguracaoDTO = new ArrayList<ItemConfiguracaoDTO>(); for (MidiaSoftwareChaveDTO midiaSoftwareChaveDTO : midiaSoftwareChaves) { List<ItemConfiguracaoDTO> chaves = itemConfiguracaoService.listaItemConfiguracaoOfficePak(configuracaoDTO, midiaSoftwareChaveDTO.getChave()); if(chaves!=null && chaves.size() > 1) listItemConfiguracaoDTO.addAll(chaves); } } else { listItemConfiguracaoDTO = itemConfiguracaoService.listaItemConfiguracaoOfficePak(configuracaoDTO); } if (listItemConfiguracaoDTO == null || listItemConfiguracaoDTO.size() == 0) { document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.relatorioVazio")); return; } List<ItemConfiguracaoDTO> listItemConfiguracaoDTO2 = new ArrayList<ItemConfiguracaoDTO>(); for (ItemConfiguracaoDTO itemConfiguracaoDTO : listItemConfiguracaoDTO) { List<CaracteristicaDTO> list = (List<CaracteristicaDTO>) caracteristicaService.consultarCaracteristicasComValoresItemConfiguracao( itemConfiguracaoDTO.getIdTipoItemConfiguracao(), itemConfiguracaoDTO.getIdItemConfiguracao(), new String[] {"PRODUCT", "OFFICEKEY", "OFFICEVERSION"}); if(list != null && !list.isEmpty()) { itemConfiguracaoDTO.setListCaracteristicas(list); listItemConfiguracaoDTO2.add(itemConfiguracaoDTO); } } listItemConfiguracaoDTO = listItemConfiguracaoDTO2; Date dt = new Date(); String strCompl = "" + dt.getTime(); String caminhoJasper = CITCorporeUtil.CAMINHO_REAL_APP + Constantes.getValue("CAMINHO_RELATORIOS") + "RelatorioItemConfiguracaoPacoteOffice.jasper"; String diretorioReceita = CITCorporeUtil.CAMINHO_REAL_APP + "/tempFiles"; String diretorioRelativoOS = Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/tempFiles"; Map<String, Object> parametros = new HashMap<String, Object>(); parametros = UtilRelatorio.trataInternacionalizacaoLocale(session, parametros); parametros.put("TITULO_RELATORIO", UtilI18N.internacionaliza(request, "RelatorioItemConfiguracaoPacoteOffice.RelatorioItemConfiguracaoPacoteOffice")); parametros.put("CIDADE", UtilI18N.internacionaliza(request, "citcorpore.comum.relatorioCidade")); parametros.put("DATA_HORA", UtilDatas.getDataHoraAtual()); parametros.put("NOME_USUARIO", usuario.getNomeUsuario()); parametros.put("SUBREPORT_DIR", CITCorporeUtil.CAMINHO_REAL_APP + Constantes.getValue("CAMINHO_RELATORIOS")); parametros.put("NUMERO_REGISTROS", listItemConfiguracaoDTO.size()); parametros.put("Logo", LogoRel.getFile()); try { JRDataSource dataSource = new JRBeanCollectionDataSource(listItemConfiguracaoDTO); JRSwapFile arquivoSwap = new JRSwapFile(diretorioReceita, 4096, 25); JRAbstractLRUVirtualizer virtualizer = new JRSwapFileVirtualizer(25, arquivoSwap, true); parametros.put(JRParameter.REPORT_VIRTUALIZER, virtualizer); JasperPrint print = JasperFillManager.fillReport(caminhoJasper, parametros, dataSource); JasperExportManager.exportReportToPdfFile(print, diretorioReceita + "/RelatorioItemConfiguracaoPacoteOffice" + strCompl + "_" + usuario.getIdUsuario() + ".pdf"); document.executeScript("window.open('" + Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/printPDF/printPDF.jsp?url=" + diretorioRelativoOS + "/RelatorioItemConfiguracaoPacoteOffice" + strCompl + "_" + usuario.getIdUsuario() + ".pdf')"); } catch (OutOfMemoryError e) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.erro.erroServidor")); } document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); } public void imprimirRelatorioPacoteOfficeXls(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { HttpSession session = ((HttpServletRequest) request).getSession(); ItemConfiguracaoService itemConfiguracaoService = (ItemConfiguracaoService) ServiceLocator.getInstance().getService(ItemConfiguracaoService.class, null); CaracteristicaService caracteristicaService = (CaracteristicaService) ServiceLocator.getInstance().getService(CaracteristicaService.class, null); ItemConfiguracaoDTO configuracaoDTO = (ItemConfiguracaoDTO) document.getBean(); usuario = WebUtil.getUsuario(request); if (usuario == null) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada")); document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'"); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); return; } @SuppressWarnings("unchecked") List<MidiaSoftwareChaveDTO> midiaSoftwareChaves = (List<MidiaSoftwareChaveDTO>) br.com.citframework.util.WebUtil.deserializeCollectionFromRequest(MidiaSoftwareChaveDTO.class, "midiaSoftwareChavesSerealizadas", request); configuracaoDTO.setMidiaSoftwareChaves(midiaSoftwareChaves); /*Lista os itens de configura��o que possuem o pacote office instalado*/ List<ItemConfiguracaoDTO> listItemConfiguracaoDTO = null; if(configuracaoDTO.getDuplicado() != null && (midiaSoftwareChaves != null && !midiaSoftwareChaves.isEmpty())) { listItemConfiguracaoDTO = new ArrayList<ItemConfiguracaoDTO>(); for (MidiaSoftwareChaveDTO midiaSoftwareChaveDTO : midiaSoftwareChaves) { List<ItemConfiguracaoDTO> chaves = itemConfiguracaoService.listaItemConfiguracaoOfficePak(configuracaoDTO, midiaSoftwareChaveDTO.getChave()); if(chaves!=null && chaves.size() > 1) listItemConfiguracaoDTO.addAll(chaves); } } else { listItemConfiguracaoDTO = itemConfiguracaoService.listaItemConfiguracaoOfficePak(configuracaoDTO); } if (listItemConfiguracaoDTO == null || listItemConfiguracaoDTO.size() == 0) { document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.relatorioVazio")); return; } for (ItemConfiguracaoDTO itemConfiguracaoDTO : listItemConfiguracaoDTO) { itemConfiguracaoDTO.setListCaracteristicas((List<CaracteristicaDTO>) caracteristicaService.consultarCaracteristicasComValoresItemConfiguracao( itemConfiguracaoDTO.getIdTipoItemConfiguracao(), itemConfiguracaoDTO.getIdItemConfiguracao() , new String[] {"PRODUCT", "OFFICEKEY", "OFFICEVERSION"})); } Date dt = new Date(); String strCompl = "" + dt.getTime(); String diretorioReceita = CITCorporeUtil.CAMINHO_REAL_APP + "/tempFiles"; String diretorioRelativoOS = Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/tempFiles"; Map<String, Object> parametros = new HashMap<String, Object>(); parametros = UtilRelatorio.trataInternacionalizacaoLocale(session, parametros); parametros.put("TITULO_RELATORIO", UtilI18N.internacionaliza(request, "RelatorioItemConfiguracaoPacoteOffice.RelatorioItemConfiguracaoPacoteOffice")); parametros.put("CIDADE", UtilI18N.internacionaliza(request, "citcorpore.comum.relatorioCidade")); parametros.put("DATA_HORA", UtilDatas.getDataHoraAtual()); parametros.put("NOME_USUARIO", usuario.getNomeUsuario()); parametros.put("SUBREPORT_DIR", CITCorporeUtil.CAMINHO_REAL_APP + Constantes.getValue("CAMINHO_RELATORIOS")); parametros.put("Logo", LogoRel.getFile()); JRDataSource dataSource = new JRBeanCollectionDataSource(listItemConfiguracaoDTO); JasperDesign desenho = JRXmlLoader.load(CITCorporeUtil.CAMINHO_REAL_APP + Constantes.getValue("CAMINHO_RELATORIOS") + "RelatorioItemConfiguracaoPacoteOfficeXls.jrxml"); JasperReport relatorio = JasperCompileManager.compileReport(desenho); JasperPrint impressao = JasperFillManager.fillReport(relatorio, parametros, dataSource); JRXlsExporter exporter = new JRXlsExporter(); exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT, impressao); exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE); exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.TRUE); exporter.setParameter(JRXlsExporterParameter.OUTPUT_FILE_NAME, diretorioReceita + "/RelatorioItemConfiguracaoPacoteOffice" + strCompl + "_" + usuario.getIdUsuario() + ".xls"); exporter.exportReport(); document.executeScript("window.open('" + Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/printPDF/printPDF.jsp?url=" + diretorioRelativoOS + "/RelatorioItemConfiguracaoPacoteOffice" + strCompl + "_" + usuario.getIdUsuario() + ".xls')"); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); } @SuppressWarnings("rawtypes") @Override public Class getBeanClass() { return ItemConfiguracaoDTO.class; } public void listaChavesMidiaSoftware(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { ItemConfiguracaoDTO configuracaoDTO = (ItemConfiguracaoDTO) document.getBean(); MidiaSoftwareService midiaSoftwareService = (MidiaSoftwareService) ServiceLocator.getInstance().getService(MidiaSoftwareService.class, null); MidiaSoftwareDTO midiaSoftware = new MidiaSoftwareDTO(); if(configuracaoDTO.getIdMidiaSoftware()!=null) { midiaSoftware.setIdMidiaSoftware(configuracaoDTO.getIdMidiaSoftware()); midiaSoftware = (MidiaSoftwareDTO) midiaSoftwareService.restore(midiaSoftware); HTMLElement divPrincipal = document.getElementById("contentChaves"); StringBuilder subDiv = new StringBuilder(); subDiv.append("" + " <table id='tblMidiaSoftwareChave' class='tableLess'> " + " <thead>" + " <tr>" + " <th></th> " + " <th>"+UtilI18N.internacionaliza(request, "midiaSoftware.chave")+"</th> " + " </thead>" + ""); int count = 0; if(midiaSoftware.getMidiaSoftwareChaves() != null) { for (MidiaSoftwareChaveDTO midiaSoftwareChaves : midiaSoftware.getMidiaSoftwareChaves()) { subDiv.append( " <tr>"+ " <td>" + "<input type='checkbox' checked='checked' id='idMidiaSoftwareChave" + count + "' name='idMidiaSoftwareChave" + count + "' value='0"+midiaSoftwareChaves.getIdMidiaSoftwareChave()+ "'/>" + "<input type='hidden' id='chave" + count + "' name='chave" + count + "' value='"+midiaSoftwareChaves.getChave()+ "'/>" + "</td>" + " <td>" + midiaSoftwareChaves.getChave() + "</td>" + " </tr>"); count++; } } subDiv.append("" + " </table>"); divPrincipal.setInnerHTML(subDiv.toString()); } } }