001
014
015 package com.liferay.portal.monitoring.statistics.portlet;
016
017 import com.liferay.portal.kernel.monitoring.MonitoringException;
018 import com.liferay.portal.kernel.monitoring.RequestStatus;
019 import com.liferay.portal.kernel.monitoring.statistics.DataSampleProcessor;
020 import com.liferay.portal.kernel.monitoring.statistics.RequestStatistics;
021
022 import java.util.HashMap;
023 import java.util.Map;
024
025
030 public class PortletStatistics
031 implements DataSampleProcessor<PortletRequestDataSample> {
032
033 public PortletStatistics(
034 String portletId, String portletName, String displayName) {
035
036 _portletId = portletId;
037 _portletName = portletName;
038 _displayName = displayName;
039 _actionRequestStatistics = new RequestStatistics(portletId);
040 _eventRequestStatistics = new RequestStatistics(portletId);
041 _renderRequestStatistics = new RequestStatistics(portletId);
042 _resourceRequestStatistics = new RequestStatistics(portletId);
043
044 _requestStatistics.put(
045 PortletRequestType.ACTION, _actionRequestStatistics);
046 _requestStatistics.put(
047 PortletRequestType.EVENT, _eventRequestStatistics);
048 _requestStatistics.put(
049 PortletRequestType.RENDER, _renderRequestStatistics);
050 _requestStatistics.put(
051 PortletRequestType.RESOURCE, _resourceRequestStatistics);
052 }
053
054 public RequestStatistics getActionRequestStatistics() {
055 return _actionRequestStatistics;
056 }
057
058 public String getDisplayName() {
059 return _displayName;
060 }
061
062 public RequestStatistics getEventRequestStatistics() {
063 return _eventRequestStatistics;
064 }
065
066 public String getPortletId() {
067 return _portletId;
068 }
069
070 public String getPortletName() {
071 return _portletName;
072 }
073
074 public RequestStatistics getRenderRequestStatistics() {
075 return _renderRequestStatistics;
076 }
077
078 public RequestStatistics getResourceRequestStatistics() {
079 return _resourceRequestStatistics;
080 }
081
082 @Override
083 public void processDataSample(
084 PortletRequestDataSample portletRequestDataSample)
085 throws MonitoringException {
086
087 if (!portletRequestDataSample.getPortletId().equals(_portletId)) {
088 return;
089 }
090
091 PortletRequestType portletRequestType =
092 portletRequestDataSample.getRequestType();
093
094 RequestStatistics requestStatistics =_requestStatistics.get(
095 portletRequestType);
096
097 if (requestStatistics == null) {
098 throw new MonitoringException(
099 "No statistics found for " + portletRequestDataSample);
100 }
101
102 RequestStatus requestStatus =
103 portletRequestDataSample.getRequestStatus();
104
105 if (requestStatus.equals(RequestStatus.ERROR)) {
106 requestStatistics.incrementError();
107 }
108 else if (requestStatus.equals(RequestStatus.SUCCESS)) {
109 requestStatistics.incrementSuccessDuration(
110 portletRequestDataSample.getDuration());
111 }
112 else if (requestStatus.equals(RequestStatus.TIMEOUT)) {
113 requestStatistics.incrementTimeout();
114 }
115 }
116
117 public void reset() {
118 _actionRequestStatistics.reset();
119 _eventRequestStatistics.reset();
120 _renderRequestStatistics.reset();
121 _resourceRequestStatistics.reset();
122 }
123
124 private RequestStatistics _actionRequestStatistics;
125 private String _displayName;
126 private RequestStatistics _eventRequestStatistics;
127 private String _portletId;
128 private String _portletName;
129 private RequestStatistics _renderRequestStatistics;
130 private Map<PortletRequestType, RequestStatistics> _requestStatistics =
131 new HashMap<PortletRequestType, RequestStatistics>();
132 private RequestStatistics _resourceRequestStatistics;
133
134 }