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()); } }