View Javadoc

1   // $Id: TableXmlProducer.java,v 1.3 2004/06/23 21:55:11 powerpete Exp $
2   package com.pnpconsult.zeiterfassung.pdf;
3   
4   import java.util.Iterator;
5   
6   import javax.xml.transform.Source;
7   
8   import org.dom4j.Document;
9   import org.dom4j.DocumentFactory;
10  import org.dom4j.Element;
11  import org.dom4j.io.DocumentSource;
12  
13  import com.pnpconsult.zeiterfassung.table.RateRow;
14  import com.pnpconsult.zeiterfassung.table.Row;
15  import com.pnpconsult.zeiterfassung.table.Table;
16  
17  /***
18   * @author <a href="mailto:powerpete@users.sf.net">Moritz Petersen</a>
19   * @version $Id: TableXmlProducer.java,v 1.3 2004/06/23 21:55:11 powerpete Exp $
20   */
21  public class TableXmlProducer
22  {
23  	private Document document;
24  
25  	public TableXmlProducer(Table table)
26  	{
27  		document = createDocument(table);
28  	}
29  
30  	public String getXml()
31  	{
32  		return document.asXML();
33  	}
34  
35  	public Source getSource()
36  	{
37  		return new DocumentSource(document);
38  	}
39  
40  	public String toString()
41  	{
42  		return getXml();
43  	}
44  
45  	private Document createDocument(Table table)
46  	{
47  		Document document = DocumentFactory.getInstance().createDocument();
48  		Element root = document.addElement("table");
49  		root.addElement("caption").setText(table.getCaption());
50  		root.addElement("currency").setText(table.getCurrency());
51  		root.addElement("tax").setText(table.getTax());
52  		root.addElement("total-tax").setText(table.getTotalTax());
53  		root.addElement("total").setText(table.getTotal());
54  		root.addElement("total-including-tax").setText(
55  			table.getTotalIncludingTax());
56  		for (Iterator it = table.getRows().iterator(); it.hasNext();)
57  		{
58  			Row row = (Row) it.next();
59  			addRow(root, row);
60  		}
61  		return document;
62  	}
63  
64  	private void addRow(Element root, Row row)
65  	{
66  		addHead(root, row);
67  		addTail(root, row);
68  	}
69  
70  	private void addTail(Element root, Row row)
71  	{
72  		for (Iterator it = row.getRateRowsTail(); it.hasNext();)
73  		{
74  			RateRow rateRow = (RateRow) it.next();
75  			Element element = root.addElement("row");
76  			addRateRow(element, rateRow);
77  		}
78  	}
79  
80  	private void addHead(Element root, Row row)
81  	{
82  		Element element = root.addElement("row");
83  		element.addElement("description").setText(row.getDescription());
84  		element.addElement("target-date").setText(row.getTargetDate());
85  		element.addElement("total").setText(row.getTotal());
86  		addRateRow(element, row.getRateRowsHead());
87  	}
88  
89  	private void addRateRow(Element element, RateRow rateRow)
90  	{
91  		element.addElement("hours").setText(rateRow.getHours());
92  		element.addElement("rate").setText(rateRow.getRate());
93  		element.addElement("user-names").setText(rateRow.getUserNames());
94  	}
95  }