Menu

Using form and Grid to create reports

2013-10-17
2014-08-04
  • Rodrigo Ricardo Passos

    Hi everybody,
    I'm trying to create a report where i have possibility to use form and Grid. So, i can't see any sample about it and, in this time, my difficulty is in connect form with grid after returned the information sent in my query.
    Anyone have a sample that can i use form and grid to create reports?

    Best Regards,

    Rodrigo R Passos

     
  • Silvio Guedes

    Silvio Guedes - 2014-08-04

    Hi Ricardo

    Demo10 use to start an application. Demo10 that was with started working with OpenSwing.

    private void jbInit() throws Exception {

    OrdemServicoDetailFrame_printButton_actionAdapter(this));

    }

    public void printButton_actionPerformed(ActionEvent e) throws JRException, MalformedURLException {
    RelatorioMBean relOrdemservico = new RelatorioMBean(conn);
    StringBuilder query = new StringBuilder();

      query.append("select ");
      query.append("ordemservico.id,");      
      query.append("ordemservico.dataordemservico,");
      query.append("ordemservico.fk_cliente,");
      query.append("clientes.nome,");
      query.append("clientes.endereco,");
      query.append("clientes.telefone,");
      query.append("clientes.telcomercial,");
      query.append("clientes.celular,");
      query.append("clientes.complemento,");
      query.append("clientes.cidade,");
      query.append("clientes.uf,");
      query.append("ordemservico.fk_marca,");
      query.append("marca.nome as nomemarca,");
      query.append("ordemservico.fk_tipoequipamento,");
      query.append("tipoequipamento.nome as nomeequipamento,");
      query.append("ordemservico.modelo,");
      query.append("ordemservico.numeroserie,");
      query.append("ordemservico.defeito,");
      query.append("ordemservico.acessorios,");
      query.append("ordemservico.observacao,");
      query.append("ordemservico.garantia,");
      query.append("ordemservico.datacompra,");
      query.append("ordemservico.notafiscal,");
      query.append("ordemservico.numerocertificado,");
      query.append("ordemservico.revendedor,");
      query.append("ordemservico.fabricanteimportador,");
      query.append("ordemservico.desconto,");
      query.append("ordemservico.valor,");
      query.append("ordemservico.valortotal,");
      query.append("ordemservico.situacao ");
      query.append("from ordemservico ");
      query.append("left join marca on marca.id=ordemservico.fk_marca "); 
      query.append("left join tipoequipamento on tipoequipamento.id=ordemservico.fk_tipoequipamento ");
      query.append("left join clientes on clientes.id=ordemservico.fk_cliente ");
      query.append("where ordemservico.id= $P{OS_ID}");
    
      pk =  OrdemServicoDetailFrameController.pk.trim();
      os_id = Integer.parseInt(pk);
      Map<String, Object> parametros = new HashMap<String, Object>();
      parametros.put("PAR_SQL", query.toString());
      parametros.put("OS_ID", os_id);
    
      relOrdemservico.geraRelatorio("ordemservico.jasper", parametros,null);
    

    }

    class OrdemServicoDetailFrame_printButton_actionAdapter implements java.awt.event.ActionListener {
    OrdemServicoDetailFrame adaptee;

    OrdemServicoDetailFrame_printButton_actionAdapter(OrdemServicoDetailFrame adaptee) {
    this.adaptee = adaptee;
    }
    public void actionPerformed(ActionEvent e) {
    try {
    try {
    adaptee.printButton_actionPerformed(e);
    } catch (MalformedURLException ex) {
    Logger.getLogger(OrdemServicoDetailFrame_printButton_actionAdapter.class.getName()).log(Level.SEVERE, null, ex);
    }
    } catch (JRException ex) {
    Logger.getLogger(OrdemServicoDetailFrame_printButton_actionAdapter.class.getName()).log(Level.SEVERE, null, ex);
    }
    }

    Relatorio MBean.java

    import java.io.File;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.util.HashMap;
    import java.util.Map;
    import net.sf.jasperreports.engine.;
    import net.sf.jasperreports.engine.util.JRLoader;
    import net.sf.jasperreports.view.
    ;

    public class RelatorioMBean {
    //extends AbstractCrudBean<Relatorio> {
    public Connection conn = null;

    public RelatorioMBean(Connection conn) throws JRException {
           this.conn = conn;
    }
    
    public void geraRelatorio(String pathReport, Map<String, Object> parametros, ResultSet rs) throws JRException, MalformedURLException {
    
    URL reportURL = RelatorioMBean.class.getResource("/br/com/assistenciadesktop/relatorios/");
    String reportDir = reportURL.getFile();
    
    URL relatorioURL = RelatorioMBean.class.getResource(pathReport);
        File file = new File(relatorioURL.getFile());
    
        JasperReport jr = (JasperReport) JRLoader.loadObject(relatorioURL);
        System.out.println(relatorioURL);
        System.out.println(parametros.values());
    
        JasperPrint jp = JasperFillManager.fillReport(jr, parametros, conn);
        JasperViewer jv = new JasperViewer(jp, false);
        jv.setVisible(true);
    
    }
    
    private static Map<String, Object> getParameter(Map<String, Object> parametros) throws MalformedURLException {
        if(parametros == null){
            parametros = new HashMap<String, Object>();
        }
        URL reportURL = ResourceUtil.getResource("classpath:/reports");
        String reportDir = reportURL.getFile();
        parametros.put("REPORT_PATH", reportDir);
        return parametros;
    }
    

    }

    resourceutil.java

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileFilter;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.MalformedURLException;
    import java.net.URISyntaxException;
    import java.net.URL;
    import java.util.Arrays;
    import java.util.List;

    //import br.gov.pb.mp.framework.util.exception.SystemException;

    public class ResourceUtil {

    private static String CLASSPATH_PREFIX = "classpath:";
    
    public static URL getResource(String path) throws MalformedURLException{
    
        if(path.startsWith(CLASSPATH_PREFIX)){
            return classpathResource(path.replace(CLASSPATH_PREFIX, ""));
        } else {
    
              return filesystemResource(path);
    
        }
    }
    
    private static URL classpathResource(String path) {
    
        if(path.length() >= 1 && path.charAt(0) == '/'){
            path = path.substring(1);
        }
    
        URL resource = Thread.currentThread().getContextClassLoader().getResource(path);
        return resource;
    }
    
    private static URL filesystemResource(String path) throws MalformedURLException {
        File file = new File(path);
        return file.toURI().toURL();
    }
    
    public static String resourceToString(URL url) throws IOException  {
        return resourceToString(url, null);
    }
    
    public static String resourceToString(URL url, String newline) throws IOException  {
        InputStream openStream;
    
            openStream = url.openStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    openStream));
            StringBuffer buf = new StringBuffer();
            while (reader.ready()) {
                buf.append(reader.readLine());
    
                if(newline != null){
                    buf.append(newline);
                }
    
            }
    
            openStream.close();
    
            return buf.toString();
    
    }
    
    public static File lastModifiedFile(File directory){
        return lastModifiedFile(directory, Arrays.asList(new String[]{}));
    }
    
    public static File lastModifiedFile(File directory,
            final List<String> extensoes) {
        checkDirectory(directory);
    
        File[] files = listFilteredFiles(directory, extensoes);
    
        if (files == null) {
            return null;
        }
    
        Long lastModifiedTime = null;
        File lastFile = null;
        for (File file : files) {
            if (lastModifiedTime == null || file.lastModified() > lastModifiedTime) {
                lastFile = file;
                lastModifiedTime = file.lastModified();
            }
        }
        return lastFile;
    }
    
    public static File[] listFilteredFiles(File directory, final List<String> extensions) {
        checkDirectory(directory);
    
        File[] files = directory.listFiles(new FileFilter() {
            public boolean accept(File file) {
                if(extensions != null){
                    // filtrando pela extensao.
                    if (!hasExtension(file, extensions)) {
                        return false;
                    }
                }
                return file.isFile();
            }
    
        });
        return files;
    }
    
    public static boolean hasExtension(File file, List<String> extensions) {
        for (String extension : extensions) {
            if(!hasExtension(file, extension)){
                return false;
            }
        }   
        return true;
    }
    
    public static boolean hasExtension(File file, String extension) {
        if(extension == null || file == null){
            return false;
        }
    
        String upperExtension = extension.toUpperCase();
    
        String filename = file.getName();
        return filename.toUpperCase().endsWith(upperExtension);
    }
    
    private static void checkDirectory(File directory) {
        if(directory == null || !directory.isDirectory()){
                    ;
    

    // throw new SystemException("This path must be a directory: '" + directory.getAbsolutePath() +"'.");
    }
    }

    public static File getFile(String string) throws URISyntaxException, MalformedURLException {
            return new File(getResource(string).toURI());
    

    // try {
    // return new File(getResource(string).toURI());
    // } catch (Exception e) {
    //// throw new SystemException(e);
    // }
    }

    }

    Good luck

    Silvio Guedes

     

Log in to post a comment.