{"id":150,"date":"2014-06-19T22:13:14","date_gmt":"2014-06-19T20:13:14","guid":{"rendered":"http:\/\/www.valeriofinazzo.it\/wordpress\/?p=150"},"modified":"2014-06-19T22:24:19","modified_gmt":"2014-06-19T20:24:19","slug":"jasperreports-tutorial-6-creiamo-il-nostro-report-in-java","status":"publish","type":"post","link":"http:\/\/www.valeriofinazzo.it\/wordpress\/2014\/06\/jasperreports-tutorial-6-creiamo-il-nostro-report-in-java\/","title":{"rendered":"JASPERREPORTS TUTORIAL &#8211; 6 &#8211; CREIAMO IL NOSTRO REPORT IN JAVA"},"content":{"rendered":"<p style=\"color: #0d293f;\">Nell&#8217;articolo di oggi vedremo come generare il nostro report in pdf partendo dal modello generato con Ireport.<\/p>\n<p style=\"color: #0d293f;\">Il primo passo \u00e8 quello di generare il nostro report a partire dal formato jrxml. Per fare questo JasperReports ci mette a disposizione la classe JasperCompileManager<\/p>\n<p style=\"color: #0d293f;\">JasperReport jasperReport = JasperCompileManager.compileReport(&#8220;reportFromXml.jrxml&#8221;);<\/p>\n<p style=\"color: #0d293f;\">Tale classe permette di compilare il report e ottenere un file .jasper, lo stesso file che otteniamo quando generiamo l&#8217;anteprima con Ireport.<\/p>\n<p style=\"color: #0d293f;\">A questo punto resta da riempire il report compilato con i dati che provengono da un datasource. Questo meccanismo viene realizzato dalla classe JasperFillManager<\/p>\n<p style=\"color: #0d293f;\">JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap(), ds );<\/p>\n<p style=\"color: #0d293f;\">La classe JasperFillManager mette a disposizione il metodo fillReport che permette di riempire il nostro report tramite una serie di parametri che vengono forniti tramite un oggetto di tipo Map e un datasource di tipo\u00a0JRDataSource.<\/p>\n<p style=\"color: #0d293f;\">L&#8217;interfaccia JRDataSource \u00e8 un&#8217;interfaccia che prevede la definizione di 2 metodi: il metodo\u00a0next che permette di scorrere il datasource e il metodo getField che permette di recuperare la propriet\u00e0 del bean del datasource.<\/p>\n<p style=\"color: #0d293f;\">Nel nostro esempio ho definito una semplice implementazione dell&#8217;interfaccia che permette di scorrere un elenco di libri e accedere ad alcune sue propriet\u00e0.<\/p>\n<pre class=\"lang:default decode:true crayon-selected\">JRDataSource ds = new JRDataSource() {\r\n\tCollection&lt;Libro&gt; beanCollection = \r\n(Collection&lt;Libro&gt;) LibroFactory.getBeanCollection();\r\n\tprivate Iterator&lt;Libro&gt; iterator = beanCollection.iterator();\r\n\tprivate Libro libro = null; \r\n        int counter = 0;\r\n\r\n\t@Override\r\n\tpublic boolean next() throws JRException {\r\n\t\tif (counter&gt;=beanCollection.size())\r\n\t\t\treturn false;\r\n\t\tlibro = iterator.next();\r\n\t\tcounter++;\r\n\t\treturn true;\r\n\t}\r\n\t@Override\r\n\tpublic Object getFieldValue(JRField arg0) throws JRException {\r\n\t\tif (arg0.getName().equals(\"autore\"))\r\n\t\t\treturn libro.getAutore();\r\n\t\tif (arg0.getName().equals(\"id\"))\r\n\t\t\treturn libro.getId();\r\n\t\tif (arg0.getName().equals(\"titolo\"))\r\n\t\t\treturn libro.getTitolo();\r\n\t\tif (arg0.getName().equals(\"genere\"))\r\n\t\t\treturn libro.getGenere();\r\n\t\treturn null;\r\n\t\t}\r\n\t};<\/pre>\n<p style=\"color: #0d293f;\">Il metodo next permette di scorrere il nostro datasource. Ritorna true se \u00e8 presente un altro elemento all&#8217;interno del datasource, mentre il metodo getFieldValue permette di accedere alla singola propriet\u00e0 del record.<\/p>\n<p style=\"color: #0d293f;\">A questo punto tramite la classe JasperExportManager possiamo estrarre il nostro report nel formato desiderato.<\/p>\n<p style=\"color: #0d293f;\">JasperExportManager.exportReportToPdfFile(jasperPrint, &#8220;c:\/\/Simple_Report.pdf&#8221;);<\/p>\n<p style=\"color: #0d293f;\"><a style=\"color: #2675b5;\" title=\"Src per articolo\" href=\"http:\/\/www.valeriofinazzo.it\/joomla\/file\/JasperReports%20-%20Creiamo%20il%20nostro%20report%20in%20java.zip\" target=\"_blank\">Qui<\/a>\u00a0trovate le classi per compilare il progetto<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nell&#8217;articolo di oggi vedremo come generare il nostro report in pdf partendo dal modello generato con Ireport. Il primo passo \u00e8 quello di generare il nostro report a partire dal formato jrxml. Per fare questo JasperReports ci mette a disposizione la classe JasperCompileManager JasperReport jasperReport = JasperCompileManager.compileReport(&#8220;reportFromXml.jrxml&#8221;); Tale classe permette di compilare il report e &hellip; <a href=\"http:\/\/www.valeriofinazzo.it\/wordpress\/2014\/06\/jasperreports-tutorial-6-creiamo-il-nostro-report-in-java\/\" class=\"more-link\">Continua la lettura di <span class=\"screen-reader-text\">JASPERREPORTS TUTORIAL &#8211; 6 &#8211; CREIAMO IL NOSTRO REPORT IN JAVA<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[23],"tags":[24,8,26],"_links":{"self":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/150"}],"collection":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/comments?post=150"}],"version-history":[{"count":2,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/150\/revisions"}],"predecessor-version":[{"id":160,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/150\/revisions\/160"}],"wp:attachment":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/media?parent=150"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/categories?post=150"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/tags?post=150"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}