Commit a1745259ff005065f276c09a449d61a81474eceb
1 parent
e8e56ec0
Exists in
master
Implementação de recursos de relatório PENTAHO
Showing
4 changed files
with
126 additions
and
11 deletions
Show diff stats
cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/model/ReportDataSource.java
@@ -75,6 +75,7 @@ public class ReportDataSource extends PersistentObject { | @@ -75,6 +75,7 @@ public class ReportDataSource extends PersistentObject { | ||
75 | 75 | ||
76 | public ReportDataSource(ReportDataSource reportDataSource) { | 76 | public ReportDataSource(ReportDataSource reportDataSource) { |
77 | this.type = reportDataSource.getType(); | 77 | this.type = reportDataSource.getType(); |
78 | + this.connection = reportDataSource.getConnection(); | ||
78 | this.dataObject = reportDataSource.getDataObject(); | 79 | this.dataObject = reportDataSource.getDataObject(); |
79 | this.flow = reportDataSource.getFlow(); | 80 | this.flow = reportDataSource.getFlow(); |
80 | this.scriptCode = reportDataSource.getScriptCode(); | 81 | this.scriptCode = reportDataSource.getScriptCode(); |
cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/PentahoReportManagerImpl.java
1 | package br.com.centralit.esi.api.resource.service.impl; | 1 | package br.com.centralit.esi.api.resource.service.impl; |
2 | 2 | ||
3 | +import java.io.FileInputStream; | ||
4 | +import java.io.IOException; | ||
5 | +import java.net.MalformedURLException; | ||
6 | +import java.sql.Connection; | ||
3 | import java.util.HashMap; | 7 | import java.util.HashMap; |
8 | +import java.util.Map; | ||
4 | 9 | ||
10 | +import org.pentaho.reporting.engine.classic.core.MasterReport; | ||
11 | +import org.pentaho.reporting.engine.classic.core.ReportProcessingException; | ||
12 | +import org.pentaho.reporting.engine.classic.core.modules.misc.datafactory.sql.SQLReportDataFactory; | ||
13 | +import org.pentaho.reporting.engine.classic.core.modules.output.pageable.pdf.PdfReportUtil; | ||
14 | +import org.pentaho.reporting.engine.classic.core.modules.output.table.html.HtmlReportUtil; | ||
15 | +import org.pentaho.reporting.engine.classic.core.modules.output.table.xls.ExcelReportUtil; | ||
16 | +import org.pentaho.reporting.libraries.resourceloader.ResourceException; | ||
5 | import org.springframework.stereotype.Component; | 17 | import org.springframework.stereotype.Component; |
6 | 18 | ||
19 | +import br.com.centralit.esi.api.data.core.DataObjectUtil; | ||
20 | +import br.com.centralit.esi.api.enumerated.ReportFormatTypeEnum; | ||
21 | +import br.com.centralit.esi.api.enumerated.ResourceTypeEnum; | ||
22 | +import br.com.centralit.esi.api.resource.model.ReportDataSource; | ||
7 | import br.com.centralit.esi.api.resource.model.ReportVersion; | 23 | import br.com.centralit.esi.api.resource.model.ReportVersion; |
8 | import br.com.centralit.esi.api.resource.service.PentahoReportManager; | 24 | import br.com.centralit.esi.api.resource.service.PentahoReportManager; |
25 | +import br.com.centralit.esi.api.util.DefaultConvertUtils; | ||
26 | +import br.com.centralit.esi.api.util.PentahooReportUtil; | ||
27 | +import br.com.centralit.esi.exception.EsiExecutionException; | ||
9 | 28 | ||
10 | @Component("pentahoReportManager") | 29 | @Component("pentahoReportManager") |
11 | public class PentahoReportManagerImpl extends ReportManagerImpl implements PentahoReportManager { | 30 | public class PentahoReportManagerImpl extends ReportManagerImpl implements PentahoReportManager { |
@@ -16,21 +35,104 @@ public class PentahoReportManagerImpl extends ReportManagerImpl implements Penta | @@ -16,21 +35,104 @@ public class PentahoReportManagerImpl extends ReportManagerImpl implements Penta | ||
16 | private static final long serialVersionUID = 1L; | 35 | private static final long serialVersionUID = 1L; |
17 | 36 | ||
18 | @Override | 37 | @Override |
19 | - protected Object buildDataSource(ReportVersion report, HashMap<String, Object> parameters) { | ||
20 | - // TODO Auto-generated method stub | ||
21 | - return null; | 38 | + protected SQLReportDataFactory buildDataSource(ReportVersion report, HashMap<String, Object> parameters) { |
39 | + ReportDataSource reportDataSource = report.getDataSource(); | ||
40 | + SQLReportDataFactory dataSource = null; | ||
41 | + Connection connection = null; | ||
42 | + | ||
43 | + switch (reportDataSource.getType()) { | ||
44 | + case CONNECTION: | ||
45 | + connection = dataSourceService.connect(report.getDataSource().getConnection()); | ||
46 | + dataSource = new SQLReportDataFactory(connection); | ||
47 | + break; | ||
48 | + | ||
49 | + case DATAOBJECT: | ||
50 | + connection = dataSourceService.connect(reportDataSource.getDataObject().getDataSource()); | ||
51 | + dataSource = new SQLReportDataFactory(connection); | ||
52 | + if (reportDataSource.getCustomSQL() != null) { | ||
53 | + dataSource.setQuery(reportDataSource.getDataObject().getName(), reportDataSource.getCustomSQL().getSql()); | ||
54 | + }else{ | ||
55 | + dataSource.setQuery(reportDataSource.getDataObject().getName(), DataObjectUtil.buildSelectSQL(reportDataSource.getDataObject())); | ||
56 | + } | ||
57 | + break; | ||
58 | + | ||
59 | + default: | ||
60 | + break; | ||
61 | + } | ||
62 | + | ||
63 | + return dataSource; | ||
22 | } | 64 | } |
23 | 65 | ||
24 | @Override | 66 | @Override |
25 | - public byte[] execute(ReportVersion reportVersion, HashMap<String, Object> parameters) { | ||
26 | - // TODO Auto-generated method stub | ||
27 | - return null; | 67 | + public byte[] execute(ReportVersion report, HashMap<String, Object> inputMap) { |
68 | + byte[] buffer = null; | ||
69 | + | ||
70 | + String path = ResourceTypeEnum.REPORT.getPath(); | ||
71 | + | ||
72 | + String pathReport = servletContext.getRealPath(path+"/"+report.getFileName()); | ||
73 | + | ||
74 | + Map<String, Object> params = this.buildParams(report, inputMap); | ||
75 | + | ||
76 | + ReportFormatTypeEnum outType = ReportFormatTypeEnum.PDF; | ||
77 | + | ||
78 | + DefaultConvertUtils.registerDefaultConverts(); | ||
79 | + PentahooReportUtil pentahooReportUtil = new PentahooReportUtil(); | ||
80 | + MasterReport masterReport = null; | ||
81 | + try { | ||
82 | + SQLReportDataFactory dataSource = this.buildDataSource(report, inputMap); | ||
83 | + masterReport = pentahooReportUtil.getCompleteReportDefinition(pathReport, params, dataSource); | ||
84 | + } catch (MalformedURLException e) { | ||
85 | + e.printStackTrace(); | ||
86 | + throw new EsiExecutionException(e); | ||
87 | + } catch (ResourceException e) { | ||
88 | + e.printStackTrace(); | ||
89 | + throw new EsiExecutionException(e); | ||
90 | + } | ||
91 | + | ||
92 | + String outputPath = ""; | ||
93 | + try{ | ||
94 | + switch (outType) { | ||
95 | + case HTML: | ||
96 | + outputPath = pathReport.replaceAll(".prpt", ".html"); | ||
97 | + HtmlReportUtil.createDirectoryHTML(masterReport, outputPath); | ||
98 | + break; | ||
99 | + | ||
100 | + case PDF: | ||
101 | + outputPath = pathReport.replaceAll(".prpt", ".pdf"); | ||
102 | + PdfReportUtil.createPDF(masterReport, outputPath); | ||
103 | + break; | ||
104 | + | ||
105 | + case EXCEL: | ||
106 | + outputPath = pathReport.replaceAll(".prpt", ".xlsx"); | ||
107 | + ExcelReportUtil.createXLSX(masterReport, outputPath); | ||
108 | + break; | ||
109 | + | ||
110 | + default: | ||
111 | + break; | ||
112 | + } | ||
113 | + } catch (IOException e) { | ||
114 | + e.printStackTrace(); | ||
115 | + throw new EsiExecutionException(e); | ||
116 | + } catch (ReportProcessingException e) { | ||
117 | + e.printStackTrace(); | ||
118 | + throw new EsiExecutionException(e); | ||
119 | + } | ||
120 | + | ||
121 | + String fullPath = servletContext.getRealPath(outputPath); | ||
122 | + try { | ||
123 | + FileInputStream is = new FileInputStream(fullPath); | ||
124 | + buffer = new byte[is.available()]; | ||
125 | + is.read(buffer); | ||
126 | + is.close(); | ||
127 | + } catch (Exception e) { | ||
128 | + e.printStackTrace(); | ||
129 | + } | ||
130 | + | ||
131 | + return buffer; | ||
28 | } | 132 | } |
29 | 133 | ||
30 | @Override | 134 | @Override |
31 | - public void compile(ReportVersion reportVersion) { | ||
32 | - // TODO Auto-generated method stub | ||
33 | - | 135 | + public void compile(ReportVersion reportVersion) { |
34 | } | 136 | } |
35 | 137 | ||
36 | } | 138 | } |
37 | \ No newline at end of file | 139 | \ No newline at end of file |
cit-esi-web/src/main/webapp/assets/js/angular/custom/controller/ReportController.js
@@ -32,8 +32,16 @@ citApp.controller('ReportController', ["$scope", "appService", "ReportRepository | @@ -32,8 +32,16 @@ citApp.controller('ReportController', ["$scope", "appService", "ReportRepository | ||
32 | $scope.reportEngineList = result; | 32 | $scope.reportEngineList = result; |
33 | }); | 33 | }); |
34 | 34 | ||
35 | + $scope.dataSourceList = {}; | ||
36 | + $scope.dataSourceList.JASPER = []; | ||
37 | + $scope.dataSourceList.PENTAHO = []; | ||
35 | DomainRepository.getEnumeratedDomain('ReportDataSourceEnum').then(function(result) { | 38 | DomainRepository.getEnumeratedDomain('ReportDataSourceEnum').then(function(result) { |
36 | - $scope.reportDataSourceList = result; | 39 | + angular.forEach(result, function (type) { |
40 | + $scope.dataSourceList.JASPER.push(type); | ||
41 | + if (type.chave != 'FLOW' && type.chave != 'SCRIPT') { | ||
42 | + $scope.dataSourceList.PENTAHO.push(type); | ||
43 | + } | ||
44 | + }); | ||
37 | }); | 45 | }); |
38 | 46 | ||
39 | DomainRepository.getEnumeratedDomain('ReportParameterTypeEnum').then(function(result) { | 47 | DomainRepository.getEnumeratedDomain('ReportParameterTypeEnum').then(function(result) { |
@@ -430,6 +438,8 @@ citApp.controller('ReportController', ["$scope", "appService", "ReportRepository | @@ -430,6 +438,8 @@ citApp.controller('ReportController', ["$scope", "appService", "ReportRepository | ||
430 | $scope.appController.activeWorkspace($scope.workspace); | 438 | $scope.appController.activeWorkspace($scope.workspace); |
431 | } | 439 | } |
432 | 440 | ||
441 | + $scope.reportDataSourceList = $scope.dataSourceList[$scope.report.engine]; | ||
442 | + | ||
433 | $scope.edit = edit; | 443 | $scope.edit = edit; |
434 | 444 | ||
435 | $scope.newReport = false; | 445 | $scope.newReport = false; |
cit-esi-web/src/main/webapp/assets/js/angular/custom/controller/ReportFileController.js
@@ -117,7 +117,7 @@ citApp.controller('ReportFileController', ["$scope", "appService", "ReportReposi | @@ -117,7 +117,7 @@ citApp.controller('ReportFileController', ["$scope", "appService", "ReportReposi | ||
117 | $scope.uploader.filters.push({ | 117 | $scope.uploader.filters.push({ |
118 | name: 'reportFilter', | 118 | name: 'reportFilter', |
119 | fn: function(item /*{File|FileLikeObject}*/, options) { | 119 | fn: function(item /*{File|FileLikeObject}*/, options) { |
120 | - return item.name.indexOf(".jrxml") !== -1; | 120 | + return item.name.indexOf(".jrxml") !== -1 || item.name.indexOf(".prpt") !== -1; |
121 | } | 121 | } |
122 | }); | 122 | }); |
123 | 123 | ||
@@ -156,6 +156,8 @@ citApp.controller('ReportFileController', ["$scope", "appService", "ReportReposi | @@ -156,6 +156,8 @@ citApp.controller('ReportFileController', ["$scope", "appService", "ReportReposi | ||
156 | $scope.report.engine = undefined; | 156 | $scope.report.engine = undefined; |
157 | if (fileName.indexOf(".jrxml") > 0) {; | 157 | if (fileName.indexOf(".jrxml") > 0) {; |
158 | $scope.report.engine = 'JASPER'; | 158 | $scope.report.engine = 'JASPER'; |
159 | + }else{ | ||
160 | + $scope.report.engine = 'PENTAHO'; | ||
159 | } | 161 | } |
160 | }; | 162 | }; |
161 | 163 |