package edu.harvard.med.screensaver.ui.arch.view;
import org.apache.log4j.Logger;
import edu.harvard.med.screensaver.model.Entity;
import edu.harvard.med.screensaver.ui.arch.util.servlet.EntityViewerInitializerPhaseListener;
import edu.harvard.med.screensaver.util.DevelopmentException;
/**
* Initializes an {@link EntityViewerBackingBean} with the specified entity, allowing this initialization to performed
* at an appropriate future time (e.g., after a user has been authenticated).
*
* @see EntityViewerInitializerPhaseListener
* @author <a mailto="andrew_tolopko@hms.harvard.edu">Andrew Tolopko</a>
*/
public class EntityViewerInitializer
{
private static final Logger log = Logger.getLogger(EntityViewerInitializer.class);
private EntityViewerBackingBean _viewer;
private Entity _entity;
public EntityViewerInitializer(EntityViewerBackingBean viewer, Entity entity)
{
_viewer = viewer;
_entity = entity;
}
public void apply()
{
if (!isReadyForInitialization()) {
throw new DevelopmentException("viewer is not ready for initialization");
}
log.info("initializing " + _viewer.getClass() + " with entity " + _entity);
_viewer.viewEntity(_entity);
}
public boolean isReadyForInitialization()
{
return _viewer.getScreensaverUser() != null;
}
}