View Javadoc

1   package net.sf.statcvs.reports;
2   
3   import java.util.Iterator;
4   
5   import net.sf.statcvs.Messages;
6   import net.sf.statcvs.model.Author;
7   import net.sf.statcvs.output.ReportConfig;
8   import net.sf.statcvs.reportmodel.AuthorColumn;
9   import net.sf.statcvs.reportmodel.IntegerColumn;
10  import net.sf.statcvs.reportmodel.Table;
11  
12  /**
13   * Table report which creates a table containing the names of the
14   * top 10 developers and their LOC contributions.
15   * 
16   * @author Richard Cyganiak <rcyg@gmx.de>
17   * @version $Id: TopDevelopersTableReport.java,v 1.2 2008/04/02 11:22:15 benoitx Exp $
18   */
19  public class TopDevelopersTableReport extends AbstractLocTableReport implements TableReport {
20      private Table table = null;
21  
22      /**
23       * Creates a table report containing the top 10 authors and their
24       * LOC contributions
25       * @param content the version control source data
26       */
27      public TopDevelopersTableReport(final ReportConfig config) {
28          super(config);
29      }
30  
31      /**
32       * @see net.sf.statcvs.reports.TableReport#calculate()
33       */
34      public void calculate() {
35          if (this.table != null) {
36              return;
37          }
38          String summary;
39          if (getDeveloperCount() > 10) {
40              summary = Messages.getString("TOP_AUTHORS_TABLE_SUMMARY1");
41          } else {
42              summary = Messages.getString("TOP_AUTHORS_TABLE_SUMMARY2");
43          }
44          table = new Table(summary);
45          final AuthorColumn authors = new AuthorColumn();
46          final IntegerColumn linesOfCode = new IntegerColumn(Messages.getString("COLUMN_LOC"));
47          linesOfCode.setShowPercentages(true);
48          table.addColumn(authors);
49          table.addColumn(linesOfCode);
50          table.setKeysInFirstColumn(true);
51  
52          calculateChangesAndLinesPerDeveloper(getContent().getRevisions());
53          int lines = 0;
54          final Iterator it = getLinesMap().iteratorSortedByValueReverse();
55          while (it.hasNext()) {
56              final Author author = (Author) it.next();
57              authors.addValue(author);
58              linesOfCode.addValue(getLinesMap().get(author));
59              lines++;
60              if (lines == 10) {
61                  break;
62              }
63          }
64          linesOfCode.setSum(getLinesMap().sum());
65      }
66  
67      /**
68       * @see net.sf.statcvs.reports.TableReport#getTable()
69       */
70      public Table getTable() {
71          return table;
72      }
73  }