001
014
015 package com.liferay.portal.monitoring.statistics.portlet;
016
017 import com.liferay.portal.monitoring.MonitoringException;
018 import com.liferay.portal.monitoring.RequestStatus;
019 import com.liferay.portal.monitoring.statistics.DataSampleProcessor;
020 import com.liferay.portal.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 public void processDataSample(
083 PortletRequestDataSample portletRequestDataSample)
084 throws MonitoringException {
085
086 if (!portletRequestDataSample.getPortletId().equals(_portletId)) {
087 return;
088 }
089
090 PortletRequestType portletRequestType =
091 portletRequestDataSample.getRequestType();
092
093 RequestStatistics requestStatistics =_requestStatistics.get(
094 portletRequestType);
095
096 if (requestStatistics == null) {
097 throw new MonitoringException(
098 "No statistics found for " + portletRequestDataSample);
099 }
100
101 RequestStatus requestStatus =
102 portletRequestDataSample.getRequestStatus();
103
104 if (requestStatus.equals(RequestStatus.ERROR)) {
105 requestStatistics.incrementError();
106 }
107 else if (requestStatus.equals(RequestStatus.SUCCESS)) {
108 requestStatistics.incrementSuccessDuration(
109 portletRequestDataSample.getDuration());
110 }
111 else if (requestStatus.equals(RequestStatus.TIMEOUT)) {
112 requestStatistics.incrementTimeout();
113 }
114 }
115
116 public void reset() {
117 _actionRequestStatistics.reset();
118 _eventRequestStatistics.reset();
119 _renderRequestStatistics.reset();
120 _resourceRequestStatistics.reset();
121 }
122
123 private RequestStatistics _actionRequestStatistics;
124 private String _displayName;
125 private RequestStatistics _eventRequestStatistics;
126 private String _portletId;
127 private String _portletName;
128 private RequestStatistics _renderRequestStatistics;
129 private Map<PortletRequestType, RequestStatistics> _requestStatistics =
130 new HashMap<PortletRequestType, RequestStatistics>();
131 private RequestStatistics _resourceRequestStatistics;
132
133 }