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;
import de.ovgu.cide.jakutil.*;
/**
* The DumpFileReader prints every log entry to stdout.
*/
public abstract class DumpFileReader extends FileReader {
private Set targetEntryTypes;
protected Set targetTxnIds;
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,startLsn,null,DbLsn.NULL_LSN,finishLsn);
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()));
}
}
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) {
return true;
}
else {
return targetEntryTypes.contains(new Byte(logEntryTypeNumber));
}
}
public void summarize(){
}
}