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