/**
* Copyright (C) 2010-14 diirt developers. See COPYRIGHT.TXT
* All rights reserved. Use is subject to license terms. See LICENSE.TXT
*/
package org.diirt.datasource.timecache.query;
import java.time.Duration;
import java.time.Instant;
import org.diirt.datasource.timecache.util.CacheHelper;
import org.diirt.util.time.TimeInterval;
/**
* Statistics of {@link Query}.
* @author Fred Arnaud (Sopra Group) - ITER
*/
public class QueryStatistics {
private final String channelName;
private final TimeInterval interval;
private final int queryID;
private int storageHit = 0;
private int sourceHit = 0;
private Duration duration;
private Instant start;
public QueryStatistics(String channelName, TimeInterval interval,
int queryID) {
this.channelName = channelName;
this.interval = interval;
this.queryID = queryID;
}
public synchronized void newDataFromStorage(int count) {
storageHit += count;
}
public synchronized void newDataFromSource(int count) {
sourceHit += count;
}
public void queryStarted() {
this.start = Instant.now();
}
public void queryCompleted() {
this.duration = Duration.between(start, Instant.now()).abs();
}
public int getStorageHit() {
return storageHit;
}
public int getSourceHit() {
return sourceHit;
}
public Duration getDuration() {
return duration;
}
public String getChannelName() {
return channelName;
}
public TimeInterval getInterval() {
return interval;
}
public int getQueryID() {
return queryID;
}
public String toConsoleString() {
StringBuilder sb = new StringBuilder();
sb.append("Query >> " + String.format("%04d", queryID) + " << ("
+ CacheHelper.format(interval) + " for " + channelName + ")");
sb.append("\tsourceHit: " + String.format("%10d", sourceHit));
sb.append("\tstorageHit: " + String.format("%10d", storageHit));
sb.append("\tduration: " + duration);
return sb.toString();
}
}