package pl.net.bluesoft.rnd.pt.ext.bpmnotifications.portlet.components;
import com.vaadin.ui.VerticalLayout;
import pl.net.bluesoft.rnd.processtool.plugins.ProcessToolRegistry;
import pl.net.bluesoft.rnd.pt.ext.bpmnotifications.service.NotificationHistoryEntry;
import pl.net.bluesoft.rnd.pt.ext.bpmnotifications.service.BpmNotificationService;
import pl.net.bluesoft.rnd.util.i18n.I18NSource;
import pl.net.bluesoft.util.lang.cquery.func.F;
import java.util.List;
import static pl.net.bluesoft.util.lang.Formats.nvl;
import static pl.net.bluesoft.util.lang.cquery.CQuery.from;
/**
* User: POlszewski
* Date: 2012-10-13
* Time: 21:29
*/
public class NotificationHistoryPanel extends VerticalLayout implements DataLoadable {
private I18NSource i18NSource;
private NotificationHistoryTable table;
private ProcessToolRegistry registry;
public NotificationHistoryPanel(I18NSource i18NSource, ProcessToolRegistry registry) {
this.i18NSource = i18NSource;
this.registry = registry;
buildLayout();
}
private void buildLayout() {
setWidth("100%");
setSpacing(true);
table = new NotificationHistoryTable(i18NSource);
addComponent(table);
}
@Override
public void loadData() {
List<NotificationHistoryEntry> notificationHistoryEntries = getService().getNotificationHistoryEntries();
notificationHistoryEntries = from(notificationHistoryEntries).orderBy(new F<NotificationHistoryEntry, Comparable>() {
@Override
public Comparable invoke(NotificationHistoryEntry x) {
return x.getEnqueueDate();
}
}).toList();
table.setItems(notificationHistoryEntries);
}
protected BpmNotificationService getService() {
return registry.getRegisteredService(BpmNotificationService.class);
}
}