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