package edu.ualberta.med.biobank.widgets.infotables; import java.util.List; import org.apache.commons.lang.StringUtils; import org.eclipse.swt.widgets.Composite; import edu.ualberta.med.biobank.SessionManager; import edu.ualberta.med.biobank.common.action.processingEvent.ProcessingEventBriefInfo; import edu.ualberta.med.biobank.common.formatters.DateFormatter; import edu.ualberta.med.biobank.common.formatters.NumberFormatter; import edu.ualberta.med.biobank.common.permission.processingEvent.ProcessingEventDeletePermission; import edu.ualberta.med.biobank.common.permission.processingEvent.ProcessingEventReadPermission; import edu.ualberta.med.biobank.common.permission.processingEvent.ProcessingEventUpdatePermission; import edu.ualberta.med.biobank.gui.common.widgets.BgcLabelProvider; import gov.nih.nci.system.applicationservice.ApplicationException; public class PeListInfoTable extends InfoTableWidget<ProcessingEventBriefInfo> { private static final int PAGE_SIZE_ROWS = 24; protected class TableRowData { ProcessingEventBriefInfo pe; public String startDate; public String studyNameShort; public Long numSVs; public Long numAliquots; @Override public String toString() { return StringUtils.join(new String[] { startDate, studyNameShort, numSVs.toString(), numAliquots.toString() }, "\t"); //$NON-NLS-1$ } } private static final String[] HEADINGS = new String[] { Messages.PeListInfoTable_start_label, Messages.PeListInfoTable_study_label, Messages.PeListInfoTable_sources_label, Messages.PeListInfoTable_aliquoteds_label }; public PeListInfoTable(Composite parent, List<ProcessingEventBriefInfo> pvs) { super(parent, pvs, HEADINGS, PAGE_SIZE_ROWS, ProcessingEventBriefInfo.class); } @Override protected BgcLabelProvider getLabelProvider() { return new BgcLabelProvider() { @Override public String getColumnText(Object element, int columnIndex) { TableRowData item = (TableRowData) ((BiobankCollectionModel) element).o; if (item == null) { if (columnIndex == 0) { return Messages.infotable_loading_msg; } return ""; //$NON-NLS-1$ } switch (columnIndex) { case 0: return item.startDate; case 1: return item.studyNameShort; case 2: return NumberFormatter.format(item.numSVs); case 3: return NumberFormatter.format(item.numAliquots); default: return ""; //$NON-NLS-1$ } } }; } @Override public TableRowData getCollectionModelObject(Object o) throws Exception { TableRowData info = new TableRowData(); info.pe = (ProcessingEventBriefInfo) o; info.startDate = DateFormatter.formatAsDateTime(info.pe.e.getCreatedAt()); info.studyNameShort = info.pe.study; info.numSVs = info.pe.svs; info.numAliquots = info.pe.aliquots; return info; } @Override protected String getCollectionModelObjectToString(Object o) { if (o == null) return null; return ((TableRowData) o).toString(); } @Override public ProcessingEventBriefInfo getSelection() { BiobankCollectionModel item = getSelectionInternal(); if (item == null) return null; TableRowData row = (TableRowData) item.o; if (row != null) { return row.pe; } return null; } @Override protected BiobankTableSorter getComparator() { return null; } @Override protected Boolean canEdit(ProcessingEventBriefInfo target) throws ApplicationException { return SessionManager.getAppService().isAllowed( new ProcessingEventUpdatePermission(target.e.getId())); } @Override protected Boolean canDelete(ProcessingEventBriefInfo target) throws ApplicationException { return SessionManager.getAppService().isAllowed( new ProcessingEventDeletePermission(target.e.getId())); } @Override protected Boolean canView(ProcessingEventBriefInfo target) throws ApplicationException { return SessionManager.getAppService().isAllowed( new ProcessingEventReadPermission(target.e.getId())); } }