/**
* 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;
import com.liferay.portal.kernel.monitoring.DataSample;
import com.liferay.portal.kernel.monitoring.RequestStatus;
import com.liferay.portal.kernel.util.StringBundler;
import java.io.Serializable;
import java.util.Map;
import org.apache.commons.lang.time.StopWatch;
/**
* @author Michael C. Han
* @author Brian Wing Shun Chan
*/
public class BaseDataSample implements DataSample, Serializable {
@Override
public void capture(RequestStatus requestStatus) {
if (_stopWatch != null) {
_stopWatch.stop();
_duration = _stopWatch.getTime();
}
if ((_timeout > 0) && (_duration >= _timeout) &&
(requestStatus != RequestStatus.ERROR)) {
_requestStatus = RequestStatus.TIMEOUT;
}
else {
_requestStatus = requestStatus;
}
}
@Override
public Map<String, String> getAttributes() {
return _attributes;
}
@Override
public long getCompanyId() {
return _companyId;
}
@Override
public String getDescription() {
return _description;
}
@Override
public long getDuration() {
return _duration;
}
@Override
public long getGroupId() {
return _groupId;
}
@Override
public String getName() {
return _name;
}
@Override
public String getNamespace() {
return _namespace;
}
@Override
public RequestStatus getRequestStatus() {
return _requestStatus;
}
@Override
public long getTimeout() {
return _timeout;
}
@Override
public String getUser() {
return _user;
}
@Override
public void prepare() {
if (_stopWatch == null) {
_stopWatch = new StopWatch();
}
_stopWatch.start();
}
@Override
public void setAttributes(Map<String, String> attributes) {
_attributes = attributes;
}
@Override
public void setCompanyId(long companyId) {
_companyId = companyId;
}
@Override
public void setDescription(String description) {
_description = description;
}
@Override
public void setGroupId(long groupId) {
_groupId = groupId;
}
@Override
public void setName(String name) {
_name = name;
}
@Override
public void setNamespace(String namespace) {
_namespace = namespace;
}
@Override
public void setTimeout(long timeout) {
_timeout = timeout;
}
@Override
public void setUser(String user) {
_user = user;
}
@Override
public String toString() {
StringBundler sb = new StringBundler(23);
sb.append("{attributes=");
sb.append(_attributes);
sb.append(", companyId=");
sb.append(_companyId);
sb.append(", groupId=");
sb.append(_groupId);
sb.append(", description=");
sb.append(_description);
sb.append(", duration=");
sb.append(_duration);
sb.append(", name=");
sb.append(_name);
sb.append(", namespace=");
sb.append(_namespace);
sb.append(", requestStatus=");
sb.append(_requestStatus);
sb.append(", stopWatch=");
sb.append(_stopWatch);
sb.append(", timeout=");
sb.append(_timeout);
sb.append(", user=");
sb.append(_user);
sb.append("}");
return sb.toString();
}
private Map<String, String> _attributes;
private long _companyId;
private String _description;
private long _duration;
private long _groupId;
private String _name;
private String _namespace;
private RequestStatus _requestStatus;
private transient StopWatch _stopWatch;
private long _timeout = -1;
private String _user;
}