|
1 | 1 | package org.hjug.mavenreport;
|
2 | 2 |
|
3 |
| -import java.io.BufferedWriter; |
4 | 3 | import java.io.File;
|
5 |
| -import java.io.FileWriter; |
6 |
| -import java.io.IOException; |
7 | 4 | import java.nio.file.Paths;
|
8 | 5 | import java.time.Instant;
|
9 | 6 | import java.time.ZoneId;
|
@@ -147,20 +144,6 @@ public void executeReport(Locale locale) throws MavenReportException {
|
147 | 144 | mainSink.unknown(script, new Object[] {HtmlMarkup.TAG_TYPE_START}, googleChartImport);
|
148 | 145 | mainSink.unknown(script, new Object[] {HtmlMarkup.TAG_TYPE_END}, null);
|
149 | 146 |
|
150 |
| - SinkEventAttributeSet godClassJavascript = new SinkEventAttributeSet(); |
151 |
| - godClassJavascript.addAttribute(SinkEventAttributes.TYPE, "text/javascript"); |
152 |
| - godClassJavascript.addAttribute(SinkEventAttributes.SRC, "./godClassChart.js"); |
153 |
| - |
154 |
| - mainSink.unknown(script, new Object[] {HtmlMarkup.TAG_TYPE_START}, godClassJavascript); |
155 |
| - mainSink.unknown(script, new Object[] {HtmlMarkup.TAG_TYPE_END}, null); |
156 |
| - |
157 |
| - SinkEventAttributeSet cboJavascript = new SinkEventAttributeSet(); |
158 |
| - cboJavascript.addAttribute(SinkEventAttributes.TYPE, "text/javascript"); |
159 |
| - cboJavascript.addAttribute(SinkEventAttributes.SRC, "./cboChart.js"); |
160 |
| - |
161 |
| - mainSink.unknown(script, new Object[] {HtmlMarkup.TAG_TYPE_START}, cboJavascript); |
162 |
| - mainSink.unknown(script, new Object[] {HtmlMarkup.TAG_TYPE_END}, null); |
163 |
| - |
164 | 147 | SinkEventAttributeSet d3js = new SinkEventAttributeSet();
|
165 | 148 | d3js.addAttribute(SinkEventAttributes.TYPE, "text/javascript");
|
166 | 149 | d3js.addAttribute(SinkEventAttributes.SRC, "https://d3js.org/d3.v5.min.js");
|
@@ -289,13 +272,19 @@ public void executeReport(Locale locale) throws MavenReportException {
|
289 | 272 | mainSink.section2_();
|
290 | 273 | mainSink.division_();
|
291 | 274 |
|
292 |
| - writeGodClassGchartJs(rankedGodClassDisharmonies, maxGodClassPriority - 1); |
| 275 | + String godClassScript = writeGodClassGchartJs(rankedGodClassDisharmonies, maxGodClassPriority - 1); |
293 | 276 | SinkEventAttributeSet seriesChartDiv = new SinkEventAttributeSet();
|
294 | 277 | seriesChartDiv.addAttribute(SinkEventAttributes.ID, "series_chart_div");
|
295 | 278 | seriesChartDiv.addAttribute(SinkEventAttributes.ALIGN, "center");
|
296 | 279 | mainSink.division(seriesChartDiv);
|
297 | 280 | mainSink.division_();
|
298 | 281 |
|
| 282 | + SinkEventAttributeSet godClassJavascript = new SinkEventAttributeSet(); |
| 283 | + godClassJavascript.addAttribute(SinkEventAttributes.TYPE, "text/javascript"); |
| 284 | + mainSink.unknown(script, new Object[] {HtmlMarkup.TAG_TYPE_START}, godClassJavascript); |
| 285 | + mainSink.rawText(godClassScript); |
| 286 | + mainSink.unknown(script, new Object[] {HtmlMarkup.TAG_TYPE_END}, null); |
| 287 | + |
299 | 288 | renderGitHubButtons(mainSink);
|
300 | 289 |
|
301 | 290 | String legendHeading = "God Class Chart Legend:";
|
@@ -399,7 +388,14 @@ public void executeReport(Locale locale) throws MavenReportException {
|
399 | 388 | seriesChartDiv.addAttribute(SinkEventAttributes.ALIGN, "center");
|
400 | 389 | mainSink.division(seriesChartDiv);
|
401 | 390 | mainSink.division_();
|
402 |
| - writeGCBOGchartJs(rankedCBODisharmonies, maxCboPriority - 1); |
| 391 | + |
| 392 | + String cboScript = writeGCBOGchartJs(rankedCBODisharmonies, maxCboPriority - 1); |
| 393 | + |
| 394 | + SinkEventAttributeSet cboJavascript = new SinkEventAttributeSet(); |
| 395 | + cboJavascript.addAttribute(SinkEventAttributes.TYPE, "text/javascript"); |
| 396 | + mainSink.unknown(script, new Object[] {HtmlMarkup.TAG_TYPE_START}, cboJavascript); |
| 397 | + mainSink.rawText(cboScript); |
| 398 | + mainSink.unknown(script, new Object[] {HtmlMarkup.TAG_TYPE_END}, null); |
403 | 399 |
|
404 | 400 | renderGitHubButtons(mainSink);
|
405 | 401 |
|
@@ -775,63 +771,22 @@ private static void renderGitHubButton(
|
775 | 771 | mainSink.unknown("a", new Object[] {HtmlMarkup.TAG_TYPE_END}, null);
|
776 | 772 | }
|
777 | 773 |
|
778 |
| - // TODO: Move to another class to allow use by Gradle plugin |
779 |
| - void writeGodClassGchartJs(List<RankedDisharmony> rankedDisharmonies, int maxPriority) { |
| 774 | + String writeGodClassGchartJs(List<RankedDisharmony> rankedDisharmonies, int maxPriority) { |
780 | 775 | GraphDataGenerator graphDataGenerator = new GraphDataGenerator();
|
781 | 776 | String scriptStart = graphDataGenerator.getGodClassScriptStart();
|
782 | 777 | String bubbleChartData = graphDataGenerator.generateGodClassBubbleChartData(rankedDisharmonies, maxPriority);
|
783 | 778 | String scriptEnd = graphDataGenerator.getGodClassScriptEnd();
|
784 | 779 |
|
785 |
| - String javascriptCode = scriptStart + bubbleChartData + scriptEnd; |
786 |
| - |
787 |
| - String reportOutputDirectory = project.getModel().getReporting().getOutputDirectory(); |
788 |
| - File reportOutputDir = new File(reportOutputDirectory); |
789 |
| - if (!reportOutputDir.exists()) { |
790 |
| - reportOutputDir.mkdirs(); |
791 |
| - } |
792 |
| - String pathname = reportOutputDirectory + File.separator + "godClassChart.js"; |
793 |
| - |
794 |
| - File scriptFile = new File(pathname); |
795 |
| - try { |
796 |
| - scriptFile.createNewFile(); |
797 |
| - } catch (IOException e) { |
798 |
| - log.error("Failure creating God Class chart script file", e); |
799 |
| - } |
800 |
| - |
801 |
| - try (BufferedWriter writer = new BufferedWriter(new FileWriter(scriptFile))) { |
802 |
| - writer.write(javascriptCode); |
803 |
| - } catch (IOException e) { |
804 |
| - log.error("Error writing chart script file", e); |
805 |
| - } |
| 780 | + return scriptStart + bubbleChartData + scriptEnd; |
806 | 781 | }
|
807 | 782 |
|
808 |
| - void writeGCBOGchartJs(List<RankedDisharmony> rankedDisharmonies, int maxPriority) { |
| 783 | + String writeGCBOGchartJs(List<RankedDisharmony> rankedDisharmonies, int maxPriority) { |
809 | 784 | GraphDataGenerator graphDataGenerator = new GraphDataGenerator();
|
810 | 785 | String scriptStart = graphDataGenerator.getCBOScriptStart();
|
811 | 786 | String bubbleChartData = graphDataGenerator.generateCBOBubbleChartData(rankedDisharmonies, maxPriority);
|
812 | 787 | String scriptEnd = graphDataGenerator.getCBOScriptEnd();
|
813 | 788 |
|
814 |
| - String javascriptCode = scriptStart + bubbleChartData + scriptEnd; |
815 |
| - |
816 |
| - String reportOutputDirectory = project.getModel().getReporting().getOutputDirectory(); |
817 |
| - File reportOutputDir = new File(reportOutputDirectory); |
818 |
| - if (!reportOutputDir.exists()) { |
819 |
| - reportOutputDir.mkdirs(); |
820 |
| - } |
821 |
| - String pathname = reportOutputDirectory + File.separator + "cboChart.js"; |
822 |
| - |
823 |
| - File scriptFile = new File(pathname); |
824 |
| - try { |
825 |
| - scriptFile.createNewFile(); |
826 |
| - } catch (IOException e) { |
827 |
| - log.error("Failure creating CBO chart script file", e); |
828 |
| - } |
829 |
| - |
830 |
| - try (BufferedWriter writer = new BufferedWriter(new FileWriter(scriptFile))) { |
831 |
| - writer.write(javascriptCode); |
832 |
| - } catch (IOException e) { |
833 |
| - log.error("Error writing CBO chart script file", e); |
834 |
| - } |
| 789 | + return scriptStart + bubbleChartData + scriptEnd; |
835 | 790 | }
|
836 | 791 |
|
837 | 792 | void renderCycleImage(Graph<String, DefaultWeightedEdge> classGraph, RankedCycle cycle, Sink mainSink) {
|
|
0 commit comments