← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 1859: Jasper reports are now persisted and loaded from the database. See blueprint 'report-loading-from...

 

------------------------------------------------------------
revno: 1859
committer: Lars <larshelg@larshelg-laptop>
branch nick: trunk
timestamp: Mon 2010-05-17 15:40:52 +0200
message:
  Jasper reports are now persisted and loaded from the database. See blueprint 'report-loading-from-database'
modified:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/report/Report.java
  dhis-2/dhis-services/dhis-service-reporting/src/main/resources/org/hisp/dhis/report/hibernate/Report.hbm.xml
  dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/util/StreamUtils.java
  dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/reportviewer/action/AddReportAction.java
  dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/reportviewer/action/GetAllReportsAction.java
  dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/reportviewer/action/RenderReportAction.java
  dhis-2/dhis-web/dhis-web-reporting/src/main/resources/META-INF/dhis/beans.xml


--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk

Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/report/Report.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/report/Report.java	2010-04-12 21:23:33 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/report/Report.java	2010-05-17 13:40:52 +0000
@@ -51,8 +51,10 @@
     
     private String design;
 
+    private String designContent;
+    
     private String type;
-    
+        
     private Set<ReportTable> reportTables = new HashSet<ReportTable>();
     
     private transient String url;
@@ -160,6 +162,16 @@
         this.design = design;
     }
 
