|
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