// $HeadURL$ // $Id$ // // Copyright © 2006, 2010, 2011, 2012 by the President and Fellows of Harvard College. // // Screensaver is an open-source project developed by the ICCB-L and NSRB labs // at Harvard Medical School. This software is distributed under the terms of // the GNU General Public License. package edu.harvard.med.screensaver.ui.arch.view; import java.io.Serializable; import edu.harvard.med.screensaver.db.GenericEntityDAO; import edu.harvard.med.screensaver.model.Entity; import edu.harvard.med.screensaver.ui.arch.searchresults.EntitySearchResults; import edu.harvard.med.screensaver.ui.arch.view.aspects.UICommand; import org.springframework.transaction.annotation.Transactional; // TODO: this class should be removed if/when we refactor the subclasses to have // "detail" viewers for the editable parts; since we never actually *edit* // within a search result context (we only view), this class doesn't really make // sense public abstract class SearchResultContextEditableEntityViewerBackingBean<E extends Entity<? extends Serializable>,R> extends EditableEntityViewerBackingBean<E> implements SearchResultContextEntityViewer<E,R> { private EntitySearchResults<E,R,?> _entitySearchResults; private String _browserActionResult; public SearchResultContextEditableEntityViewerBackingBean() { } public SearchResultContextEditableEntityViewerBackingBean(SearchResultContextEditableEntityViewerBackingBean<E,R> thisProxy, Class<E> entityClass, String browserActionResult, String viewerActionResult, GenericEntityDAO dao, EntitySearchResults<E,R,?> entitySearchResults) { super(thisProxy, entityClass, viewerActionResult, dao); _entitySearchResults = entitySearchResults; _browserActionResult = browserActionResult; } public EntitySearchResults<E,R,?> getContextualSearchResults() { return _entitySearchResults; } @Transactional @UICommand @Override public String viewEntity(E entity) { if (_entitySearchResults.findEntity(entity)) { return _browserActionResult; } log.debug("entity " + entity + " is not a member of the current search results; entity will be viewed independently"); return super.viewEntity(entity); } }