package org.moxie; import static java.text.MessageFormat.format; import org.moxie.utils.StringUtils; public class ProjectReport implements MoxieReport { @Override public String report(Build build) { Pom pom = build.getPom(); String h2Pattern = "<h2>{0}</h2>\n"; String kvpPattern = "<tr><th>{0}</th><td>{1}</td></tr>"; String aPattern = "<a href=\"{1}\" target=\"_blank\">{0}</a>"; StringBuilder sb = new StringBuilder(); // project metadata sb.append(format(h2Pattern,"project metadata")); sb.append("<table class='table'>\n"); addRow(sb, kvpPattern, "name", pom.name); addRow(sb, kvpPattern, "description", pom.description); if (!StringUtils.isEmpty(pom.url)) { addRow(sb, kvpPattern, "url", format(aPattern, pom.url, pom.url)); } addRow(sb, kvpPattern, "organization", pom.organization); addRow(sb, kvpPattern, "groupId", pom.groupId); addRow(sb, kvpPattern, "artifactId", pom.artifactId); addRow(sb, kvpPattern, "version", pom.version); sb.append("</table>\n"); // source folders if (build.getConfig().getSourceDirectories().size() > 0) { sb.append("<p />\n"); sb.append(format(h2Pattern,"source folders")); sb.append("<table class='table'>\n"); for (SourceDirectory sourceFolder : build.getConfig().getSourceDirectories()) { sb.append(format(kvpPattern, sourceFolder.name, sourceFolder.scope)); } sb.append("</table>\n"); } return sb.toString(); } private void addRow(StringBuilder sb, String pattern, String field, String value) { if (!StringUtils.isEmpty(value)) { sb.append(format(pattern, field, value)); } } }