1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package ch.elca.el4j.services.statistics.detailed.jmx;
18
19 import java.util.List;
20
21 import javax.management.MBeanServer;
22 import javax.management.ObjectName;
23
24 import org.springframework.beans.factory.DisposableBean;
25 import org.springframework.beans.factory.InitializingBean;
26
27 import ch.elca.el4j.services.monitoring.jmx.JmxHtmlFormatter;
28 import ch.elca.el4j.services.statistics.detailed.MeasureItem;
29 import ch.elca.el4j.services.statistics.detailed.processing.DataRepository;
30 import ch.elca.el4j.services.statistics.detailed.processing.StatisticsOutputter;
31 import ch.elca.el4j.util.codingsupport.Reject;
32
33
34
35
36
37
38
39
40 public class DetailedStatisticsReporter implements
41 DetailedStatisticsReporterMBean, InitializingBean, DisposableBean {
42
43
44 public static final String NAME
45 = "Performance:key=detailedStatisticsReporter";
46
47
48 private MBeanServer m_server;
49
50
51 private DataRepository m_dataRepository;
52
53
54
55
56
57 public MBeanServer getServer() {
58 return m_server;
59 }
60
61
62
63
64
65
66
67 public void setServer(MBeanServer beanServer) {
68 m_server = beanServer;
69 }
70
71
72
73
74
75 public DataRepository getDataRepository() {
76 return m_dataRepository;
77 }
78
79
80
81
82
83
84
85 public void setDataRepository(DataRepository dataRepository) {
86 m_dataRepository = dataRepository;
87 }
88
89
90
91
92 public void afterPropertiesSet() throws Exception {
93 if (m_server == null) {
94 throw new IllegalStateException("m_beanServer has not been set!");
95 }
96
97 m_server.registerMBean(this, new ObjectName(NAME));
98 }
99
100
101
102
103 public void destroy() throws Exception {
104 if (m_server != null) {
105 m_server.unregisterMBean(new ObjectName(NAME));
106 }
107 }
108
109
110
111
112 public String showMeasureIDTable() {
113 String result = "";
114 String[][] table;
115
116 List<MeasureItem> measureItems
117 = m_dataRepository.getAllMeasureItems();
118
119 int noOfRowsInTable = measureItems.size() + 1;
120
121 table = new String[noOfRowsInTable][3];
122
123
124 table[0][0] = "MeasureID";
125 table[0][1] = "Duration in [ms]";
126 table[0][2] = "Invocation Start";
127
128 int i = 1;
129 for (MeasureItem m : measureItems) {
130 table[i][0] = m.getID().getFormattedString();
131 table[i][1] = Long.toString(m.getDuration());
132 table[i][2] = m.getEjbName() + "." + m.getMethodName();
133 i++;
134 }
135 result = JmxHtmlFormatter.getHtmlTable(table);
136 return result;
137 }
138
139
140
141
142
143 public void createCSVFile(String filename, String measureId) {
144 Reject.ifNull(filename);
145 Reject.ifNull(measureId);
146 StatisticsOutputter sv = new StatisticsOutputter(m_dataRepository
147 .getAllMeasureItems());
148 sv.createCVSFile(filename, measureId);
149 }
150
151
152
153
154 public void createDiagramFile(String filename, String measureId) {
155 createDiagramFile(filename, measureId, 0, 0);
156
157 }
158
159
160
161
162 public void createDiagramFile(String filename, String measureId,
163 int width, int height) {
164 Reject.ifNull(filename);
165 Reject.ifNull(measureId);
166 StatisticsOutputter sv = new StatisticsOutputter(m_dataRepository
167 .getAllMeasureItems());
168 sv.createDiagFile(filename, measureId, width, height);
169
170 }
171 }