@@ -93,6 +93,47 @@ public void produceReport(final String reporterId, final List<String> pathList)
93
93
jdbcTemplate .update (plsql , binds );
94
94
}
95
95
96
+ public void produceReportWithCoverage (final String realtimeReporterId , final String coverageReporterId ,
97
+ final List <String > pathList , final List <String > schemaList , final List <String > includeObjectList ,
98
+ final List <String > excludeObjectList ) {
99
+ StringBuilder sb = new StringBuilder ();
100
+ sb .append ("DECLARE\n " );
101
+ sb .append (" l_rt_rep ut_realtime_reporter := ut_realtime_reporter();\n " );
102
+ sb .append (" l_cov_rep ut_coverage_html_reporter := ut_coverage_html_reporter();\n " );
103
+ sb .append ("BEGIN\n " );
104
+ sb .append (" l_rt_rep.set_reporter_id(?);\n " );
105
+ sb .append (" l_rt_rep.output_buffer.init();\n " );
106
+ sb .append (" l_cov_rep.set_reporter_id(?);\n " );
107
+ sb .append (" l_cov_rep.output_buffer.init();\n " );
108
+ sb .append (" sys.dbms_output.enable(NULL);\n " );
109
+ sb .append (" ut_runner.run(\n " );
110
+ sb .append (" a_paths => ut_varchar2_list(\n " );
111
+ sb .append (StringTools .getCSV (pathList , 31 ));
112
+ sb .append (" ),\n " );
113
+ if (!schemaList .isEmpty ()) {
114
+ sb .append (" a_coverage_schemes => ut_varchar2_list(\n " );
115
+ sb .append (StringTools .getCSV (schemaList , 31 ));
116
+ sb .append (" ),\n " );
117
+ }
118
+ if (!includeObjectList .isEmpty ()) {
119
+ sb .append (" a_include_objects => ut_varchar2_list(\n " );
120
+ sb .append (StringTools .getCSV (includeObjectList , 31 ));
121
+ sb .append (" ),\n " );
122
+ }
123
+ if (!excludeObjectList .isEmpty ()) {
124
+ sb .append (" a_exclude_objects => ut_varchar2_list(\n " );
125
+ sb .append (StringTools .getCSV (excludeObjectList , 31 ));
126
+ sb .append (" ),\n " );
127
+ }
128
+ sb .append (" a_reporters => ut_reporters(l_rt_rep, l_cov_rep)\n " );
129
+ sb .append (" );\n " );
130
+ sb .append (" sys.dbms_output.disable;\n " );
131
+ sb .append ("END;" );
132
+ final String plsql = sb .toString ();
133
+ final Object [] binds = { realtimeReporterId , coverageReporterId };
134
+ jdbcTemplate .update (plsql , binds );
135
+ }
136
+
96
137
public void consumeReport (final String reporterId , final RealtimeReporterEventConsumer consumer ) {
97
138
StringBuilder sb = new StringBuilder ();
98
139
sb .append ("DECLARE\n " );
@@ -108,7 +149,7 @@ public Void doInCallableStatement(final CallableStatement cs) throws SQLExceptio
108
149
cs .setString (1 , reporterId );
109
150
cs .registerOutParameter (2 , OracleTypes .CURSOR );
110
151
cs .execute ();
111
- final ResultSet rs = (( ResultSet ) cs .getObject (2 ) );
152
+ final ResultSet rs = (ResultSet ) cs .getObject (2 );
112
153
while (rs .next ()) {
113
154
final String itemType = rs .getString ("item_type" );
114
155
final Clob textClob = rs .getClob ("text" );
@@ -124,6 +165,36 @@ public Void doInCallableStatement(final CallableStatement cs) throws SQLExceptio
124
165
});
125
166
}
126
167
168
+ public String getHtmlCoverage (final String reporterId ) {
169
+ StringBuilder sb = new StringBuilder ();
170
+ sb .append ("DECLARE\n " );
171
+ sb .append (" l_reporter ut_coverage_html_reporter := ut_coverage_html_reporter();\n " );
172
+ sb .append ("BEGIN\n " );
173
+ sb .append (" l_reporter.set_reporter_id(?);\n " );
174
+ sb .append (" ? := l_reporter.get_lines_cursor();\n " );
175
+ sb .append ("END;" );
176
+ final String plsql = sb .toString ();
177
+ return jdbcTemplate .execute (plsql , new CallableStatementCallback <String >() {
178
+ @ Override
179
+ public String doInCallableStatement (final CallableStatement cs ) throws SQLException {
180
+ cs .setString (1 , reporterId );
181
+ cs .registerOutParameter (2 , OracleTypes .CURSOR );
182
+ cs .execute ();
183
+ final StringBuilder sb = new StringBuilder ();
184
+ final ResultSet rs = (ResultSet ) cs .getObject (2 );
185
+ while (rs .next ()) {
186
+ final String text = rs .getString ("text" );
187
+ if (text != null ) {
188
+ sb .append (text );
189
+ sb .append ('\n' );
190
+ }
191
+ }
192
+ rs .close ();
193
+ return sb .toString ();
194
+ }
195
+ });
196
+ }
197
+
127
198
private RealtimeReporterEvent convert (final String itemType , final String text ) {
128
199
logger .fine (() -> "\n ---- " + itemType + " ----\n " + text );
129
200
try {
0 commit comments