1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 package net.sf.statcvs.reportmodel;
24
25 import java.util.ArrayList;
26 import java.util.List;
27
28 import net.sf.statcvs.renderer.TableCellRenderer;
29
30 /**
31 * A column of integer values. The column's total is the sum of all values.
32 *
33 * @author Richard Cyganiak <rcyg@gmx.de>
34 * @version $Id: IntegerColumn.java,v 1.4 2009/03/09 21:45:42 benoitx Exp $
35 */
36 public class IntegerColumn extends Column {
37
38 private final String title;
39 private final List values = new ArrayList();
40 private int sum = 0;
41 private boolean showValues = true;
42 private boolean showPercentages = true;
43
44 /**
45 * Creates a new <tt>SimpleTextColumn</tt> with the given head
46 * @param title the head of the column
47 */
48 public IntegerColumn(final String title) {
49 this.title = title;
50 }
51
52 /**
53 * Set if the actual integer values should be shown
54 * @param enable show values?
55 */
56 public void setShowValues(final boolean enable) {
57 showValues = enable;
58 }
59
60 /**
61 * Set if the values should be shown as percentages
62 * @param enable show percentages?
63 */
64 public void setShowPercentages(final boolean enable) {
65 showPercentages = enable;
66 }
67
68 /**
69 * Adds a value to this column (in a new row)
70 * @param value the new value
71 */
72 public void addValue(final int value) {
73 values.add(new Integer(value));
74 sum += value;
75 }
76
77 /**
78 * Returns a value in the column
79 * @param rowIndex the row to get, starting at 0
80 * @return the value of this row
81 */
82 public int getValue(final int rowIndex) {
83 return ((Integer) values.get(rowIndex)).intValue();
84 }
85
86 /**
87 * Returns the sum of all values in the column
88 * @return sum
89 */
90 public int getSum() {
91 return sum;
92 }
93
94 /**
95 * Sets the sum of the column. Useful if, for example, the
96 * column contains only the top 10 values of more values, but
97 * the column total should reflect all values.
98 * @param sum the column's total
99 */
100 public void setSum(final int sum) {
101 this.sum = sum;
102 }
103
104 /**
105 * @see net.sf.statcvs.reportmodel.Column#getRows()
106 */
107 public int getRows() {
108 return values.size();
109 }
110
111 /**
112 * @see net.sf.statcvs.reportmodel.Column#renderHead(net.sf.statcvs.renderer.TableCellRenderer)
113 */
114 public void renderHead(final TableCellRenderer renderer) {
115 renderer.renderCell(title);
116 }
117
118 /**
119 * @see net.sf.statcvs.reportmodel.Column#renderCell
120 */
121 public void renderCell(final int rowIndex, final TableCellRenderer renderer) {
122 callRenderer(renderer, getValue(rowIndex));
123 }
124
125 /**
126 * @see net.sf.statcvs.reportmodel.Column#renderTotal(net.sf.statcvs.renderer.TableCellRenderer)
127 */
128 public void renderTotal(final TableCellRenderer renderer) {
129 callRenderer(renderer, sum);
130 }
131
132 private void callRenderer(final TableCellRenderer renderer, final int value) {
133 if (showValues && showPercentages) {
134 renderer.renderIntegerCell(value, sum);
135 } else if (showValues) {
136 renderer.renderIntegerCell(value);
137 } else if (showPercentages) {
138 renderer.renderPercentageCell((double) value / (double) sum);
139 } else {
140 renderer.renderEmptyCell();
141 }
142 }
143 }