package org.prevayler.implementation;
import org.prevayler.foundation.Chunking;
import org.prevayler.foundation.Guided;
import org.prevayler.foundation.Turn;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Date;
public class TransactionGuide extends Guided {
private final TransactionTimestamp _transactionTimestamp;
public TransactionGuide( TransactionTimestamp transactionTimestamp, Turn pipelineTurn){
super(pipelineTurn);
_transactionTimestamp=transactionTimestamp;
}
public TransactionTimestamp timestamp(){
return _transactionTimestamp;
}
public void checkSystemVersion( long expectedSystemVersion){
if (_transactionTimestamp.systemVersion() != expectedSystemVersion) {
throw new IllegalStateException("Attempted to process " + _transactionTimestamp.systemVersion() + " when ready for "+ expectedSystemVersion);
}
}
public Date executionTime(){
return _transactionTimestamp.executionTime();
}
public void writeTo( OutputStream stream) throws IOException {
Chunking.writeChunk(stream,_transactionTimestamp.toChunk());
}
}