package hudson.plugins.sloccount; import hudson.plugins.sloccount.model.Language; import hudson.plugins.sloccount.model.SloccountReport; import java.io.Serializable; /** * * @author lordofthepigs */ public class ReportSummary implements Serializable { private ReportSummary(){ super(); } public static String createReportSummary(SloccountReport report, SloccountReport previous){ StringBuilder builder = new StringBuilder(); builder.append("<a href=\"" + SloccountBuildAction.URL_NAME + "\">"); builder.append(report.getLineCount()); if(previous != null){ printDifference(report.getLineCount(), previous.getLineCount(), builder); } builder.append(" lines</a> in "); builder.append(report.getFileCount()); if(previous != null){ printDifference(report.getFileCount(), previous.getFileCount(), builder); } builder.append(" files and "); builder.append(report.getLanguageCount()); if(previous != null){ printDifference(report.getLanguageCount(), previous.getLanguageCount(), builder); } builder.append(" languages."); return builder.toString(); } public static String createReportSummaryDetails(SloccountReport report, SloccountReport previous){ StringBuilder builder = new StringBuilder(); for(Language language : report.getLanguages()){ Language previousLanguage = null; if(previous != null){ previousLanguage = previous.getLanguage(language.getName()); } appendLanguageDetails(language, previousLanguage, builder); } return builder.toString(); } public static void appendLanguageDetails(Language language, Language previous, StringBuilder builder){ builder.append("<li>"); builder.append("<a href=\""); builder.append(SloccountBuildAction.URL_NAME); builder.append("/languageResult/"); builder.append(language.getName()); builder.append("\">"); builder.append(language.getName()); builder.append("</a> : "); builder.append(language.getLineCount()); if(previous != null){ printDifference(language.getLineCount(), previous.getLineCount(), builder); } builder.append(" lines in "); builder.append(language.getFileCount()); if(previous != null){ printDifference(language.getFileCount(), previous.getFileCount(), builder); } builder.append(" files.</li>"); } private static void printDifference(int current, int previous, StringBuilder builder){ int difference = current - previous; builder.append(" ("); if(difference >= 0){ builder.append('+'); } builder.append(difference); builder.append(")"); } }