phpgroupware-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Phpgroupware-cvs] [20951] New feature: Generic support for jasper repor


From: Sigurd Nes
Subject: [Phpgroupware-cvs] [20951] New feature: Generic support for jasper report
Date: Wed, 13 Jan 2010 19:03:41 +0000

Revision: 20951
          
http://svn.sv.gnu.org/viewvc/?view=rev&root=phpgroupware&revision=20951
Author:   sigurdne
Date:     2010-01-13 19:03:41 +0000 (Wed, 13 Jan 2010)
Log Message:
-----------
New feature: Generic support for jasper report

Added Paths:
-----------
    people/sigurdne/modules/phpgwapi/trunk/inc/class.jasper_wrapper.inc.php
    people/sigurdne/modules/phpgwapi/trunk/inc/jasper/readme_config.txt

Added: people/sigurdne/modules/phpgwapi/trunk/inc/class.jasper_wrapper.inc.php
===================================================================
--- people/sigurdne/modules/phpgwapi/trunk/inc/class.jasper_wrapper.inc.php     
                        (rev 0)
+++ people/sigurdne/modules/phpgwapi/trunk/inc/class.jasper_wrapper.inc.php     
2010-01-13 19:03:41 UTC (rev 20951)
@@ -0,0 +1,179 @@
+<?php
+       // Java-bin path
+       define('JAVA_BIN', '/usr/bin/java');
+
+       // path to JasperEngine.class
+       define('JASPER_BIN', PHPGW_API_INC.'/jasper/bin/');
+
+       # path to the Jasper libraries
+       # N.B. should always end with a /
+       define ('JASPER_LIBS', PHPGW_API_INC .'/jasper/lib/');
+
+       class phpgwapi_jasper_wrapper
+       {
+               # path to the Jasper config file (containing the report-list)
+               var $jasper_config = ''; 
//PHPGW_SERVER_ROOT.'/booking/jasper/jasper_config.xml';
+
+               public function __construct()
+               {
+                       if (stristr(PHP_OS, 'WIN')) 
+                       { 
+                               $sep = ';';// Win 
+                       }
+                       else
+                       { 
+                               $sep = ':';// Other
+                       }
+
+//                     $java_classpath = ':.:';
+
+                       $java_classpath = "{$sep}.{$sep}";
+                       foreach (glob(JASPER_LIBS . "*.jar") as $filename) 
+                       {
+                               $java_classpath .=  $filename . $sep;
+                       }
+                       $this->java_classpath = $java_classpath;
+
+                       $_key = 
$GLOBALS['phpgw_info']['server']['setup_mcrypt_key'];
+                       $_iv  = $GLOBALS['phpgw_info']['server']['mcrypt_iv'];
+                       $crypto = createObject('phpgwapi.crypto',array($_key, 
$_iv));
+
+                       $db_host = 
$crypto->decrypt($GLOBALS['phpgw_info']['server']['db_host']);
+                       $db_name = 
$crypto->decrypt($GLOBALS['phpgw_info']['server']['db_name']);
+                       $this->db_user = 
$crypto->decrypt($GLOBALS['phpgw_info']['server']['db_user']);
+                       $this->db_pass = 
$crypto->decrypt($GLOBALS['phpgw_info']['server']['db_pass']);
+                       $this->connection_string = "";
+
+                       if ($GLOBALS['phpgw_info']['server']['db_type'] == 
"postgres") 
+                       {
+                               $this->connection_string = 
"jdbc:postgresql://".$db_host.":5432/".$db_name;
+                       } 
+                       elseif ($GLOBALS['phpgw_info']['server']['db_type'] == 
"mysql") 
+                       {
+                               $this->connection_string = 
"jdbc:postgresql://".$db_host.":3306/".$db_name;
+                       }
+               }
+
+               public function execute($parameters, $output_type, 
$report_name, &$err) 
+               {
+                       if (!chdir(JASPER_BIN)) 
+                       {
+                               $err['chdir'] = lang('Unable to perform chdir');
+                               return 102;
+                       }
+
+                       $cmd = sprintf("CLASSPATH=%s %s -D%s JasperEngine -p %s 
-t %s -n %s -d %s -u %s -P %s %s",
+                                                       $this->java_classpath,
+                                                       JAVA_BIN,
+                                                       
'java.awt.headless=true', // To run the environment with a headless 
implementation (when apache-user can't connect to X11)
+                                                       $parameters,
+                                                       $output_type,
+                                                       $report_name,
+                                                       
$this->connection_string,
+                                                       $this->db_user,
+                                                       $this->db_pass,
+                                                       $this->jasper_config);
+
+                       exec($cmd, $cmd_output, $retval);
+               //  echo $cmd . ":retval: " . $retval;
+                       //  exit(0);
+
+                       switch ($retval) 
+                       {
+                               case 201:
+                                       $err['corrupt template'] = 
lang('Corrupt template');
+                                       break;
+
+                               case 202:
+                                       $err['fill report'] = lang('Unable to 
fill report');
+                                       break;
+
+                               case 203:
+                                       $err['report object'] = lang('Corrupt 
report object');
+                                       break;
+
+                               case 204:
+                                       $err['pdf'] = lang('Unable to export to 
PDF');
+                                       break;
+
+                               case 205:
+                                       $err['csv'] = lang('Unable to export to 
CSV');
+                                       break;
+
+                               case 206:
+                                       $err['xls'] = lang('Unable to export to 
XLS');
+                                       break;
+
+                               case 207:
+                                       $err['parse'] = lang('Unable to parse 
configuration');
+                                       break;
+
+                               case 208:
+                                       $err['invalid output'] = lang('Invalid 
output-type provided');
+                                       break;
+
+                               case 209:
+                                       $err['mysql driver'] = lang('Unable to 
load the MySQL driver');
+                                       break;
+
+                               case 210:
+                                       $err['psql driver'] = lang('Unable to 
load the PostgreSQL driver');
+                                       break;
+
+                               case 211:
+                                       $err['connect'] = lang('Unable to 
connect to database');
+                                       break;
+
+                               case 212:
+                                       $err['no name'] = lang('Missing 
report-name');
+                                       break;
+
+                               case 213:
+                                       $err['invalid rname'] = lang('Invalid 
report-name');
+                                       break;
+
+                               case 214:
+                                       $err['invalid rname'] = lang('Missing 
configuration file');
+                                       break;
+
+                               case 215:
+                                       $err['missing cs'] = lang('Missing 
connection-string');
+                                       break;
+
+                               case 216:
+                                       $err['missing du'] = lang('Missing 
DB-username');
+                                       break;
+
+                               case 217:
+                                       $err['missing dp'] = lang('Missing 
DB-password');
+                                       break;
+
+                               case 0:
+                                       $output = join("\n", $cmd_output);
+                                       if ($output_type == 'PDF') 
+                                       {
+                                               $mime= 'application/pdf';
+                                               $filename 
="{$report_name}.pdf"; 
+                                       } 
+                                       else if ($output_type == 'CSV') 
+                                       {
+                                               $mime= 'text/csv';
+                                               $filename 
="{$report_name}.csv"; 
+                                       } 
+                                       else if ($output_type == 'XLS') 
+                                       {
+                                               $mime= 
'application/vnd.ms-excel';
+                                               $filename 
="{$report_name}.xls"; 
+                                       } 
+                                       else 
+                                       { // should never arise                 
                                                                                
                                                          
+                                               $mime= 
'application/octet-stream';
+                                               $filename 
="{$report_name}.dat"; 
+                                       }
+
+                               $browser = CreateObject('phpgwapi.browser');
+                               
$browser->content_header($filename,$mime,strlen($output));
+                               echo $output;
+                       }
+               }
+       }

Added: people/sigurdne/modules/phpgwapi/trunk/inc/jasper/readme_config.txt
===================================================================
--- people/sigurdne/modules/phpgwapi/trunk/inc/jasper/readme_config.txt         
                (rev 0)
+++ people/sigurdne/modules/phpgwapi/trunk/inc/jasper/readme_config.txt 
2010-01-13 19:03:41 UTC (rev 20951)
@@ -0,0 +1,21 @@
+
+//Generate config-file on the fly
+// Start-------------------------------------------------
+       $report_name            = 'report_participants';
+       $report_source          = 
'/var/www/bk/dev-sigurd-2/booking/jasper/templates/participants.jrxml';         
              
+
+       $memory = xmlwriter_open_memory();
+       xmlwriter_start_document($memory,'1.0','UTF-8');
+
+       xmlwriter_start_element ($memory,'JasperConfig'); // <JasperConfig>
+               xmlwriter_start_element ($memory,'Reports'); // <Reports>       
+                       xmlwriter_start_element ($memory,'Report'); // <Report> 
                
+                               xmlwriter_write_attribute( $memory, 'name', 
$report_name);
+                               xmlwriter_write_attribute( $memory, 'source', 
$report_source);
+                       xmlwriter_end_element($memory); // </Report>
+               xmlwriter_end_element($memory); // </Reports>
+       xmlwriter_end_element($memory); // </JasperConfig>
+       $xml = xmlwriter_output_memory($memory,true);
+
+// Slutt-------------------------------
+





reply via email to

[Prev in Thread] Current Thread [Next in Thread]