// $HeadURL: http://seanderickson1@forge.abcd.harvard.edu/svn/screensaver/branches/serickson/3200/web/src/main/java/edu/harvard/med/screensaver/ui/libraries/AnnotationSearchResults.java $ // $Id: AnnotationSearchResults.java 6949 2012-01-13 19:00:59Z seanderickson1 $ // 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.cells; import java.util.List; import org.apache.log4j.Logger; import com.google.common.collect.Lists; import edu.harvard.med.screensaver.db.GenericEntityDAO; import edu.harvard.med.screensaver.db.datafetcher.EntityDataFetcher; import edu.harvard.med.screensaver.model.cells.ExperimentalCellInformation; import edu.harvard.med.screensaver.model.meta.RelationshipPath; import edu.harvard.med.screensaver.ui.arch.datatable.column.TableColumn; import edu.harvard.med.screensaver.ui.arch.datatable.column.entity.TextEntityColumn; import edu.harvard.med.screensaver.ui.arch.datatable.model.InMemoryEntityDataModel; import edu.harvard.med.screensaver.ui.arch.searchresults.EntityBasedEntitySearchResults; import edu.harvard.med.screensaver.ui.screens.ScreenViewer; import edu.harvard.med.screensaver.ui.screens.StudyViewer; public class ScreenCellSearchResults extends EntityBasedEntitySearchResults<ExperimentalCellInformation, Integer> { private static final Logger log = Logger.getLogger(ScreenCellSearchResults.class); private GenericEntityDAO _dao; private ScreenViewer _screenViewer; private CellViewer _cellViewer; private StudyViewer _studyViewer; /** * @motivation for CGLIB2 */ protected ScreenCellSearchResults() { } public ScreenCellSearchResults(ScreenCellViewer screenCellViewer, ScreenViewer screenViewer, StudyViewer studyViewer, CellViewer cellViewer, GenericEntityDAO dao) { super(screenCellViewer); _dao = dao; _screenViewer = screenViewer; _studyViewer = studyViewer; _cellViewer = cellViewer; } @Override public void initialize() { super.initialize(); } public void searchAll() { EntityDataFetcher<ExperimentalCellInformation, Integer> dataFetcher = (EntityDataFetcher<ExperimentalCellInformation, Integer>) new EntityDataFetcher<ExperimentalCellInformation, Integer>( ExperimentalCellInformation.class, _dao); initialize(new InMemoryEntityDataModel<ExperimentalCellInformation, Integer, ExperimentalCellInformation>(dataFetcher)); getColumnManager().setSortAscending(false); } // implementations of the SearchResults abstract methods @Override protected List<TableColumn<ExperimentalCellInformation, ?>> buildColumns() { List<TableColumn<ExperimentalCellInformation, ?>> columns = Lists.newArrayList(); columns.add(new TextEntityColumn<ExperimentalCellInformation>(RelationshipPath.from(ExperimentalCellInformation.class).toProperty("screen"), "Screen or Study", "The screen facility id", TableColumn.UNGROUPED) { @Override public String getCellValue(ExperimentalCellInformation info) { return info.getScreen().getFacilityId(); // if(info.getScreen() != null ) return info.getScreen().getFacilityId(); // if(info.getStudy() != null ) return info.getStudy().getFacilityId(); // else throw new RuntimeException("ExperimentalCellInformation not linked to a screen or study! " + info); } @SuppressWarnings("unchecked") @Override public Object cellAction(ExperimentalCellInformation info) { if(!info.getScreen().isStudyOnly() ) return _screenViewer.viewEntity(info.getScreen()); else return _studyViewer.viewEntity(info.getScreen()); // if(info.getStudy() != null ) return _studyViewer.viewEntity(info.getStudy()); // else throw new RuntimeException("ExperimentalCellInformation not linked to a screen or study! " + info); } @Override public boolean isCommandLink() { return true; } }); columns.get(columns.size() - 1).setVisible(true); columns.get(columns.size() - 1).setVisible(true); columns.add(new TextEntityColumn<ExperimentalCellInformation>(RelationshipPath.from(ExperimentalCellInformation.class).toProperty("screen"), "Screen Title", "The screen title", TableColumn.UNGROUPED) { @Override public String getCellValue(ExperimentalCellInformation info) { return info.getScreen().getTitle(); // if(info.getScreen() != null ) return info.getScreen().getTitle(); // if(info.getStudy() != null ) return info.getStudy().getTitle(); // else throw new RuntimeException("ExperimentalCellInformation not linked to a screen or study! " + info); } }); columns.get(columns.size() - 1).setVisible(true); // TODO: show some information about the screen, since this will be displayed in the cell viewer columns.add(new TextEntityColumn<ExperimentalCellInformation>(RelationshipPath.from(ExperimentalCellInformation.class).toProperty("cell"), "Facility ID", "ID assigned to this cell by the HMS LINCS facility", TableColumn.UNGROUPED) { @Override public String getCellValue(ExperimentalCellInformation info) { return info.getCell().getFacilityId(); } @SuppressWarnings("unchecked") @Override public Object cellAction(ExperimentalCellInformation info) { return _cellViewer.viewEntity(info.getCell()); } @Override public boolean isCommandLink() { return true; } }); columns.get(columns.size() - 1).setVisible(true); columns.add(new TextEntityColumn<ExperimentalCellInformation>(RelationshipPath.from(ExperimentalCellInformation.class).toProperty("cell"), "Cell Name", "The cell name", TableColumn.UNGROUPED) { @Override public String getCellValue(ExperimentalCellInformation info) { return info.getCell().getName(); } }); columns.get(columns.size() - 1).setVisible(true); // TODO: show whatever Experimental Cell Information properties there may be return columns; } }