/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.apache.ignite.internal.visor.query;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import org.apache.ignite.cache.query.QueryDetailMetrics;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.internal.visor.VisorDataTransferObject;
/**
* Data transfer object for cache query detail metrics.
*/
public class VisorQueryDetailMetrics extends VisorDataTransferObject {
/** */
private static final long serialVersionUID = 0L;
/** Query type. */
private String qryType;
/** Textual query representation. */
private String qry;
/** Cache name. */
private String cache;
/** Number of executions. */
private int execs;
/** Number of completions executions. */
private int completions;
/** Number of failures. */
private int failures;
/** Minimum time of execution. */
private long minTime;
/** Maximum time of execution. */
private long maxTime;
/** Average time of execution. */
private double avgTime;
/** Sum of execution time of completions time. */
private long totalTime;
/** Sum of execution time of completions time. */
private long lastStartTime;
/**
* Default constructor
*/
public VisorQueryDetailMetrics() {
// No-op.
}
/**
* @param m Cache query metrics.
*/
public VisorQueryDetailMetrics(QueryDetailMetrics m) {
qryType = m.queryType();
qry = m.query();
cache = m.cache();
execs = m.executions();
completions = m.completions();
failures = m.failures();
minTime = m.minimumTime();
maxTime = m.maximumTime();
avgTime = m.averageTime();
totalTime = m.totalTime();
lastStartTime = m.lastStartTime();
}
/**
* @return Query type
*/
public String getQueryType() {
return qryType;
}
/**
* @return Query type
*/
public String getQuery() {
return qry;
}
/**
* @return Cache name where query was executed.
*/
public String getCache() {
return cache;
}
/**
* @return Number of executions.
*/
public int getExecutions() {
return execs;
}
/**
* @return Number of completed executions.
*/
public int getCompletions() {
return completions;
}
/**
* @return Total number of times a query execution failed.
*/
public int getFailures() {
return failures;
}
/**
* @return Minimum execution time of query.
*/
public long getMinimumTime() {
return minTime;
}
/**
* @return Maximum execution time of query.
*/
public long getMaximumTime() {
return maxTime;
}
/**
* @return Average execution time of query.
*/
public double getAverageTime() {
return avgTime;
}
/**
* @return Total time of all query executions.
*/
public long getTotalTime() {
return totalTime;
}
/**
* @return Latest time query was stared.
*/
public long getLastStartTime() {
return lastStartTime;
}
/** {@inheritDoc} */
@Override protected void writeExternalData(ObjectOutput out) throws IOException {
U.writeString(out, qryType);
U.writeString(out, qry);
U.writeString(out, cache);
out.writeInt(execs);
out.writeInt(completions);
out.writeInt(failures);
out.writeLong(minTime);
out.writeLong(maxTime);
out.writeDouble(avgTime);
out.writeLong(totalTime);
out.writeLong(lastStartTime);
}
/** {@inheritDoc} */
@Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
qryType = U.readString(in);
qry = U.readString(in);
cache = U.readString(in);
execs = in.readInt();
completions = in.readInt();
failures = in.readInt();
minTime = in.readLong();
maxTime = in.readLong();
avgTime = in.readDouble();
totalTime = in.readLong();
lastStartTime = in.readLong();
}
/** {@inheritDoc} */
@Override public String toString() {
return S.toString(VisorQueryDetailMetrics.class, this);
}
}