/*******************************************************************************
* (C) Copyright 2006-2016 Nuxeo SA (http://nuxeo.com/) and others.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*******************************************************************************/
package org.nuxeo.ecm.core.work.api;
import java.io.Serializable;
/**
* Provides coherent queue metrics
*
* @since 8.3
*
*/
public class WorkQueueMetrics implements Serializable {
private static final long serialVersionUID = 1L;
public final String queueId;
public final Number scheduled;
public final Number running;
public final Number completed;
public final Number canceled;
public WorkQueueMetrics(String queueId, Number scheduled, Number running, Number completed, Number canceled) {
this.queueId = queueId;
this.scheduled = scheduled;
this.running = running;
this.completed = completed;
this.canceled = canceled;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + queueId.hashCode();
result = prime * result + scheduled.hashCode();
result = prime * result + running.hashCode();
result = prime * result + completed.hashCode();
result = prime * result + canceled.hashCode();
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (!(obj instanceof WorkQueueMetrics)) {
return false;
}
WorkQueueMetrics other = (WorkQueueMetrics) obj;
if (!queueId.equals(other.queueId)) {
return false;
}
if (scheduled.longValue() != other.scheduled.longValue()) {
return false;
}
if (running.longValue() != other.running.longValue()) {
return false;
}
if (completed.longValue() != other.completed.longValue()) {
return false;
}
if (canceled.longValue() != other.canceled.longValue()) {
return false;
}
return true;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("[")
.append(queueId)
.append(", ")
.append(scheduled)
.append(", ")
.append(running)
.append(", ")
.append(completed)
.append(", ")
.append(canceled)
.append("]");
return builder.toString();
}
public String getQueueId() {
return queueId;
}
public Number getScheduled() {
return scheduled;
}
public Number getRunning() {
return running;
}
public Number getCompleted() {
return completed;
}
public Number getCanceled() {
return canceled;
}
}