Estimados,
Necesito visualizar un pdf generado apartir de la seleccion de objetos cargados en una tabla.
Tengo dos btns abajo de dicha tabla uno para generar el pdf y otro para verlo. Similar a lo planteado aca → https://vaadin.com/forum#!/thread/9768587
El problema que se presenta es que la primera vez lo hace de forma correcta, pero al seleccionar otro elemento de la tabla se generarn dos veces los tabs mostrando/bajando el pdf generado (el pdf lo generar correctamente)y si selecciono un tercero lo realiza 3 veces asi se repite n veces.
Genera correctamente el pdf pero es como que queda residual los generado anteriormente.
Copio parte del codigo:
[code]
if(event.getSource() == this.getBtnGenerarReporte()){
// Probe declarando Resource y fd dentro de este bloque sin resultado
//paciente lo obtengo de valueChange de la tabla
resource = generarSource(paciente); <-generarSoruce esta declarado abajo
fd = new FileDownloader(resource);
fd.extend(btnVerReporte); <-btn que dispara y muetra pdf
}
private StreamResource generarSource(final VistaAdmEstudiosPorRealizar paciente) {
return new StreamResource(new StreamResource.StreamSource() {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public InputStream getStream() {
Conexion conexion = null;
String reportFile = "";
byte b = null;
log.trace("IdRutina del paciente seleccionado: " + paciente.getIdRutina());
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("filter",paciente.getIdRutina());
parameters.put("parametro1", paciente.getTipoExamen());
parameters.put("parametro2", paciente.getRazonSocial());
parameters.put("parametro3", paciente.getApellidoPaciente()+", "+paciente.getNombrePaciente());
parameters.put("parametro4", paciente.getDireccion());
parameters.put("parametro5", paciente.getNumeroDeDocumento());
parameters.put("parametro6", paciente.getFechaNacimiento());
parameters.put("parametro7", paciente.getNombreArt());
parameters.put("parametro8", paciente.getEstadoCivil());
parameters.put("parametro9", paciente.getTelefono());
parameters.put("parametro10",paciente.getTipoDeDocumento());
parameters.put("parametro11",paciente.getNacionalidad());
parameters.put("parametro12",paciente.getFechaIngreso());
parameters.put("parametro13",paciente.getOrientacionRutina());
try {
if(paciente.getTipoExamen().equalsIgnoreCase("periodico")){
reportFile = "com/report/rutinasAVisarPeriodico.jasper";
}else{
reportFile = "com/report/rutinasAVisarIEO.jasper";
}
InputStream report = getClass().getClassLoader().getResourceAsStream(reportFile);
if (report == null) {
Notification.show("No report!", Type.ERROR_MESSAGE);
return null;
}
conexion = new Conexion();
b = JasperRunManager.runReportToPdf(report, parameters, conexion.getConexion());
// conexion.getConexion().commit();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JRException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return new ByteArrayInputStream(b);
}
}, "reporte"+paciente.getTipoExamen()+".pdf");
}
[/code]Al realizar la traza y al realizar click en btnVerReporte la primera vez lo realiza correctamente. Luego al seleccionar otro paciente de la tabla genera bien el pdf pero tambien me genera el paciente anterior, es decir que si hago esa operacion 10 veces, 10 veces generar para ver-bajar (dependiendo si uso FileDownloader o BrowserWindowOpener).
Espero a ver sido claro.
Saludos !!!