+    public String getDesignContent()
+    {
+        return designContent;
+    }
+
+    public void setDesignContent( String designContent )
+    {
+        this.designContent = designContent;
+    }
+
     public String getType()
     {
         return type;

=== modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/resources/org/hisp/dhis/report/hibernate/Report.hbm.xml'
--- dhis-2/dhis-services/dhis-service-reporting/src/main/resources/org/hisp/dhis/report/hibernate/Report.hbm.xml	2009-09-14 16:00:37 +0000
+++ dhis-2/dhis-services/dhis-service-reporting/src/main/resources/org/hisp/dhis/report/hibernate/Report.hbm.xml	2010-05-17 13:40:52 +0000
@@ -16,6 +16,8 @@
 
     <property name="design"/>
 
+	<property name="designContent" type="text"/>
+
     <property name="type"/>
         
     <set name="reportTables" table="reportreporttables">

=== modified file 'dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/util/StreamUtils.java'
--- dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/util/StreamUtils.java	2010-05-06 11:38:23 +0000
+++ dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/util/StreamUtils.java	2010-05-17 13:40:52 +0000
@@ -31,6 +31,7 @@
 import java.io.BufferedOutputStream;
 import java.io.BufferedReader;
 import java.io.BufferedWriter;
+import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
@@ -40,6 +41,7 @@
 import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.io.Reader;
+import java.io.UnsupportedEncodingException;
 import java.io.Writer;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -187,6 +189,48 @@
     }
     
     /**
+     * Get an InputStream for the String.
+     * 
+     * @param string the String.
+     * @return the InputStream.
+     */
+    public static InputStream getInputStream( String string )
+    {
+        try
+        {
+            return new BufferedInputStream( new ByteArrayInputStream( string.getBytes( ENCODING_UTF ) ) );
+        }
+        catch ( UnsupportedEncodingException ex )
+        {
+            throw new RuntimeException( ex );
+        }
+    }
+    
+    /**
+     * Returns the content of the File as a String.
+     * 
+     * @param file the File.
+     * @return the String.
+     */
+    public static String getContent( File file )
+    {
+        try
+        {
+            BufferedInputStream in = new BufferedInputStream( new FileInputStream( file ) );
+            
+            byte[] bytes = new byte[(int)file.length()];
+            
+            in.read( bytes );
+            
+            return new String( bytes, ENCODING_UTF );
+        }
+        catch ( IOException ex )
+        {
+            throw new RuntimeException( ex );
+        }
+    }
+    
+    /**
      * Reads the content of the file to a StringBuffer. Each line is compared to
      * the keys of the argument map. If a line is matched, the line is replaced 
      * with the keys corresponding value. Passing null as replace map argument skips

=== modified file 'dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/reportviewer/action/AddReportAction.java'
--- dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/reportviewer/action/AddReportAction.java	2010-04-12 21:23:33 +0000
+++ dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/reportviewer/action/AddReportAction.java	2010-05-17 13:40:52 +0000
@@ -27,13 +27,15 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+import static org.hisp.dhis.system.util.ConversionUtils.getIntegerCollection;
+import static org.hisp.dhis.system.util.ConversionUtils.getSet;
+
 import java.io.File;
 import java.util.Collection;
 import java.util.Map;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.hisp.dhis.external.location.LocationManager;
 import org.hisp.dhis.i18n.I18n;
 import org.hisp.dhis.report.Report;
 import org.hisp.dhis.report.ReportManager;
@@ -44,8 +46,6 @@
 
 import com.opensymphony.xwork2.ActionSupport;
 
-import static org.hisp.dhis.system.util.ConversionUtils.*;
-
 /**
  * @author Lars Helge Overland
  * @version $Id: UploadDesignAction.java 5207 2008-05-22 12:16:36Z larshelg $
@@ -80,13 +80,6 @@
         this.reportTableService = reportTableService;
     }
     
-    private LocationManager locationManager;
-
-    public void setLocationManager( LocationManager locationManager )
-    {
-        this.locationManager = locationManager;
-    }
-
     // -----------------------------------------------------------------------
     // I18n
     // -----------------------------------------------------------------------
@@ -203,6 +196,18 @@
             return ERROR;
         }
 
+        // ---------------------------------------------------------------------
+        // Create report
+        // ---------------------------------------------------------------------
+
+        Report report = ( id == null ) ? new Report() : reportService.getReport( id );
+        
+        report.setName( name );
+        report.setDesign( fileName );
+        report.setType( type );
+        report.setReportTables( selectedReportTables != null ? getSet( 
+            reportTableService.getReportTables( getIntegerCollection( selectedReportTables ) ) ) : null );
+                
         log.info( "Upload file name: " + fileName + ", content type: " + contentType );
             
         if ( ( type != null && type.equals( Report.TYPE_JASPER ) ) && file != null )
@@ -211,7 +216,7 @@
             // Design file upload
             // -----------------------------------------------------------------
     
-            StreamUtils.write( file, locationManager.getFileForWriting( fileName, Report.TEMPLATE_DIR ) );
+            report.setDesignContent( StreamUtils.getContent( file ) );
         }
         else // BIRT
         {
@@ -241,18 +246,6 @@
             }
         }
         
-        // ---------------------------------------------------------------------
-        // Create and save report
-        // ---------------------------------------------------------------------
-
-        Report report = ( id == null ) ? new Report() : reportService.getReport( id );
-        
-        report.setName( name );
-        report.setDesign( fileName );
-        report.setType( type );
-        report.setReportTables( selectedReportTables != null ? getSet( 
-            reportTableService.getReportTables( getIntegerCollection( selectedReportTables ) ) ) : null );
-        
         reportService.saveReport( report );
         
         return SUCCESS;

=== modified file 'dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/reportviewer/action/GetAllReportsAction.java'
--- dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/reportviewer/action/GetAllReportsAction.java	2010-04-12 21:23:33 +0000
+++ dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/reportviewer/action/GetAllReportsAction.java	2010-05-17 13:40:52 +0000
@@ -104,7 +104,7 @@
         {
             for ( Report report : reportService.getAllReports() )
             {
-                report.setUrl( "renderReport.action?template=" + report.getDesign() );
+                report.setUrl( "renderReport.action?id=" + report.getId() );
                 
                 reports.add( report );
             }

=== modified file 'dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/reportviewer/action/RenderReportAction.java'
--- dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/reportviewer/action/RenderReportAction.java	2010-04-12 21:23:33 +0000
+++ dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/reportviewer/action/RenderReportAction.java	2010-05-17 13:40:52 +0000
@@ -27,7 +27,6 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-import java.io.File;
 import java.io.OutputStream;
 
 import javax.servlet.http.HttpServletResponse;
@@ -37,12 +36,10 @@
 import net.sf.jasperreports.engine.JasperFillManager;
 import net.sf.jasperreports.engine.JasperPrint;
 import net.sf.jasperreports.engine.JasperReport;
-import net.sf.jasperreports.engine.design.JasperDesign;
-import net.sf.jasperreports.engine.xml.JRXmlLoader;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.hisp.dhis.external.location.LocationManager;
+import org.hisp.dhis.report.Report;
+import org.hisp.dhis.report.ReportService;
+import org.hisp.dhis.system.util.StreamUtils;
 import org.hisp.dhis.util.StreamActionSupport;
 import org.springframework.jdbc.core.JdbcTemplate;
 
@@ -53,19 +50,15 @@
 public class RenderReportAction
     extends StreamActionSupport
 {
-    private static final Log log = LogFactory.getLog( RenderReportAction.class );
-    
-    private static final String TEMPLATE_DIR = "templates";
-
     // -------------------------------------------------------------------------
     // Dependencies
     // -------------------------------------------------------------------------
 
-    private LocationManager locationManager;
-    
-    public void setLocationManager( LocationManager locationManager )
+    private ReportService reportService;
+        
+    public void setReportService( ReportService reportService )
     {
-        this.locationManager = locationManager;
+        this.reportService = reportService;
     }
 
     private JdbcTemplate jdbcTemplate;
@@ -79,11 +72,11 @@
     // Input
     // -------------------------------------------------------------------------
 
-    private String template;
+    private Integer id;
     
-    public void setTemplate( String template )
+    public void setId( Integer id )
     {
-        this.template = template;
+        this.id = id;
     }
 
     // -------------------------------------------------------------------------
@@ -93,16 +86,12 @@
     @Override
     protected String execute( HttpServletResponse response, OutputStream out )
         throws Exception
-    {        
-        File file = locationManager.getFileForReading( template, TEMPLATE_DIR );
-            
-        log.info( "Report template: " + file );
-        
-        JasperDesign design = JRXmlLoader.load( file );
-        
-        JasperReport report = JasperCompileManager.compileReport( design );
-        
-        JasperPrint print = JasperFillManager.fillReport( report, null, jdbcTemplate.getDataSource().getConnection() );
+    {
+        Report report = reportService.getReport( id );
+        
+        JasperReport jasperReport = JasperCompileManager.compileReport( StreamUtils.getInputStream( report.getDesignContent() ) );
+        
+        JasperPrint print = JasperFillManager.fillReport( jasperReport, null, jdbcTemplate.getDataSource().getConnection() );
         
         JasperExportManager.exportReportToPdfStream( print, out );
                 

=== modified file 'dhis-2/dhis-web/dhis-web-reporting/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-web/dhis-web-reporting/src/main/resources/META-INF/dhis/beans.xml	2010-03-17 06:25:32 +0000
+++ dhis-2/dhis-web/dhis-web-reporting/src/main/resources/META-INF/dhis/beans.xml	2010-05-17 13:40:52 +0000
@@ -321,8 +321,6 @@
       ref="org.hisp.dhis.report.ReportService"/>
     <property name="reportTableService"
       ref="org.hisp.dhis.reporttable.ReportTableService"/>
-    <property name="locationManager"
-      ref="org.hisp.dhis.external.location.LocationManager"/>
   </bean>
   
   <bean id="org.hisp.dhis.reporting.reportviewer.action.GetReportOptionsAction"
@@ -389,10 +387,10 @@
   <bean id="org.hisp.dhis.reporting.reportviewer.action.RenderReportAction"
     class="org.hisp.dhis.reporting.reportviewer.action.RenderReportAction"
     scope="prototype">
-    <property name="locationManager"
-      ref="org.hisp.dhis.external.location.LocationManager"/>
+	<property name="reportService" 
+	  ref="org.hisp.dhis.report.ReportService"/>
     <property name="jdbcTemplate"
-      ref="jdbcTemplate"/>  
+      ref="jdbcTemplate"/>
   </bean>
   
   <!-- PivotTable -->