package org.jactr.eclipse.runtime.playback; /* * default logging */ import java.util.Date; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.eclipse.core.resources.IResource; import org.jactr.eclipse.runtime.playback.internal.ArchivalIndex; import org.jactr.eclipse.runtime.playback.internal.ArchiveController; import org.jactr.eclipse.runtime.playback.internal.EventPumper; import org.jactr.eclipse.runtime.session.impl.AbstractSession; public class SessionArchive extends AbstractSession { /** * Logger definition */ static private final transient Log LOGGER = LogFactory .getLog(SessionArchive.class); private ArchivalIndex _index; private EventPumper _eventPumper; private ArchiveController _controller; public SessionArchive(IResource resouce) { _index = new ArchivalIndex(resouce); _index.open(); // circular references.. _eventPumper = new EventPumper("Session Replay", this); _controller = new ArchiveController(this, _index, _eventPumper); _eventPumper.setController(_controller); } public ArchivalIndex getIndex() { return _index; } @Override public ArchiveController getController() { return _controller; } @Override public boolean isOpen() { boolean superOpen = super.isOpen(); boolean currentLessThanEnd = _controller.getCurrentTime() < _index .getEndTime(); if (LOGGER.isDebugEnabled()) LOGGER.debug(String.format( "superOpen:%s currentLessThan:%s (%.2f / %.2f)", superOpen, currentLessThanEnd, _controller.getCurrentTime(), _index.getEndTime())); return superOpen && currentLessThanEnd; } @Override protected void closeSession() { _index.close(); } @Override protected void destroySession() { // TODO Auto-generated method stub } public Date getTimeOfExecution() { return new Date(_index.getIndexFile().getLocalTimeStamp()); } }