blob: f7889ca2ef0f4f686ab0717be3b3ef6ea380dcea [file] [log] [blame]
/*-
* Copyright (C) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
*
* This file was distributed by Oracle as part of a version of Oracle Berkeley
* DB Java Edition made available at:
*
* http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html
*
* Please see the LICENSE file included in the top-level directory of the
* appropriate version of Oracle Berkeley DB Java Edition for a copy of the
* license and additional information.
*/
package com.sleepycat.je.utilint;
import com.sleepycat.utilint.FormatUtil;
/**
* A long stat which maintains a maximum value. It is initialized to
* Long.MIN_VALUE. The setMax() methods assigns the counter to
* MAX(counter, new value).
*/
public class LongMaxStat extends LongStat {
private static final long serialVersionUID = 1L;
public LongMaxStat(StatGroup group, StatDefinition definition) {
super(group, definition);
clear();
}
public LongMaxStat(StatGroup group,
StatDefinition definition,
long counter) {
super(group, definition);
this.counter = counter;
}
@Override
public void clear() {
set(Long.MIN_VALUE);
}
/**
* Set stat to MAX(current stat value, newValue).
*
* @return true if the max value was updated.
*/
public boolean setMax(long newValue) {
if (counter < newValue) {
counter = newValue;
return true;
}
return false;
}
@Override
public Stat<Long> computeInterval(Stat<Long> base) {
return (counter < base.get() ? base.copy() : copy());
}
@Override
public void negate() {
}
@Override
protected String getFormattedValue() {
if (counter == Long.MIN_VALUE) {
return "NONE";
}
return FormatUtil.decimalScale0().format(counter);
}
@Override
public boolean isNotSet() {
return counter == Long.MIN_VALUE;
}
}