/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.portal.monitoring.internal.statistics.portlet;
import com.liferay.portal.kernel.monitoring.DataSampleProcessor;
import com.liferay.portal.kernel.monitoring.MonitoringException;
import com.liferay.portal.kernel.monitoring.PortletRequestType;
import com.liferay.portal.kernel.monitoring.RequestStatus;
import com.liferay.portal.monitoring.internal.statistics.RequestStatistics;
import java.util.HashMap;
import java.util.Map;
/**
* @author Karthik Sudarshan
* @author Michael C. Han
* @author Brian Wing Shun Chan
*/
public class PortletStatistics
implements DataSampleProcessor<PortletRequestDataSample> {
public PortletStatistics(
String portletId, String portletName, String displayName) {
_portletId = portletId;
_portletName = portletName;
_displayName = displayName;
_actionRequestStatistics = new RequestStatistics(portletId);
_eventRequestStatistics = new RequestStatistics(portletId);
_renderRequestStatistics = new RequestStatistics(portletId);
_resourceRequestStatistics = new RequestStatistics(portletId);
_requestStatistics.put(
PortletRequestType.ACTION, _actionRequestStatistics);
_requestStatistics.put(
PortletRequestType.EVENT, _eventRequestStatistics);
_requestStatistics.put(
PortletRequestType.RENDER, _renderRequestStatistics);
_requestStatistics.put(
PortletRequestType.RESOURCE, _resourceRequestStatistics);
}
public RequestStatistics getActionRequestStatistics() {
return _actionRequestStatistics;
}
public String getDisplayName() {
return _displayName;
}
public RequestStatistics getEventRequestStatistics() {
return _eventRequestStatistics;
}
public String getPortletId() {
return _portletId;
}
public String getPortletName() {
return _portletName;
}
public RequestStatistics getRenderRequestStatistics() {
return _renderRequestStatistics;
}
public RequestStatistics getResourceRequestStatistics() {
return _resourceRequestStatistics;
}
@Override
public void processDataSample(
PortletRequestDataSample portletRequestDataSample)
throws MonitoringException {
if (!portletRequestDataSample.getPortletId().equals(_portletId)) {
return;
}
PortletRequestType portletRequestType =
portletRequestDataSample.getRequestType();
RequestStatistics requestStatistics = _requestStatistics.get(
portletRequestType);
if (requestStatistics == null) {
throw new MonitoringException(
"No statistics found for " + portletRequestDataSample);
}
RequestStatus requestStatus =
portletRequestDataSample.getRequestStatus();
if (requestStatus.equals(RequestStatus.ERROR)) {
requestStatistics.incrementError();
}
else if (requestStatus.equals(RequestStatus.SUCCESS)) {
requestStatistics.incrementSuccessDuration(
portletRequestDataSample.getDuration());
}
else if (requestStatus.equals(RequestStatus.TIMEOUT)) {
requestStatistics.incrementTimeout();
}
}
public void reset() {
_actionRequestStatistics.reset();
_eventRequestStatistics.reset();
_renderRequestStatistics.reset();
_resourceRequestStatistics.reset();
}
private final RequestStatistics _actionRequestStatistics;
private final String _displayName;
private final RequestStatistics _eventRequestStatistics;
private final String _portletId;
private final String _portletName;
private final RequestStatistics _renderRequestStatistics;
private final Map<PortletRequestType, RequestStatistics>
_requestStatistics = new HashMap<>();
private final RequestStatistics _resourceRequestStatistics;
}