Skip to content

Commit 1c1117f

Browse files
#9 Generating report and log message when no Git repo is present
Generating report and log message when no Git repo is present to let user know what to do in case a Git repo has not yet been created.
1 parent ca486d5 commit 1c1117f

File tree

1 file changed

+65
-20
lines changed

1 file changed

+65
-20
lines changed

refactor-first-maven-plugin/src/main/java/org/hjug/mavenreport/RefactorFirstMavenReport.java

Lines changed: 65 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.util.Comparator;
2424
import java.util.List;
2525
import java.util.Locale;
26+
import java.util.Optional;
2627

2728
@Slf4j
2829
@Mojo(
@@ -94,22 +95,6 @@ public void execute() {
9495

9596
final String[] tableHeadings = showDetails ? detailedTableHeadings: simpleTableHeadings;
9697

97-
GitLogReader gitLogReader = new GitLogReader();
98-
String projectBaseDir = project.getBasedir().getPath();
99-
String parentOfGitDir = gitLogReader.getGitDir(project.getBasedir()).getParentFile().getPath();
100-
log.info("Project Base Dir: {} ", projectBaseDir);
101-
log.info("Parent of Git Dir: {}", parentOfGitDir);
102-
103-
if(!projectBaseDir.equals(parentOfGitDir)) {
104-
log.warn("Project Base Directory does not match Git Parent Directory");
105-
return;
106-
}
107-
108-
CostBenefitCalculator costBenefitCalculator = new CostBenefitCalculator();
109-
List<RankedDisharmony> rankedDisharmonies = costBenefitCalculator.calculateCostBenefitValues(projectBaseDir);
110-
111-
rankedDisharmonies.sort(Comparator.comparing(RankedDisharmony::getPriority).reversed());
112-
11398
String filename = getOutputName() + ".html";
11499

115100
log.info("Generating {} for {} - {}", filename, projectName, projectVersion);
@@ -122,10 +107,10 @@ public void execute() {
122107
StringBuilder stringBuilder = new StringBuilder();
123108
stringBuilder.append(
124109
"<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n" +
125-
" <head>\n" +
126-
" <meta charset=\"UTF-8\" />\n" +
127-
" <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n" +
128-
" <meta name=\"generator\" content=\"Apache Maven Doxia Site Renderer 1.9.2\" />");
110+
" <head>\n" +
111+
" <meta charset=\"UTF-8\" />\n" +
112+
" <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n" +
113+
" <meta name=\"generator\" content=\"Apache Maven Doxia Site Renderer 1.9.2\" />");
129114

130115

131116
stringBuilder.append("<title>Refactor First Report for ").append(projectName).append(" ").append(projectVersion).append(" </title>");
@@ -166,6 +151,66 @@ public void execute() {
166151
stringBuilder.append("<section>\n" + "<h2><a name=\"God_Class_Report_for_Apache_Tobago_5.0.0-SNAPSHOT\"></a>God Class Report for ")
167152
.append(projectName).append(" ").append(projectVersion).append("</h2>\n").append("<div id=\"series_chart_div\"></div>");
168153

154+
GitLogReader gitLogReader = new GitLogReader();
155+
String projectBaseDir = project.getBasedir().getPath();
156+
Optional<File> optionalGitDir = Optional.ofNullable(gitLogReader.getGitDir(project.getBasedir()));
157+
File gitDir;
158+
159+
if (optionalGitDir.isPresent()) {
160+
gitDir = optionalGitDir.get();
161+
} else {
162+
log.info("Done! No Git repository found! Please initialize a Git repository and perform an initial commit.");
163+
stringBuilder.append("No Git repository found in project ").append(projectName).append(" ").append(projectVersion).append(". ");
164+
stringBuilder.append("Please initialize a Git repository and perform an initial commit.");
165+
stringBuilder.append("</div>\n" +
166+
" </div>\n" +
167+
" <div class=\"clear\">\n" +
168+
" <hr/>\n" +
169+
" </div>\n" +
170+
" <div id=\"footer\">\n" +
171+
" <div class=\"xright\">\n" +
172+
" Copyright &#169; 2002&#x2013;2021<a href=\"https://www.apache.org/\">The Apache Software Foundation</a>.\n" +
173+
". </div>\n" +
174+
" <div class=\"clear\">\n" +
175+
" <hr/>\n" +
176+
" </div>\n" +
177+
" </div>\n" +
178+
" </body>\n" +
179+
"</html>\n");
180+
writeReportToDisk(filename, stringBuilder);
181+
return;
182+
}
183+
184+
String parentOfGitDir = gitDir.getParentFile().getPath();
185+
log.info("Project Base Dir: {} ", projectBaseDir);
186+
log.info("Parent of Git Dir: {}", parentOfGitDir);
187+
188+
if(!projectBaseDir.equals(parentOfGitDir)) {
189+
log.warn("Project Base Directory does not match Git Parent Directory");
190+
stringBuilder.append("Project Base Directory does not match Git Parent Directory. Please refer to the report at the root of the site directory.");
191+
stringBuilder.append("</div>\n" +
192+
" </div>\n" +
193+
" <div class=\"clear\">\n" +
194+
" <hr/>\n" +
195+
" </div>\n" +
196+
" <div id=\"footer\">\n" +
197+
" <div class=\"xright\">\n" +
198+
" Copyright &#169; 2002&#x2013;2021<a href=\"https://www.apache.org/\">The Apache Software Foundation</a>.\n" +
199+
". </div>\n" +
200+
" <div class=\"clear\">\n" +
201+
" <hr/>\n" +
202+
" </div>\n" +
203+
" </div>\n" +
204+
" </body>\n" +
205+
"</html>\n");
206+
return;
207+
}
208+
209+
CostBenefitCalculator costBenefitCalculator = new CostBenefitCalculator();
210+
List<RankedDisharmony> rankedDisharmonies = costBenefitCalculator.calculateCostBenefitValues(projectBaseDir);
211+
212+
rankedDisharmonies.sort(Comparator.comparing(RankedDisharmony::getPriority).reversed());
213+
169214
if(rankedDisharmonies.isEmpty()) {
170215
stringBuilder.append("Congratulations! ").append(projectName).append(" ").append(projectVersion).append(" has no God classes!");
171216
log.info("Done! No God classes found!");

0 commit comments

Comments
 (0)