// $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.screens;
import java.util.Collection;
import org.apache.log4j.Logger;
import edu.harvard.med.screensaver.ScreensaverConstants;
import edu.harvard.med.screensaver.db.GenericEntityDAO;
import edu.harvard.med.screensaver.db.UsersDAO;
import edu.harvard.med.screensaver.db.datafetcher.DataFetcherUtil;
import edu.harvard.med.screensaver.db.datafetcher.EntityDataFetcher;
import edu.harvard.med.screensaver.db.hqlbuilder.HqlBuilder;
import edu.harvard.med.screensaver.model.cells.Cell;
import edu.harvard.med.screensaver.model.screens.Screen;
import edu.harvard.med.screensaver.model.screens.Study;
import edu.harvard.med.screensaver.ui.arch.datatable.model.InMemoryEntityDataModel;
import edu.harvard.med.screensaver.ui.arch.view.EditResult;
import edu.harvard.med.screensaver.ui.cells.CellSearchResults;
public class StudyDetailViewer extends AbstractStudyDetailViewer<Study>
{
private static Logger log = Logger.getLogger(ScreenDetailViewer.class);
private CellSearchResults _cellSearchResults;
/**
* @motivation for CGLIB2
*/
protected StudyDetailViewer()
{
}
public StudyDetailViewer(StudyDetailViewer thisProxy,
StudyViewer studyViewer,
GenericEntityDAO dao,
UsersDAO usersDao,
CellSearchResults cellSearchResults)
{
super(thisProxy, dao, ScreensaverConstants.VIEW_STUDY, usersDao);
_cellSearchResults = cellSearchResults;
getIsPanelCollapsedMap().put("cellsForScreen", false);
}
@Override
protected void initializeViewer(final Study entity) {
super.initializeViewer(entity);
if(isLINCS())
{
_cellSearchResults.initialize(new InMemoryEntityDataModel<Cell, Integer, Cell>(
new EntityDataFetcher<Cell, Integer>(Cell.class, getDao()) {
@Override
public void addDomainRestrictions(HqlBuilder hql) {
DataFetcherUtil.addDomainRestrictions(hql, Cell.experimentalCellInformationSetPath.to("screen"), entity, getRootAlias());
}
}));
getDao().needReadOnly(((Screen)entity), Screen.experimentalCellInfomationSet);
}
}
@Override
public boolean isEditable()
{
return false;
}
@Override
protected String postEditAction(EditResult editResult)
{
return null;
}
public CellSearchResults getCellSearchResults()
{
return _cellSearchResults;
}
public boolean getHasCells()
{
Collection c = ((Screen)getEntity()).getExperimentalCellInformationSet();
return c == null ? false : !c.isEmpty();
}
}