com.intuit.tank.reporting.api.TPSInfo.java Source code

Java tutorial

Introduction

Here is the source code for com.intuit.tank.reporting.api.TPSInfo.java

Source

/**
 * Copyright 2013 Intuit Inc. All Rights Reserved
 */
package com.intuit.tank.reporting.api;

/*
 * #%L
 * Cloud Rest 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.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;

/**
 * TPSInfo class representing a tps for a specific key and a specific period
 * 
 * @author dangleton
 * 
 */
@XmlRootElement(name = "TPSInfo", namespace = Namespace.NAMESPACE_V1)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "TPSInfoType", namespace = Namespace.NAMESPACE_V1, propOrder = { "timestamp", "key", "transactions",
        "period" })
public class TPSInfo implements Serializable {

    private static final long serialVersionUID = 1L;

    @XmlElement(name = "timestamp", namespace = Namespace.NAMESPACE_V1, required = true, nillable = false)
    private Date timestamp;

    @XmlElement(name = "key", namespace = Namespace.NAMESPACE_V1, required = true, nillable = false)
    private String key;

    @XmlElement(name = "transactions", namespace = Namespace.NAMESPACE_V1, required = true, nillable = false)
    private int transactions;

    @XmlElement(name = "period", namespace = Namespace.NAMESPACE_V1, required = true, nillable = false)
    private int period;

    public TPSInfo() {
    }

    /**
     * 
     * @param timestamp
     * @param key
     * @param transactions
     * @param period
     */
    public TPSInfo(Date timestamp, String key, int transactions, int period) {
        super();
        this.timestamp = timestamp;
        this.key = key;
        this.transactions = transactions;
        this.period = period;
    }

    public TPSInfo add(TPSInfo toAdd) {
        return new TPSInfo(timestamp, key, transactions + toAdd.transactions, period);
    }

    /**
     * @return the timestamp
     */
    public Date getTimestamp() {
        return timestamp;
    }

    /**
     * @return the key
     */
    public String getKey() {
        return key;
    }

    /**
     * @return the transactions
     */
    public int getTransactions() {
        return transactions;
    }

    /**
     * @return the period
     */
    public int getPeriodInSeconds() {
        return period;
    }

    /**
     * 
     * @return
     */
    public int getTPS() {
        int tps = 0;
        if (period != 0) {
            tps = Math.round(transactions / period);
        }
        return tps;
    }

    /**
     * @{inheritDoc
     */
    @Override
    public String toString() {
        return new ToStringBuilder(this).append("key", key).append("period", period).append("tps", getTPS())
                .append("timestamp", timestamp).toString();
    }

    /**
     * @{inheritDoc
     */
    @Override
    public boolean equals(Object obj) {
        if (!(obj instanceof TPSInfo)) {
            return false;
        }
        TPSInfo entity = (TPSInfo) obj;
        return new EqualsBuilder().append(timestamp, entity.timestamp).append(key, entity.key).isEquals();
    }

    /**
     * @{inheritDoc
     */
    @Override
    public int hashCode() {
        return new HashCodeBuilder(21, 43).append(timestamp).append(key).toHashCode();
    }

}