Skip to content

Commit 97a9b23

Browse files
Extract God class and Highly Coupled Class rendering into separate methods
1 parent 9bc6bc4 commit 97a9b23

File tree

1 file changed

+103
-93
lines changed

1 file changed

+103
-93
lines changed

report/src/main/java/org/hjug/refactorfirst/report/SimpleHtmlReport.java

Lines changed: 103 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -174,125 +174,135 @@ public void execute(
174174
}
175175

176176
if (!rankedGodClassDisharmonies.isEmpty()) {
177-
int maxGodClassPriority = rankedGodClassDisharmonies
178-
.get(rankedGodClassDisharmonies.size() - 1)
179-
.getPriority();
177+
renderGodClassInfo(showDetails, outputDirectory, rankedGodClassDisharmonies, stringBuilder, godClassTableHeadings, formatter);
178+
}
180179

181-
stringBuilder.append("<div style=\"text-align: center;\"><a id=\"GOD\"><h1>God Classes</h1></a></div>");
180+
if (!rankedGodClassDisharmonies.isEmpty() && !rankedCBODisharmonies.isEmpty()) {
181+
stringBuilder.append("<br/>\n" + "<br/>\n" + "<br/>\n" + "<br/>\n" + "<hr/>\n" + "<br/>\n" + "<br/>");
182+
}
182183

183-
renderGodClassChart(outputDirectory, rankedGodClassDisharmonies, maxGodClassPriority, stringBuilder);
184+
if (!rankedCBODisharmonies.isEmpty()) {
185+
renderHighlyCoupledClassInfo(outputDirectory, stringBuilder, rankedCBODisharmonies, formatter);
186+
}
184187

185-
stringBuilder.append(
186-
"<h2 align=\"center\">God classes by the numbers: (Refactor Starting with Priority 1)</h2>");
187-
stringBuilder.append("<table align=\"center\" border=\"5px\">");
188+
stringBuilder.append("</section>");
189+
printProjectFooter(stringBuilder, formatter);
190+
stringBuilder.append(THE_END);
188191

