1
22
23
41
42 package com.liferay.portal.monitoring.statistics.portlet;
43
44 import com.liferay.portal.monitoring.MonitoringException;
45 import com.liferay.portal.monitoring.RequestStatus;
46 import com.liferay.portal.monitoring.statistics.DataSampleProcessor;
47 import com.liferay.portal.monitoring.statistics.RequestStatistics;
48
49 import java.util.HashMap;
50 import java.util.Map;
51
52
59 public class PortletStatistics
60 implements DataSampleProcessor<PortletRequestDataSample> {
61
62 public PortletStatistics(
63 String portletId, String portletName, String displayName) {
64
65 _portletId = portletId;
66 _portletName = portletName;
67 _displayName = displayName;
68 _actionRequestStatistics = new RequestStatistics(portletId);
69 _eventRequestStatistics = new RequestStatistics(portletId);
70 _renderRequestStatistics = new RequestStatistics(portletId);
71 _resourceRequestStatistics = new RequestStatistics(portletId);
72
73 _requestStatistics.put(
74 PortletRequestType.ACTION, _actionRequestStatistics);
75 _requestStatistics.put(
76 PortletRequestType.EVENT, _eventRequestStatistics);
77 _requestStatistics.put(
78 PortletRequestType.RENDER, _renderRequestStatistics);
79 _requestStatistics.put(
80 PortletRequestType.RESOURCE, _resourceRequestStatistics);
81 }
82
83 public RequestStatistics getActionRequestStatistics() {
84 return _actionRequestStatistics;
85 }
86
87 public String getDisplayName() {
88 return _displayName;
89 }
90
91 public RequestStatistics getEventRequestStatistics() {
92 return _eventRequestStatistics;
93 }
94
95 public String getPortletId() {
96 return _portletId;
97 }
98
99 public String getPortletName() {
100 return _portletName;
101 }
102
103 public RequestStatistics getRenderRequestStatistics() {
104 return _renderRequestStatistics;
105 }
106
107 public RequestStatistics getResourceRequestStatistics() {
108 return _resourceRequestStatistics;
109 }
110
111 public void processDataSample(
112 PortletRequestDataSample portletRequestDataSample)
113 throws MonitoringException {
114
115 if (!portletRequestDataSample.getPortletId().equals(_portletId)) {
116 return;
117 }
118
119 PortletRequestType portletRequestType =
120 portletRequestDataSample.getRequestType();
121
122 RequestStatistics requestStatistics =_requestStatistics.get(
123 portletRequestType);
124
125 if (requestStatistics == null) {
126 throw new MonitoringException(
127 "No statistics found for " + portletRequestDataSample);
128 }
129
130 RequestStatus requestStatus =
131 portletRequestDataSample.getRequestStatus();
132
133 if (requestStatus.equals(RequestStatus.ERROR)) {
134 requestStatistics.incrementError();
135 }
136 else if (requestStatus.equals(RequestStatus.SUCCESS)) {
137 requestStatistics.incrementSuccessDuration(
138 portletRequestDataSample.getDuration());
139 }
140 else if (requestStatus.equals(RequestStatus.TIMEOUT)) {
141 requestStatistics.incrementTimeout();
142 }
143 }
144
145 public void reset() {
146 _actionRequestStatistics.reset();
147 _eventRequestStatistics.reset();
148 _renderRequestStatistics.reset();
149 _resourceRequestStatistics.reset();
150 }
151
152 private RequestStatistics _actionRequestStatistics;
153 private String _displayName;
154 private RequestStatistics _eventRequestStatistics;
155 private String _portletId;
156 private String _portletName;
157 private RequestStatistics _renderRequestStatistics;
158 private Map<PortletRequestType, RequestStatistics> _requestStatistics =
159 new HashMap<PortletRequestType, RequestStatistics>();
160 private RequestStatistics _resourceRequestStatistics;
161
162 }