/*-
* See the file LICENSE for redistribution information.
*
* Copyright (c) 2002-2006
* Sleepycat Software. All rights reserved.
*
* $Id: DumpFileReader.java,v 1.1 2006/05/06 08:59:58 ckaestne Exp $
*/
package com.sleepycat.je.log;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
import java.util.StringTokenizer;
import com.sleepycat.je.DatabaseException;
import com.sleepycat.je.dbi.EnvironmentImpl;
import com.sleepycat.je.utilint.DbLsn;
/**
* The DumpFileReader prints every log entry to stdout.
*/
public abstract class DumpFileReader extends FileReader {
/* A set of the entry type numbers that this DumpFileReader should dump. */
private Set targetEntryTypes;
/* A set of the txn ids that this DumpFileReader should dump. */
protected Set targetTxnIds;
/* If true, dump the long version of the entry. */
protected boolean verbose;
/**
* Create this reader to start at a given LSN.
*/
public DumpFileReader(EnvironmentImpl env,
int readBufferSize,
long startLsn,
long finishLsn,
String entryTypes,
String txnIds,
boolean verbose)
throws IOException, DatabaseException {
super(env,
readBufferSize,
true, // read forward
startLsn,
null, // single file number
DbLsn.NULL_LSN, // end of file lsn
finishLsn); // finish lsn
/* If entry types is not null, record the set of target entry types. */
targetEntryTypes = new HashSet();
if (entryTypes != null) {
StringTokenizer tokenizer = new StringTokenizer(entryTypes, ",");
while (tokenizer.hasMoreTokens()) {
String typeString = (String) tokenizer.nextToken();
targetEntryTypes.add(new Byte(typeString.trim()));
}
}
/* If txn ids is not null, record the set of target txn ids. */
targetTxnIds = new HashSet();
if (txnIds != null) {
StringTokenizer tokenizer = new StringTokenizer(txnIds, ",");
while (tokenizer.hasMoreTokens()) {
String txnIdString = (String) tokenizer.nextToken();
targetTxnIds.add(new Long(txnIdString.trim()));
}
}
this.verbose = verbose;
}
/**
* @return true if this reader should process this entry, or just
* skip over it.
*/
protected boolean isTargetEntry(byte logEntryTypeNumber,
byte logEntryTypeVersion) {
if (targetEntryTypes.size() == 0) {
/* We want to dump all entry types. */
return true;
} else {
return targetEntryTypes.contains(new Byte(logEntryTypeNumber));
}
}
public void summarize() {
}
}