189-
// Content
190-
stringBuilder.append("<thead><tr>");
191-
for (String heading : godClassTableHeadings) {
192-
stringBuilder.append("<th>").append(heading).append("</th>");
193-
}
194-
stringBuilder.append("</tr></thead>");
195-
196-
stringBuilder.append("<tbody>");
197-
for (RankedDisharmony rankedGodClassDisharmony : rankedGodClassDisharmonies) {
198-
stringBuilder.append("<tr>");
199-
200-
String[] simpleRankedGodClassDisharmonyData = {
201-
rankedGodClassDisharmony.getFileName(),
202-
rankedGodClassDisharmony.getPriority().toString(),
203-
rankedGodClassDisharmony.getChangePronenessRank().toString(),
204-
rankedGodClassDisharmony.getEffortRank().toString(),
205-
rankedGodClassDisharmony.getWmc().toString(),
206-
formatter.format(rankedGodClassDisharmony.getMostRecentCommitTime()),
207-
rankedGodClassDisharmony.getCommitCount().toString()
208-
};
209-
210-
String[] detailedRankedGodClassDisharmonyData = {
211-
rankedGodClassDisharmony.getFileName(),
212-
rankedGodClassDisharmony.getPriority().toString(),
213-
rankedGodClassDisharmony.getRawPriority().toString(),
214-
rankedGodClassDisharmony.getChangePronenessRank().toString(),
215-
rankedGodClassDisharmony.getEffortRank().toString(),
216-
rankedGodClassDisharmony.getWmc().toString(),
217-
rankedGodClassDisharmony.getWmcRank().toString(),
218-
rankedGodClassDisharmony.getAtfd().toString(),
219-
rankedGodClassDisharmony.getAtfdRank().toString(),
220-
rankedGodClassDisharmony.getTcc().toString(),
221-
rankedGodClassDisharmony.getTccRank().toString(),
222-
formatter.format(rankedGodClassDisharmony.getFirstCommitTime()),
223-
formatter.format(rankedGodClassDisharmony.getMostRecentCommitTime()),
224-
rankedGodClassDisharmony.getCommitCount().toString(),
225-
rankedGodClassDisharmony.getPath()
226-
};
227-
228-
final String[] rankedDisharmonyData =
229-
showDetails ? detailedRankedGodClassDisharmonyData : simpleRankedGodClassDisharmonyData;
230-
231-
for (String rowData : rankedDisharmonyData) {
232-
drawTableCell(rowData, stringBuilder);
233-
}
234-
235-
stringBuilder.append("</tr>");
236-
}
192+
log.debug(stringBuilder.toString());
193+
194+
writeReportToDisk(outputDirectory, filename, stringBuilder);
195+
log.info("Done! View the report at target/site/{}", filename);
196+
}
197+
198+
private void renderGodClassInfo(boolean showDetails, String outputDirectory, List<RankedDisharmony> rankedGodClassDisharmonies, StringBuilder stringBuilder, String[] godClassTableHeadings, DateTimeFormatter formatter) {
199+
int maxGodClassPriority = rankedGodClassDisharmonies
200+
.get(rankedGodClassDisharmonies.size() - 1)
201+
.getPriority();
202+
203+
stringBuilder.append("<div style=\"text-align: center;\"><a id=\"GOD\"><h1>God Classes</h1></a></div>");
237204

238-
stringBuilder.append("</tbody>");
239-
stringBuilder.append("</table>");
205+
renderGodClassChart(outputDirectory, rankedGodClassDisharmonies, maxGodClassPriority, stringBuilder);
206+
207+
stringBuilder.append(
208+
"<h2 align=\"center\">God classes by the numbers: (Refactor Starting with Priority 1)</h2>");
209+
stringBuilder.append("<table align=\"center\" border=\"5px\">");
210+
211+
// Content
212+
stringBuilder.append("<thead><tr>");
213+
for (String heading : godClassTableHeadings) {
214+
stringBuilder.append("<th>").append(heading).append("</th>");
240215
}
216+
stringBuilder.append("</tr></thead>");
217+
218+
stringBuilder.append("<tbody>");
219+
for (RankedDisharmony rankedGodClassDisharmony : rankedGodClassDisharmonies) {
220+
stringBuilder.append("<tr>");
221+
222+
String[] simpleRankedGodClassDisharmonyData = {
223+
rankedGodClassDisharmony.getFileName(),
224+
rankedGodClassDisharmony.getPriority().toString(),
225+
rankedGodClassDisharmony.getChangePronenessRank().toString(),
226+
rankedGodClassDisharmony.getEffortRank().toString(),
227+
rankedGodClassDisharmony.getWmc().toString(),
228+
formatter.format(rankedGodClassDisharmony.getMostRecentCommitTime()),
229+
rankedGodClassDisharmony.getCommitCount().toString()
230+
};
231+
232+
String[] detailedRankedGodClassDisharmonyData = {
233+
rankedGodClassDisharmony.getFileName(),
234+
rankedGodClassDisharmony.getPriority().toString(),
235+
rankedGodClassDisharmony.getRawPriority().toString(),
236+
rankedGodClassDisharmony.getChangePronenessRank().toString(),
237+
rankedGodClassDisharmony.getEffortRank().toString(),
238+
rankedGodClassDisharmony.getWmc().toString(),
239+
rankedGodClassDisharmony.getWmcRank().toString(),
240+
rankedGodClassDisharmony.getAtfd().toString(),
241+
rankedGodClassDisharmony.getAtfdRank().toString(),
242+
rankedGodClassDisharmony.getTcc().toString(),
243+
rankedGodClassDisharmony.getTccRank().toString(),
244+
formatter.format(rankedGodClassDisharmony.getFirstCommitTime()),
245+
formatter.format(rankedGodClassDisharmony.getMostRecentCommitTime()),
246+
rankedGodClassDisharmony.getCommitCount().toString(),
247+
rankedGodClassDisharmony.getPath()
248+
};
249+
250+
final String[] rankedDisharmonyData =
251+
showDetails ? detailedRankedGodClassDisharmonyData : simpleRankedGodClassDisharmonyData;
252+
253+
for (String rowData : rankedDisharmonyData) {
254+
drawTableCell(rowData, stringBuilder);
255+
}
241256

242-
if (!rankedCBODisharmonies.isEmpty()) {
257+
stringBuilder.append("</tr>");
258+
}
243259

244-
stringBuilder.append("<br/>\n" + "<br/>\n" + "<br/>\n" + "<br/>\n" + "<hr/>\n" + "<br/>\n" + "<br/>");
260+
stringBuilder.append("</tbody>");
261+
stringBuilder.append("</table>");
262+
}
245263

246-
stringBuilder.append(
247-
"<div style=\"text-align: center;\"><a id=\"CBO\"><h1>Highly Coupled Classes</h1></a></div>");
264+
private void renderHighlyCoupledClassInfo(String outputDirectory, StringBuilder stringBuilder, List<RankedDisharmony> rankedCBODisharmonies, DateTimeFormatter formatter) {
265+
stringBuilder.append(
266+
"<div style=\"text-align: center;\"><a id=\"CBO\"><h1>Highly Coupled Classes</h1></a></div>");
248267

249-
int maxCboPriority =
250-
rankedCBODisharmonies.get(rankedCBODisharmonies.size() - 1).getPriority();
268+
int maxCboPriority =
269+
rankedCBODisharmonies.get(rankedCBODisharmonies.size() - 1).getPriority();
251270

252-
renderCBOChart(outputDirectory, rankedCBODisharmonies, maxCboPriority, stringBuilder);
271+
renderCBOChart(outputDirectory, rankedCBODisharmonies, maxCboPriority, stringBuilder);
253272

254-
stringBuilder.append(
255-
"<h2 align=\"center\">Highly Coupled classes by the numbers: (Refactor starting with Priority 1)</h2>");
256-
stringBuilder.append("<table align=\"center\" border=\"5px\">");
273+
stringBuilder.append(
274+
"<h2 align=\"center\">Highly Coupled classes by the numbers: (Refactor starting with Priority 1)</h2>");
275+
stringBuilder.append("<table align=\"center\" border=\"5px\">");
257276

258-
// Content
259-
stringBuilder.append("<thead><tr>");
260-
for (String heading : cboTableHeadings) {
261-
stringBuilder.append("<th>").append(heading).append("</th>");
262-
}
263-
stringBuilder.append("</tr></thead>");
277+
// Content
278+
stringBuilder.append("<thead><tr>");
279+
for (String heading : cboTableHeadings) {
280+
stringBuilder.append("<th>").append(heading).append("</th>");
281+
}
282+
stringBuilder.append("</tr></thead>");
264283

265-
stringBuilder.append("<tbody>");
266-
for (RankedDisharmony rankedCboClassDisharmony : rankedCBODisharmonies) {
267-
stringBuilder.append("<tr>");
284+
stringBuilder.append("<tbody>");
285+
for (RankedDisharmony rankedCboClassDisharmony : rankedCBODisharmonies) {
286+
stringBuilder.append("<tr>");
268287

269-
String[] rankedCboClassDisharmonyData = {
288+
String[] rankedCboClassDisharmonyData = {
270289
rankedCboClassDisharmony.getFileName(),
271290
rankedCboClassDisharmony.getPriority().toString(),
272291
rankedCboClassDisharmony.getChangePronenessRank().toString(),
273292
rankedCboClassDisharmony.getEffortRank().toString(),
274293
formatter.format(rankedCboClassDisharmony.getMostRecentCommitTime()),
275294
rankedCboClassDisharmony.getCommitCount().toString()
276-
};
295+
};
277296

278-
for (String rowData : rankedCboClassDisharmonyData) {
279-
drawTableCell(rowData, stringBuilder);
280-
}
281-
282-
stringBuilder.append("</tr>");
297+
for (String rowData : rankedCboClassDisharmonyData) {
298+
drawTableCell(rowData, stringBuilder);
283299
}
284300

285-
stringBuilder.append("</tbody>");
301+
stringBuilder.append("</tr>");
286302
}
287303

288-
stringBuilder.append("</table></section>");
289-
printProjectFooter(stringBuilder, formatter);
290-
stringBuilder.append(THE_END);
291-
292-
log.debug(stringBuilder.toString());
293-
294-
writeReportToDisk(outputDirectory, filename, stringBuilder);
295-
log.info("Done! View the report at target/site/{}", filename);
304+
stringBuilder.append("</tbody>");
305+
stringBuilder.append("</table>");
296306
}
297307

298308
void drawTableCell(String rowData, StringBuilder stringBuilder) {

0 commit comments

Comments
 (0)