package com.intuit.tank.results;
/*
* #%L
* Reporting API
* %%
* Copyright (C) 2011 - 2015 Intuit Inc.
* %%
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
* #L%
*/
import java.io.Serializable;
import java.util.Date;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import org.apache.commons.lang3.builder.ToStringBuilder;
import com.intuit.tank.reporting.api.Namespace;
/**
* WatsResult represents a result to log or store to database.
*
* @author dangleton
*
*/
@XmlRootElement(name = "TankResult", namespace = Namespace.NAMESPACE_V1)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "TankResultType", namespace = Namespace.NAMESPACE_V1, propOrder = {
"jobId",
"instanceId",
"responseTime",
"statusCode",
"responseSize",
"requestName",
"error",
"timeStamp"
})
public class TankResult implements Serializable, Comparable {
private static final long serialVersionUID = 1L;
@XmlElement(name = "jobId", namespace = Namespace.NAMESPACE_V1, required = true, nillable = false)
private String jobId;
@XmlElement(name = "instanceId", namespace = Namespace.NAMESPACE_V1, required = true, nillable = false)
private String instanceId;
@XmlElement(name = "responseTime", namespace = Namespace.NAMESPACE_V1, required = true, nillable = false)
private int responseTime;
@XmlElement(name = "statusCode", namespace = Namespace.NAMESPACE_V1, required = true, nillable = false)
private int statusCode;
@XmlElement(name = "responseSize", namespace = Namespace.NAMESPACE_V1, required = true, nillable = false)
private int responseSize;
@XmlElement(name = "requestName", namespace = Namespace.NAMESPACE_V1, required = true, nillable = false)
private String requestName;
@XmlElement(name = "error", namespace = Namespace.NAMESPACE_V1, required = true, nillable = false)
private boolean error;
@XmlElement(name = "timestamp", namespace = Namespace.NAMESPACE_V1, required = true, nillable = false)
private Date timeStamp = new Date();
/**
* @return the jobId
*/
public String getJobId() {
return jobId;
}
/**
* @param jobId
* the jobId to set
*/
public void setJobId(String jobId) {
this.jobId = jobId;
}
/**
* @return the instanceId
*/
public String getInstanceId() {
return instanceId;
}
/**
* @param instanceId
* the instanceId to set
*/
public void setInstanceId(String instanceId) {
this.instanceId = instanceId;
}
public int getResponseTime() {
return responseTime;
}
public void setResponseTime(int connectionTime) {
this.responseTime = connectionTime;
}
public int getResponseSize() {
return responseSize;
}
public void setResponseSize(int responseSize) {
this.responseSize = responseSize;
}
public boolean isError() {
return error;
}
public void setError(boolean error) {
this.error = error;
}
public void setRequestName(String requestName) {
this.requestName = requestName;
}
public String getRequestName() {
return requestName;
}
/**
* @return the timeStamp
*/
public Date getTimeStamp() {
return timeStamp;
}
/**
* @param timeStamp
* the timeStamp to set
*/
public void setTimeStamp(Date timeStamp) {
this.timeStamp = timeStamp;
}
/**
* @{inheritDoc
*/
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
/**
* @return the statusCode
*/
public int getStatusCode() {
return statusCode;
}
/**
* @param statusCode
* the statusCode to set
*/
public void setStatusCode(int statusCode) {
this.statusCode = statusCode;
}
public void add(TankResult result) {
responseTime += result.getResponseTime();
responseSize += result.getResponseSize();
timeStamp = result.getTimeStamp();
if (statusCode <= 0) {
statusCode = result.getStatusCode();
}
if (result.error) {
error = result.error;
}
}
@Override
public int compareTo(Object o) {
return this.requestName.compareTo(((TankResult)o).getRequestName());
}
}