View Javadoc

1   package net.sf.statcvs.pages.xml;
2   
3   /**
4    * @author Nilendra Weerasinghe (nilendraw@gmail.com)
5    * @version $Id: LogXml.java,v 1.3 2008/04/02 11:52:02 benoitx Exp $
6    */
7   
8   import java.util.Calendar;
9   import java.util.Date;
10  import java.util.GregorianCalendar;
11  import java.util.HashSet;
12  import java.util.Iterator;
13  import java.util.Set;
14  
15  import net.sf.statcvs.model.Commit;
16  import net.sf.statcvs.model.Repository;
17  import net.sf.statcvs.output.ReportConfig;
18  
19  import org.jdom.Element;
20  
21  public class LogXml {
22      private final ReportConfig config;
23      private final Repository repository;
24  
25      /**
26       * @param config Configuration and data for the report suite
27       */
28      public LogXml(final ReportConfig config) {
29          this.config = config;
30          this.repository = config.getRepository();
31      }
32  
33      /**
34       * returns jdom element which contains data extracted from the commit list of the repository
35       *
36       * @returns Element
37       */
38      public Element toFile() {
39          if (this.repository.getCommits().isEmpty()) {
40              return null;
41          }
42          final Date start = this.repository.getFirstDate();
43          final Date end = this.repository.getLastDate();
44          final Calendar calendar = new GregorianCalendar();
45          calendar.setTime(end);
46          final Calendar startCal = new GregorianCalendar();
47          startCal.setTime(start);
48          final Element commLog = new LogXmlMaker(this.config, this.repository.getCommits()).toFile();
49          commLog.setAttribute("no_of_commits", Integer.toString(this.repository.getCommits().size()));
50          commLog.setAttribute("active_developers", countActiveDevelopers());
51          return commLog;
52      }
53  
54      /**
55       * returns the number of active developers as a string
56       *
57       * @returns String
58       */
59  
60      private String countActiveDevelopers() {
61          final Set developers = new HashSet();
62          final Iterator it = this.repository.getCommits().iterator();
63          while (it.hasNext()) {
64              final Commit commit = (Commit) it.next();
65              developers.add(commit.getAuthor());
66          }
67          return Integer.toString(developers.size());
68      }
69  }