/*-
* See the file LICENSE for redistribution information.
*
* Copyright (c) 2002, 2015 Oracle and/or its affiliates. All rights reserved.
*
* $Id$
*/
package com.sleepycat.db;
import com.sleepycat.db.internal.DbConstants;
/**
Specifies the attributes of a statistics retrieval operation.
*/
public class StatsConfig {
/*
* For internal use, to allow null as a valid value for
* the config parameter.
*/
public static final StatsConfig DEFAULT = new StatsConfig();
/* package */
static StatsConfig checkNull(StatsConfig config) {
return (config == null) ? DEFAULT : config;
}
private boolean clear = false;
private boolean fast = false;
/**
An instance created using the default constructor is initialized
with the system's default settings.
*/
public StatsConfig() {
}
/**
Configure the statistics operation to reset statistics after they
are returned. The default value is false.
<p>
@param clear
If set to true, configure the statistics operation to reset
statistics after they are returned.
*/
public void setClear(boolean clear) {
this.clear = clear;
}
/**
Return if the statistics operation is configured to reset
statistics after they are returned.
<p>
@return
If the statistics operation is configured to reset statistics after
they are returned.
*/
public boolean getClear() {
return clear;
}
/**
Configure the statistics operation to return only the values which
do not incur some performance penalty.
<p>
The default value is false.
<p>
For example, skip stats that require a traversal of the database or
in-memory tree, or which lock down the lock table for a period of
time.
<p>
Among other things, this flag makes it possible for applications to
request key and record counts without incurring the performance
penalty of traversing the entire database. If the underlying
database is of type Recno, or of type Btree and the database was
configured to support retrieval by record number, the count of keys
will be exact. Otherwise, the count of keys will be the value saved
the last time the database was traversed, or 0 if no count of keys
has ever been made. If the underlying database is of type Recno,
the count of data items will be exact, otherwise, the count of data
items will be the value saved the last time the database was
traversed, or 0 if no count of data items has ever been done.
<p>
@param fast
If set to true, configure the statistics operation to return only
the values which do not incur some performance penalty.
*/
public void setFast(boolean fast) {
this.fast = fast;
}
/**
Return if the statistics operation is configured to return only the
values which do not require expensive actions.
<p>
@return
If the statistics operation is configured to return only the values
which do not require expensive actions.
*/
public boolean getFast() {
return fast;
}
int getFlags() {
int flags = 0;
if (fast)
flags |= DbConstants.DB_FAST_STAT;
if (clear)
flags |= DbConstants.DB_STAT_CLEAR;
return flags;
}
}