Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 8be0c92

Browse files
add methods produceReportWithCoverage and getHtmlCoverage
1 parent 584cc33 commit 8be0c92

File tree

1 file changed

+72
-1
lines changed

1 file changed

+72
-1
lines changed

sqldev/src/main/java/org/utplsql/sqldev/dal/RealtimeReporterDao.java

Lines changed: 72 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,47 @@ public void produceReport(final String reporterId, final List<String> pathList)
9393
jdbcTemplate.update(plsql, binds);
9494
}
9595

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+
96137
public void consumeReport(final String reporterId, final RealtimeReporterEventConsumer consumer) {
97138
StringBuilder sb = new StringBuilder();
98139
sb.append("DECLARE\n");
@@ -108,7 +149,7 @@ public Void doInCallableStatement(final CallableStatement cs) throws SQLExceptio
108149
cs.setString(1, reporterId);
109150
cs.registerOutParameter(2, OracleTypes.CURSOR);
110151
cs.execute();
111-
final ResultSet rs = ((ResultSet) cs.getObject(2));
152+
final ResultSet rs = (ResultSet) cs.getObject(2);
112153
while (rs.next()) {
113154
final String itemType = rs.getString("item_type");
114155
final Clob textClob = rs.getClob("text");
@@ -124,6 +165,36 @@ public Void doInCallableStatement(final CallableStatement cs) throws SQLExceptio
124165
});
125166
}
126167

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+
127198
private RealtimeReporterEvent convert(final String itemType, final String text) {
128199
logger.fine(() -> "\n---- " + itemType + " ----\n" + text);
129200
try {

0 commit comments

Comments
 (0)