1 /**
2  *
3  */
4 package net.sf.statcvs.pages.xml;
5 
6 import java.util.Iterator;
7 
8 import net.sf.statcvs.output.ReportConfig;
9 import net.sf.statcvs.renderer.XMLRenderer;
10 import net.sf.statcvs.reportmodel.Column;
11 import net.sf.statcvs.reportmodel.Table;
12 import net.sf.statcvs.reports.DevelopersTableReport;
13 import net.sf.statcvs.reports.TableReport;
14 
15 import org.jdom.Element;
16 
17 /**
18  * @author Nilendra Weerasinghe (nilendraw@gmail.com)
19  * @version $Id: AllDevelopersXml.java,v 1.2 2008/04/02 11:22:16 benoitx Exp $
20  *
21  * This is the class which generates the developer information of the xml report
22  */
23 public class AllDevelopersXml {
24     private static final int NO_OF_COLS_IN_TABLE = 50;
25     private final XMLRenderer renderer = new XMLRenderer();
26     private final ReportConfig config;
27     private DevelopersTableReport developers;
28     private Table table;
29 
30     /**
31      * @param config Configuration and data for the report suite
32      */
AllDevelopersXml(final ReportConfig config)33     public AllDevelopersXml(final ReportConfig config) {
34         this.config = config;
35     }
36 
37     /**
38      * returns jdom element which contains data extracted from DeveloeprsTableReport
39      *
40      * @returns Element
41      */
toFile()42     public Element toFile() {
43         this.developers = new DevelopersTableReport(this.config);
44         final TableReport tr = developers;
45         tr.calculate();
46         this.table = tr.getTable();
47         final Element div = new Element(XmlTags.TAG_DEVELOPERS);
48 
49         final String[] str = new String[NO_OF_COLS_IN_TABLE];
50         for (int j = 0; j < table.getRowCount(); j++) {
51             Element col = null;
52             int i = 0;
53             final Iterator it = table.getColumnIterator();
54             final Iterator itr = table.getColumnIterator();
55             while (it.hasNext()) {
56                 final Column column = (Column) it.next();
57                 column.renderHead(renderer);
58 
59                 str[i] = renderer.getColumnHead();
60                 if (i == 0) {
61                     col = new Element(str[i]);
62                 } else {
63                     col.addContent(new Element(str[i]));
64                 }
65                 i++;
66             }
67             boolean isFirstColumn = true;
68             int k = 0;
69             while (itr.hasNext()) {
70                 final Column column = (Column) itr.next();
71                 column.renderCell(j, renderer);
72                 if (isFirstColumn && table.hasKeysInFirstColumn()) {
73                     col.setAttribute("name", renderer.getRowHead().toLowerCase());
74                     isFirstColumn = false;
75                 } else {
76                     col.getChild(str[k]).setText(renderer.getTableCell());
77                 }
78                 k++;
79             }
80             div.addContent(col);
81         }
82         return div;
83     }
84 }
85