package edu.harvard.med.screensaver.ui.libraries; import org.apache.log4j.Logger; import edu.harvard.med.screensaver.ScreensaverProperties; import edu.harvard.med.screensaver.db.Criterion; import edu.harvard.med.screensaver.db.Criterion.Operator; import edu.harvard.med.screensaver.db.GenericEntityDAO; import edu.harvard.med.screensaver.db.LibrariesDAO; import edu.harvard.med.screensaver.model.Volume; import edu.harvard.med.screensaver.model.VolumeUnit; import edu.harvard.med.screensaver.model.libraries.Copy; import edu.harvard.med.screensaver.model.libraries.CopyUsageType; import edu.harvard.med.screensaver.model.libraries.LibraryType; import edu.harvard.med.screensaver.model.screens.ScreenType; import edu.harvard.med.screensaver.ui.activities.ActivitySearchResults; import edu.harvard.med.screensaver.ui.arch.datatable.column.TableColumn; import edu.harvard.med.screensaver.ui.arch.datatable.column.VolumeColumn; public class CopyMinimumVolumeReportSearchResults extends LibraryCopySearchResults { private static final Logger log = Logger.getLogger(CopyMinimumVolumeReportSearchResults.class); public CopyMinimumVolumeReportSearchResults() { super(); } public CopyMinimumVolumeReportSearchResults(GenericEntityDAO dao, LibrariesDAO librariesDao, LibraryCopyViewer libraryCopyViewer, LibraryViewer libraryViewer, ActivitySearchResults activitiesBrowser, LibraryCopyPlateSearchResults libraryCopyPlateSearchResults, ScreensaverProperties ssProps) { super(dao, librariesDao, libraryCopyViewer, libraryViewer, activitiesBrowser, libraryCopyPlateSearchResults); initialize(); setApplicationProperties(ssProps); searchAll(); // Note: adding a visible criterion seems to be necessary to trigger proper setup for the sort, to avoid // java.lang.NullPointerException - at org.apache.myfaces.custom.sortheader.HtmlSortHeaderRenderer.encodeEnd(HtmlSortHeaderRenderer.java:68) Volume vThreshold = Volume.makeVolume("7", VolumeUnit.MICROLITERS); VolumeColumn<Copy> column = (VolumeColumn<Copy>) getColumnManager().getColumn("Min Plate Remaining Volume"); column.addCriterion(new Criterion<Volume>(Operator.LESS_THAN, vThreshold)); column.setVisible(true); TableColumn<Copy,ScreenType> column2 = (TableColumn<Copy,ScreenType>) getColumnManager().getColumn("Screen Type"); column2.addCriterion(new Criterion<ScreenType>(Operator.EQUAL, ScreenType.SMALL_MOLECULE)); column2.setVisible(true); // TableColumn<Copy,PlateStatus> column3 = (TableColumn<Copy,PlateStatus>) lcsr.getColumnManager().getColumn("Primary Plate Status"); // column3.addCriterion(new Criterion<PlateStatus>(Operator.LESS_THAN, PlateStatus.RETIRED)); // column3.setVisible(true); TableColumn<Copy,Integer> column3a = (TableColumn<Copy,Integer>) getColumnManager().getColumn("Plates Available"); column3a.addCriterion(new Criterion<Integer>(Operator.GREATER_THAN, 0)); column3a.setVisible(true); //TODO: katrina has asked about filtering a list of old libraries out; and to filter out "DOS" Library Types TableColumn<Copy,LibraryType> column4 = (TableColumn<Copy,LibraryType>) getColumnManager().getColumn("Library Type"); column4.addCriterion(new Criterion<LibraryType>(Operator.NOT_EQUAL, LibraryType.DOS)); column4.setVisible(true); // For #156, omit cherry pick copy plates TableColumn<Copy,CopyUsageType> column5 = (TableColumn<Copy,CopyUsageType>) getColumnManager().getColumn("Usage Type"); column5.addCriterion(new Criterion<CopyUsageType>(Operator.NOT_EQUAL, CopyUsageType.CHERRY_PICK_SOURCE_PLATES)); column5.setVisible(true); setTitle("Copy Minimum Volume Remaining Report"); } @Override public void initialize() { // TODO Auto-generated method stub super.initialize(); } }