package com.sleepycat.je.util;
import java.io.File;
import java.io.PrintStream;
import java.util.logging.Level;
import com.sleepycat.je.Database;
import com.sleepycat.je.DatabaseConfig;
import com.sleepycat.je.DatabaseException;
import com.sleepycat.je.DatabaseStats;
import com.sleepycat.je.DbInternal;
import com.sleepycat.je.Environment;
import com.sleepycat.je.JEVersion;
import com.sleepycat.je.StatsConfig;
import com.sleepycat.je.utilint.CmdUtil;
import com.sleepycat.je.utilint.Tracer;
import de.ovgu.cide.jakutil.*;
public class DbStat extends DbVerify {
private String usageString="usage: " + CmdUtil.getJavaCommand(DbStat.class) + "\n"+ " [-V] -s database -h dbEnvHome [-v progressInterval]\n";
private int progressInterval=0;
static public void main( String argv[]) throws DatabaseException {
DbStat stat=new DbStat();
stat.parseArgs(argv);
int ret=0;
try {
if (!stat.stats(System.err)) {
ret=1;
}
}
catch ( Throwable T) {
ret=1;
T.printStackTrace(System.err);
}
try {
stat.env.close();
}
catch ( Throwable ignored) {
}
System.exit(ret);
}
protected DbStat(){
}
public DbStat( Environment env, String dbName){
super(env,dbName,false);
}
protected void printUsage( String msg){
System.err.println(msg);
System.err.println(usageString);
System.exit(-1);
}
protected void parseArgs( String argv[]){
int argc=0;
int nArgs=argv.length;
while (argc < nArgs) {
String thisArg=argv[argc++];
if (thisArg.equals("-V")) {
System.out.println(JEVersion.CURRENT_VERSION);
System.exit(0);
}
else if (thisArg.equals("-h")) {
if (argc < nArgs) {
envHome=new File(argv[argc++]);
}
else {
printUsage("-h requires an argument");
}
}
else if (thisArg.equals("-s")) {
if (argc < nArgs) {
dbName=argv[argc++];
}
else {
printUsage("-s requires an argument");
}
}
else if (thisArg.equals("-v")) {
if (argc < nArgs) {
progressInterval=Integer.parseInt(argv[argc++]);
if (progressInterval <= 0) {
printUsage("-v requires a positive argument");
}
}
else {
printUsage("-v requires an argument");
}
}
}
if (envHome == null) {
printUsage("-h is a required argument");
}
if (dbName == null) {
printUsage("-s is a required argument");
}
}
public boolean stats( PrintStream out) throws DatabaseException {
try {
openEnv();
this.hook850();
DatabaseConfig dbConfig=new DatabaseConfig();
dbConfig.setReadOnly(true);
dbConfig.setAllowCreate(false);
DbInternal.setUseExistingConfig(dbConfig,true);
Database db=env.openDatabase(null,dbName,dbConfig);
StatsConfig statsConfig=new StatsConfig();
if (progressInterval > 0) {
statsConfig.setShowProgressInterval(progressInterval);
statsConfig.setShowProgressStream(out);
}
DatabaseStats stats=db.getStats(statsConfig);
out.println(stats);
db.close();
this.hook849();
}
catch ( DatabaseException DE) {
return false;
}
return true;
}
protected void hook849() throws DatabaseException {
}
protected void hook850() throws DatabaseException {
}
}