Example usage for com.vaadin.data.provider DataProvider fromFilteringCallbacks

List of usage examples for com.vaadin.data.provider DataProvider fromFilteringCallbacks

Introduction

In this page you can find the example usage for com.vaadin.data.provider DataProvider fromFilteringCallbacks.

Prototype

public static <T, F> CallbackDataProvider<T, F> fromFilteringCallbacks(FetchCallback<T, F> fetchCallback,
        CountCallback<T, F> countCallback) 

Source Link

Document

Creates a new data provider that uses filtering callbacks for fetching and counting items from any backing store.

Usage

From source file:de.symeda.sormas.ui.caze.CaseGrid.java

License:Open Source License

@SuppressWarnings("unchecked")
public CaseGrid() {
    super(CaseIndexDto.class);
    setSizeFull();//from  ww  w  .  ja v a 2 s.  co m

    if (UserProvider.getCurrent().hasUserRight(UserRight.PERFORM_BULK_OPERATIONS)) {
        setSelectionMode(SelectionMode.MULTI);
    } else {
        setSelectionMode(SelectionMode.NONE);
    }

    DataProvider<CaseIndexDto, CaseCriteria> dataProvider = DataProvider
            .fromFilteringCallbacks(query -> FacadeProvider.getCaseFacade()
                    .getIndexList(UserProvider.getCurrent().getUuid(), query.getFilter().orElse(null),
                            query.getOffset(), query.getLimit(),
                            query.getSortOrders().stream()
                                    .map(sortOrder -> new SortProperty(sortOrder.getSorted(),
                                            sortOrder.getDirection() == SortDirection.ASCENDING))
                                    .collect(Collectors.toList()))
                    .stream(), query -> {
                        return (int) FacadeProvider.getCaseFacade().count(UserProvider.getCurrent().getUuid(),
                                query.getFilter().orElse(null));
                    });
    setDataProvider(dataProvider);

    Column<CaseIndexDto, String> diseaseShortColumn = addColumn(
            caze -> DiseaseHelper.toString(caze.getDisease(), caze.getDiseaseDetails()));
    diseaseShortColumn.setId(DISEASE_SHORT);
    diseaseShortColumn.setSortProperty(CaseIndexDto.DISEASE);

    setColumns(CaseIndexDto.UUID, CaseIndexDto.EPID_NUMBER, DISEASE_SHORT, CaseIndexDto.CASE_CLASSIFICATION,
            CaseIndexDto.OUTCOME, CaseIndexDto.INVESTIGATION_STATUS, CaseIndexDto.PERSON_FIRST_NAME,
            CaseIndexDto.PERSON_LAST_NAME, CaseIndexDto.DISTRICT_NAME, CaseIndexDto.HEALTH_FACILITY_NAME,
            CaseIndexDto.POINT_OF_ENTRY_NAME, CaseIndexDto.REPORT_DATE, CaseIndexDto.CREATION_DATE);

    ((Column<CaseIndexDto, String>) getColumn(CaseIndexDto.UUID)).setRenderer(new UuidRenderer());
    ((Column<CaseIndexDto, Date>) getColumn(CaseIndexDto.REPORT_DATE))
            .setRenderer(new DateRenderer(DateHelper.getLocalDateTimeFormat()));

    if (UserProvider.getCurrent().hasUserRight(UserRight.CASE_IMPORT)) {
        ((Column<CaseIndexDto, Date>) getColumn(CaseIndexDto.CREATION_DATE))
                .setRenderer(new DateRenderer(DateHelper.getLocalDateTimeFormat()));
    } else {
        removeColumn(CaseIndexDto.CREATION_DATE);
    }

    for (Column<?, ?> column : getColumns()) {
        column.setCaption(I18nProperties.getPrefixCaption(CaseIndexDto.I18N_PREFIX, column.getId().toString(),
                column.getCaption()));
    }

    addItemClickListener(e -> {
        if ((e.getColumn() != null && CaseIndexDto.UUID.equals(e.getColumn().getId()))
                || e.getMouseEventDetails().isDoubleClick()) {
            ControllerProvider.getCaseController().navigateToCase(e.getItem().getUuid());
        }
    });
}

From source file:de.symeda.sormas.ui.configuration.infrastructure.CommunitiesGrid.java

License:Open Source License

public CommunitiesGrid() {
    super(CommunityDto.class);
    setSizeFull();//  ww w. ja  v  a 2  s . co m
    setSelectionMode(SelectionMode.NONE);

    DataProvider<CommunityDto, CommunityCriteria> dataProvider = DataProvider
            .fromFilteringCallbacks(query -> FacadeProvider.getCommunityFacade()
                    .getIndexList(query.getFilter().orElse(null), query.getOffset(), query.getLimit(),
                            query.getSortOrders().stream()
                                    .map(sortOrder -> new SortProperty(sortOrder.getSorted(),
                                            sortOrder.getDirection() == SortDirection.ASCENDING))
                                    .collect(Collectors.toList()))
                    .stream(), query -> {
                        return (int) FacadeProvider.getCommunityFacade().count(query.getFilter().orElse(null));
                    });
    setDataProvider(dataProvider);

    setColumns(CommunityDto.NAME, CommunityDto.REGION, CommunityDto.DISTRICT);

    if (UserProvider.getCurrent().hasUserRight(UserRight.INFRASTRUCTURE_EDIT)) {
        Column<CommunityDto, String> editColumn = addColumn(entry -> VaadinIcons.EDIT.getHtml(),
                new HtmlRenderer());
        editColumn.setId(EDIT_BTN_ID);
        editColumn.setWidth(20);

        addItemClickListener(e -> {
            if (e.getColumn() != null && (EDIT_BTN_ID.equals(e.getColumn().getId())
                    || e.getMouseEventDetails().isDoubleClick())) {
                ControllerProvider.getInfrastructureController().editCommunity(e.getItem().getUuid());
            }
        });
    }

    for (Column<?, ?> column : getColumns()) {
        column.setCaption(I18nProperties.getPrefixCaption(CommunityDto.I18N_PREFIX, column.getId().toString(),
                column.getCaption()));
    }
}

From source file:de.symeda.sormas.ui.configuration.infrastructure.DistrictsGrid.java

License:Open Source License

public DistrictsGrid() {
    super(DistrictDto.class);
    setSizeFull();/*from  w w  w.  j  a va 2s .c  om*/
    setSelectionMode(SelectionMode.NONE);

    DataProvider<DistrictDto, DistrictCriteria> dataProvider = DataProvider
            .fromFilteringCallbacks(query -> FacadeProvider.getDistrictFacade()
                    .getIndexList(query.getFilter().orElse(null), query.getOffset(), query.getLimit(),
                            query.getSortOrders().stream()
                                    .map(sortOrder -> new SortProperty(sortOrder.getSorted(),
                                            sortOrder.getDirection() == SortDirection.ASCENDING))
                                    .collect(Collectors.toList()))
                    .stream(), query -> {
                        return (int) FacadeProvider.getDistrictFacade().count(query.getFilter().orElse(null));
                    });
    setDataProvider(dataProvider);

    setColumns(DistrictDto.NAME, DistrictDto.REGION, DistrictDto.EPID_CODE, DistrictDto.POPULATION,
            DistrictDto.GROWTH_RATE);

    if (UserProvider.getCurrent().hasUserRight(UserRight.INFRASTRUCTURE_EDIT)) {
        Column<DistrictDto, String> editColumn = addColumn(entry -> VaadinIcons.EDIT.getHtml(),
                new HtmlRenderer());
        editColumn.setId(EDIT_BTN_ID);
        editColumn.setWidth(20);

        addItemClickListener(e -> {
            if (e.getColumn() != null && (EDIT_BTN_ID.equals(e.getColumn().getId())
                    || e.getMouseEventDetails().isDoubleClick())) {
                ControllerProvider.getInfrastructureController().editDistrict(e.getItem().getUuid());
            }
        });
    }

    for (Column<?, ?> column : getColumns()) {
        column.setCaption(I18nProperties.getPrefixCaption(DistrictDto.I18N_PREFIX, column.getId().toString(),
                column.getCaption()));
    }
}

From source file:de.symeda.sormas.ui.configuration.infrastructure.FacilitiesGrid.java

License:Open Source License

public FacilitiesGrid() {
    super(FacilityDto.class);
    setSizeFull();/*  w  w  w.  j  av a 2s.  co m*/
    setSelectionMode(SelectionMode.NONE);

    DataProvider<FacilityDto, FacilityCriteria> dataProvider = DataProvider
            .fromFilteringCallbacks(query -> FacadeProvider.getFacilityFacade()
                    .getIndexList(query.getFilter().orElse(null), query.getOffset(), query.getLimit(),
                            query.getSortOrders().stream()
                                    .map(sortOrder -> new SortProperty(sortOrder.getSorted(),
                                            sortOrder.getDirection() == SortDirection.ASCENDING))
                                    .collect(Collectors.toList()))
                    .stream(), query -> {
                        return (int) FacadeProvider.getFacilityFacade().count(query.getFilter().orElse(null));
                    });
    setDataProvider(dataProvider);

    setColumns(FacilityDto.NAME, FacilityDto.REGION, FacilityDto.DISTRICT, FacilityDto.COMMUNITY,
            FacilityDto.CITY, FacilityDto.LATITUDE, FacilityDto.LONGITUDE);

    if (UserProvider.getCurrent().hasUserRight(UserRight.INFRASTRUCTURE_EDIT)) {
        Column<FacilityDto, String> editColumn = addColumn(entry -> VaadinIcons.EDIT.getHtml(),
                new HtmlRenderer());
        editColumn.setId(EDIT_BTN_ID);
        editColumn.setWidth(20);

        addItemClickListener(e -> {
            if (e.getColumn() != null && (EDIT_BTN_ID.equals(e.getColumn().getId())
                    || e.getMouseEventDetails().isDoubleClick())) {
                ControllerProvider.getInfrastructureController().editHealthFacility(e.getItem().getUuid());
            }
        });
    }

    for (Column<?, ?> column : getColumns()) {
        column.setCaption(I18nProperties.getPrefixCaption(FacilityDto.I18N_PREFIX, column.getId().toString(),
                column.getCaption()));
    }
}

From source file:de.symeda.sormas.ui.configuration.infrastructure.RegionsGrid.java

License:Open Source License

public RegionsGrid() {
    super(RegionDto.class);
    setSizeFull();/*from   w w  w .j a  v a 2 s. c o  m*/
    setSelectionMode(SelectionMode.NONE);

    DataProvider<RegionDto, RegionCriteria> dataProvider = DataProvider
            .fromFilteringCallbacks(query -> FacadeProvider.getRegionFacade()
                    .getIndexList(query.getFilter().orElse(null), query.getOffset(), query.getLimit(),
                            query.getSortOrders().stream()
                                    .map(sortOrder -> new SortProperty(sortOrder.getSorted(),
                                            sortOrder.getDirection() == SortDirection.ASCENDING))
                                    .collect(Collectors.toList()))
                    .stream(), query -> {
                        return (int) FacadeProvider.getRegionFacade().count(query.getFilter().orElse(null));
                    });
    setDataProvider(dataProvider);

    setColumns(RegionDto.NAME, RegionDto.EPID_CODE, RegionDto.POPULATION, RegionDto.GROWTH_RATE);

    if (UserProvider.getCurrent().hasUserRight(UserRight.INFRASTRUCTURE_EDIT)) {
        Column<RegionDto, String> editColumn = addColumn(entry -> VaadinIcons.EDIT.getHtml(),
                new HtmlRenderer());
        editColumn.setId(EDIT_BTN_ID);
        editColumn.setWidth(20);

        addItemClickListener(e -> {
            if (e.getColumn() != null && (EDIT_BTN_ID.equals(e.getColumn().getId())
                    || e.getMouseEventDetails().isDoubleClick())) {
                ControllerProvider.getInfrastructureController().editRegion(e.getItem().getUuid());
            }
        });
    }

    for (Column<?, ?> column : getColumns()) {
        column.setCaption(I18nProperties.getPrefixCaption(RegionDto.I18N_PREFIX, column.getId().toString(),
                column.getCaption()));
    }
}

From source file:de.symeda.sormas.ui.contact.ContactGrid.java

License:Open Source License

@SuppressWarnings("unchecked")
public ContactGrid() {
    super(ContactIndexDto.class);
    setSizeFull();//from   ww  w. j av  a 2  s .  c om

    if (UserProvider.getCurrent().hasUserRight(UserRight.PERFORM_BULK_OPERATIONS)) {
        setSelectionMode(SelectionMode.MULTI);
    } else {
        setSelectionMode(SelectionMode.NONE);
    }

    DataProvider<ContactIndexDto, ContactCriteria> dataProvider = DataProvider
            .fromFilteringCallbacks(query -> FacadeProvider.getContactFacade()
                    .getIndexList(UserProvider.getCurrent().getUuid(), query.getFilter().orElse(null),
                            query.getOffset(), query.getLimit(),
                            query.getSortOrders().stream()
                                    .map(sortOrder -> new SortProperty(sortOrder.getSorted(),
                                            sortOrder.getDirection() == SortDirection.ASCENDING))
                                    .collect(Collectors.toList()))
                    .stream(), query -> {
                        return (int) FacadeProvider.getContactFacade()
                                .count(UserProvider.getCurrent().getUuid(), query.getFilter().orElse(null));
                    });
    setDataProvider(dataProvider);

    Column<ContactIndexDto, String> diseaseShortColumn = addColumn(
            entry -> DiseaseHelper.toString(entry.getCaseDisease(), entry.getCaseDiseaseDetails()));
    diseaseShortColumn.setId(DISEASE_SHORT);
    diseaseShortColumn.setSortProperty(ContactIndexDto.CASE_DISEASE);

    Column<ContactIndexDto, String> visitsColumn = addColumn(entry -> {
        if (FacadeProvider.getDiseaseConfigurationFacade().hasFollowUp(entry.getCaseDisease())) {
            int numberOfVisits = FacadeProvider.getVisitFacade().getNumberOfVisits(entry.toReference(), null);
            int numberOfRequiredVisits = ContactLogic.getNumberOfRequiredVisitsSoFar(entry.getReportDateTime(),
                    entry.getFollowUpUntil());
            int numberOfMissedVisits = numberOfRequiredVisits - numberOfVisits;
            // Set number of missed visits to 0 when more visits than expected have been done
            if (numberOfMissedVisits < 0) {
                numberOfMissedVisits = 0;
            }
            return String.format(I18nProperties.getCaption(Captions.formatNumberOfVisitsFormat), numberOfVisits,
                    numberOfMissedVisits);
        } else {
            return "-";
        }

    });
    visitsColumn.setId(NUMBER_OF_VISITS);
    visitsColumn.setSortable(false);

    Column<ContactIndexDto, String> pendingTasksColumn = addColumn(
            entry -> String.format(I18nProperties.getCaption(Captions.formatSimpleNumberFormat),
                    FacadeProvider.getTaskFacade().getPendingTaskCountByContact(entry.toReference())));
    pendingTasksColumn.setId(NUMBER_OF_PENDING_TASKS);
    pendingTasksColumn.setSortable(false);

    setColumns(ContactIndexDto.UUID, DISEASE_SHORT, ContactIndexDto.CONTACT_CLASSIFICATION,
            ContactIndexDto.CONTACT_STATUS, ContactIndexDto.PERSON, ContactIndexDto.CONTACT_PROXIMITY,
            ContactIndexDto.FOLLOW_UP_STATUS, NUMBER_OF_VISITS, NUMBER_OF_PENDING_TASKS);
    getColumn(ContactIndexDto.CONTACT_PROXIMITY).setWidth(200);
    ((Column<ContactIndexDto, String>) getColumn(ContactIndexDto.UUID)).setRenderer(new UuidRenderer());

    for (Column<?, ?> column : getColumns()) {
        column.setCaption(I18nProperties.getPrefixCaption(ContactIndexDto.I18N_PREFIX,
                column.getId().toString(), column.getCaption()));
    }

    addItemClickListener(e -> {
        if ((e.getColumn() != null && CaseIndexDto.UUID.equals(e.getColumn().getId()))
                || e.getMouseEventDetails().isDoubleClick()) {
            ControllerProvider.getContactController().navigateToData(e.getItem().getUuid());
        }
    });
}

From source file:de.symeda.sormas.ui.events.EventGrid.java

License:Open Source License

@SuppressWarnings("unchecked")
public EventGrid() {
    super(EventIndexDto.class);
    setSizeFull();/*from w  ww. j a  va2  s  . co m*/

    if (UserProvider.getCurrent().hasUserRight(UserRight.PERFORM_BULK_OPERATIONS)) {
        setSelectionMode(SelectionMode.MULTI);
    } else {
        setSelectionMode(SelectionMode.NONE);
    }

    DataProvider<EventIndexDto, EventCriteria> dataProvider = DataProvider
            .fromFilteringCallbacks(query -> FacadeProvider.getEventFacade()
                    .getIndexList(UserProvider.getCurrent().getUuid(), query.getFilter().orElse(null),
                            query.getOffset(), query.getLimit(),
                            query.getSortOrders().stream()
                                    .map(sortOrder -> new SortProperty(sortOrder.getSorted(),
                                            sortOrder.getDirection() == SortDirection.ASCENDING))
                                    .collect(Collectors.toList()))
                    .stream(), query -> {
                        return (int) FacadeProvider.getEventFacade().count(UserProvider.getCurrent().getUuid(),
                                query.getFilter().orElse(null));
                    });
    setDataProvider(dataProvider);

    Column<EventIndexDto, String> diseaseShortColumn = addColumn(
            entry -> DiseaseHelper.toString(entry.getDisease(), entry.getDiseaseDetails()));
    diseaseShortColumn.setId(DISEASE_SHORT);
    diseaseShortColumn.setSortProperty(EventIndexDto.DISEASE);

    Column<EventIndexDto, String> informationSourceColumn = addColumn(
            event -> (event.getSrcFirstName() != null ? event.getSrcFirstName() : "") + " "
                    + (event.getSrcLastName() != null ? event.getSrcLastName() : "")
                    + (event.getSrcTelNo() != null && !event.getSrcTelNo().isEmpty()
                            ? " (" + event.getSrcTelNo() + ")"
                            : ""));
    informationSourceColumn.setId(INFORMATION_SOURCE);
    informationSourceColumn.setSortable(false);

    Column<EventIndexDto, String> pendingTasksColumn = addColumn(
            entry -> String.format(I18nProperties.getCaption(Captions.formatSimpleNumberFormat),
                    FacadeProvider.getTaskFacade().getPendingTaskCountByEvent(entry.toReference())));
    pendingTasksColumn.setId(NUMBER_OF_PENDING_TASKS);
    pendingTasksColumn.setSortable(false);

    setColumns(EventIndexDto.UUID, EventIndexDto.EVENT_STATUS, EventIndexDto.EVENT_DATE, DISEASE_SHORT,
            EventIndexDto.EVENT_DESC, EventIndexDto.EVENT_LOCATION, INFORMATION_SOURCE,
            EventIndexDto.REPORT_DATE_TIME, NUMBER_OF_PENDING_TASKS);

    ((Column<EventIndexDto, String>) getColumn(EventIndexDto.UUID)).setRenderer(new UuidRenderer());
    ((Column<EventIndexDto, Date>) getColumn(EventIndexDto.EVENT_DATE))
            .setRenderer(new DateRenderer(DateHelper.getLocalDateTimeFormat()));
    ((Column<EventIndexDto, Date>) getColumn(EventIndexDto.REPORT_DATE_TIME))
            .setRenderer(new DateRenderer(DateHelper.getLocalDateTimeFormat()));

    for (Column<?, ?> column : getColumns()) {
        column.setCaption(I18nProperties.getPrefixCaption(EventIndexDto.I18N_PREFIX, column.getId().toString(),
                column.getCaption()));
    }

    addItemClickListener(e -> {
        if ((e.getColumn() != null && EventIndexDto.UUID.equals(e.getColumn().getId()))
                || e.getMouseEventDetails().isDoubleClick()) {
            ControllerProvider.getEventController().navigateToData(e.getItem().getUuid());
        }
    });
}

From source file:de.symeda.sormas.ui.events.EventParticipantsGrid.java

License:Open Source License

@SuppressWarnings("unchecked")
public EventParticipantsGrid() {
    super(EventParticipantIndexDto.class);
    setSizeFull();//w  w  w. ja v a  2  s .  co  m

    if (UserProvider.getCurrent().hasUserRight(UserRight.PERFORM_BULK_OPERATIONS)) {
        setSelectionMode(SelectionMode.MULTI);
    } else {
        setSelectionMode(SelectionMode.NONE);
    }

    DataProvider<EventParticipantIndexDto, EventParticipantCriteria> dataProvider = DataProvider
            .fromFilteringCallbacks(query -> FacadeProvider.getEventParticipantFacade()
                    .getIndexList(query.getFilter().orElse(null), query.getOffset(), query.getLimit(),
                            query.getSortOrders().stream()
                                    .map(sortOrder -> new SortProperty(sortOrder.getSorted(),
                                            sortOrder.getDirection() == SortDirection.ASCENDING))
                                    .collect(Collectors.toList()))
                    .stream(), query -> {
                        return (int) FacadeProvider.getEventParticipantFacade()
                                .count(query.getFilter().orElse(null));
                    });
    setDataProvider(dataProvider);

    Column<EventParticipantIndexDto, String> editColumn = addColumn(entry -> VaadinIcons.EDIT.getHtml(),
            new HtmlRenderer());
    editColumn.setId(EDIT_BTN_ID);
    editColumn.setWidth(20);

    Column<EventParticipantIndexDto, String> caseIdColumn = addColumn(entry -> {
        if (entry.getCaseUuid() != null) {
            return entry.getCaseUuid();
        } else {
            return "";
        }
    });
    caseIdColumn.setId(CASE_ID);
    caseIdColumn.setSortProperty(EventParticipantIndexDto.CASE_UUID);
    caseIdColumn.setRenderer(new CaseUuidRenderer(true));

    setColumns(EDIT_BTN_ID, EventParticipantIndexDto.PERSON_UUID, EventParticipantIndexDto.NAME,
            EventParticipantIndexDto.SEX, EventParticipantIndexDto.APPROXIMATE_AGE,
            EventParticipantIndexDto.INVOLVEMENT_DESCRIPTION, CASE_ID);

    ((Column<EventParticipantIndexDto, String>) getColumn(EventParticipantIndexDto.PERSON_UUID))
            .setRenderer(new UuidRenderer());

    for (Column<?, ?> column : getColumns()) {
        column.setCaption(I18nProperties.getPrefixCaption(EventParticipantIndexDto.I18N_PREFIX,
                column.getId().toString(), column.getCaption()));
    }

    addItemClickListener(e -> {
        if (e.getColumn() != null && CASE_ID.equals(e.getColumn().getId())) {
            if (e.getItem().getCaseUuid() != null) {
                ControllerProvider.getCaseController().navigateToCase(e.getItem().getCaseUuid());
            } else {
                EventDto event = FacadeProvider.getEventFacade().getEventByUuid(e.getItem().getEventUuid());
                ControllerProvider.getCaseController().create(e.getItem().getPersonUuid(), event.getDisease(),
                        e.getItem().getUuid());
            }
        } else if (e.getColumn() != null
                && (EDIT_BTN_ID.equals(e.getColumn().getId()) || e.getMouseEventDetails().isDoubleClick())) {
            ControllerProvider.getEventParticipantController().editEventParticipant(e.getItem().getUuid());
        }
    });
}

From source file:de.symeda.sormas.ui.samples.SampleGrid.java

License:Open Source License

@SuppressWarnings("unchecked")
public SampleGrid() {
    super(SampleIndexDto.class);
    setSizeFull();/*from  www  . j  ava2  s.c om*/

    if (UserProvider.getCurrent().hasUserRight(UserRight.PERFORM_BULK_OPERATIONS)) {
        setSelectionMode(SelectionMode.MULTI);
    } else {
        setSelectionMode(SelectionMode.NONE);
    }

    DataProvider<SampleIndexDto, SampleCriteria> dataProvider = DataProvider
            .fromFilteringCallbacks(query -> FacadeProvider.getSampleFacade()
                    .getIndexList(UserProvider.getCurrent().getUuid(), query.getFilter().orElse(null),
                            query.getOffset(), query.getLimit(),
                            query.getSortOrders().stream()
                                    .map(sortOrder -> new SortProperty(sortOrder.getSorted(),
                                            sortOrder.getDirection() == SortDirection.ASCENDING))
                                    .collect(Collectors.toList()))
                    .stream(), query -> {
                        return (int) FacadeProvider.getSampleFacade().count(UserProvider.getCurrent().getUuid(),
                                query.getFilter().orElse(null));
                    });
    setDataProvider(dataProvider);

    Column<SampleIndexDto, String> editColumn = addColumn(entry -> VaadinIcons.EDIT.getHtml(),
            new HtmlRenderer());
    editColumn.setId(EDIT_BTN_ID);
    editColumn.setWidth(20);

    Column<SampleIndexDto, String> diseaseShortColumn = addColumn(
            sample -> DiseaseHelper.toString(sample.getDisease(), sample.getDiseaseDetails()));
    diseaseShortColumn.setId(DISEASE_SHORT);
    diseaseShortColumn.setSortProperty(SampleIndexDto.DISEASE);

    Column<SampleIndexDto, String> pathogenTestResultColumn = addColumn(sample -> {
        if (sample.getPathogenTestResult() != null) {
            return sample.getPathogenTestResult().toString();
        } else if (sample.getSpecimenCondition() == SpecimenCondition.NOT_ADEQUATE) {
            return I18nProperties.getCaption(Captions.sampleSpecimenNotAdequate);
        } else {
            return "";
        }
    });
    pathogenTestResultColumn.setId(PATHOGEN_TEST_RESULT);
    pathogenTestResultColumn.setSortProperty(SampleIndexDto.PATHOGEN_TEST_RESULT);

    setColumns(EDIT_BTN_ID, SampleIndexDto.LAB_SAMPLE_ID, SampleIndexDto.EPID_NUMBER,
            SampleIndexDto.ASSOCIATED_CASE, DISEASE_SHORT, SampleIndexDto.CASE_DISTRICT, SampleIndexDto.SHIPPED,
            SampleIndexDto.RECEIVED, SampleIndexDto.SHIPMENT_DATE, SampleIndexDto.RECEIVED_DATE,
            SampleIndexDto.LAB, SampleIndexDto.SAMPLE_MATERIAL, PATHOGEN_TEST_RESULT,
            SampleIndexDto.ADDITIONAL_TESTING_STATUS);

    ((Column<SampleIndexDto, Date>) getColumn(SampleIndexDto.SHIPMENT_DATE))
            .setRenderer(new DateRenderer(DateHelper.getLocalDateFormat()));
    ((Column<SampleIndexDto, Date>) getColumn(SampleIndexDto.RECEIVED_DATE))
            .setRenderer(new DateRenderer(DateHelper.getLocalDateFormat()));
    ((Column<SampleIndexDto, Boolean>) getColumn(SampleIndexDto.SHIPPED)).setRenderer(new BooleanRenderer());
    ((Column<SampleIndexDto, String>) getColumn(SampleIndexDto.RECEIVED)).setRenderer(new BooleanRenderer());
    ((Column<SampleIndexDto, String>) getColumn(SampleIndexDto.LAB)).setMaximumWidth(200);
    ((Column<SampleIndexDto, String>) getColumn(SampleIndexDto.ADDITIONAL_TESTING_STATUS)).setSortable(false);

    if (UserProvider.getCurrent().hasUserRole(UserRole.LAB_USER)
            || UserProvider.getCurrent().hasUserRole(UserRole.EXTERNAL_LAB_USER)) {
        removeColumn(SampleIndexDto.SHIPMENT_DATE);
    } else {
        removeColumn(SampleIndexDto.RECEIVED_DATE);
    }

    if (UserProvider.getCurrent().hasUserRole(UserRole.EXTERNAL_LAB_USER)) {
        removeColumn(SampleIndexDto.ASSOCIATED_CASE);
    }

    if (!UserProvider.getCurrent().hasUserRight(UserRight.ADDITIONAL_TEST_VIEW)) {
        removeColumn(SampleIndexDto.ADDITIONAL_TESTING_STATUS);
    }

    for (Column<?, ?> column : getColumns()) {
        column.setCaption(I18nProperties.getPrefixCaption(SampleIndexDto.I18N_PREFIX, column.getId().toString(),
                column.getCaption()));
    }

    addItemClickListener(e -> {
        if (e.getColumn() != null
                && (EDIT_BTN_ID.equals(e.getColumn().getId()) || e.getMouseEventDetails().isDoubleClick())) {
            ControllerProvider.getSampleController().navigateToData(e.getItem().getUuid());
        }
    });
}

From source file:de.symeda.sormas.ui.task.TaskGrid.java

License:Open Source License

@SuppressWarnings("unchecked")
public TaskGrid() {
    super(TaskIndexDto.class);
    setSizeFull();/*from  w w  w  .ja  va2 s. c  o  m*/

    if (UserProvider.getCurrent().hasUserRight(UserRight.PERFORM_BULK_OPERATIONS)) {
        setSelectionMode(SelectionMode.MULTI);
    } else {
        setSelectionMode(SelectionMode.NONE);
    }

    DataProvider<TaskIndexDto, TaskCriteria> dataProvider = DataProvider
            .fromFilteringCallbacks(query -> FacadeProvider.getTaskFacade()
                    .getIndexList(UserProvider.getCurrent().getUuid(), query.getFilter().orElse(null),
                            query.getOffset(), query.getLimit(),
                            query.getSortOrders().stream()
                                    .map(sortOrder -> new SortProperty(sortOrder.getSorted(),
                                            sortOrder.getDirection() == SortDirection.ASCENDING))
                                    .collect(Collectors.toList()))
                    .stream(), query -> {
                        return (int) FacadeProvider.getTaskFacade().count(UserProvider.getCurrent().getUuid(),
                                query.getFilter().orElse(null));
                    });
    setDataProvider(dataProvider);

    Column<TaskIndexDto, String> editColumn = addColumn(entry -> VaadinIcons.EDIT.getHtml(),
            new HtmlRenderer());
    editColumn.setId(EDIT_BTN_ID);
    editColumn.setWidth(20);

    setStyleGenerator(item -> {
        if (item != null && item.getTaskStatus() != null) {
            switch (item.getTaskStatus()) {
            case REMOVED:
                return CssStyles.GRID_ROW_STATUS_DISCARDED;
            case NOT_EXECUTABLE:
                return CssStyles.GRID_ROW_STATUS_NOT;
            case DONE:
                return CssStyles.GRID_ROW_STATUS_DONE;
            case PENDING:
                return CssStyles.GRID_ROW_STATUS_PENDING;
            default:
                throw new IndexOutOfBoundsException(item.getTaskStatus().toString());
            }
        }
        return null;
    });

    setColumns(EDIT_BTN_ID, TaskIndexDto.CONTEXT_REFERENCE, TaskIndexDto.TASK_TYPE, TaskIndexDto.PRIORITY,
            TaskIndexDto.SUGGESTED_START, TaskIndexDto.DUE_DATE, TaskIndexDto.ASSIGNEE_USER,
            TaskIndexDto.ASSIGNEE_REPLY, TaskIndexDto.CREATOR_USER, TaskIndexDto.CREATOR_COMMENT,
            TaskIndexDto.TASK_STATUS);

    ((Column<TaskIndexDto, Date>) getColumn(TaskIndexDto.DUE_DATE))
            .setRenderer(new DateRenderer(DateHelper.getLocalDateTimeFormat()));
    ((Column<TaskIndexDto, Date>) getColumn(TaskIndexDto.SUGGESTED_START))
            .setRenderer(new DateRenderer(DateHelper.getLocalDateTimeFormat()));
    ((Column<TaskIndexDto, String>) getColumn(TaskIndexDto.CREATOR_COMMENT))
            .setRenderer(new ShortStringRenderer(50));

    Column<TaskIndexDto, ReferenceDto> contextColumn = (Column<TaskIndexDto, ReferenceDto>) getColumn(
            TaskIndexDto.CONTEXT_REFERENCE);
    contextColumn.setRenderer(new ReferenceDtoHtmlProvider(), new HtmlRenderer());
    contextColumn.setSortable(false);

    Column<TaskIndexDto, UserReferenceDto> assigneeUserColumn = (Column<TaskIndexDto, UserReferenceDto>) getColumn(
            TaskIndexDto.ASSIGNEE_USER);
    assigneeUserColumn.setRenderer(user -> {
        String html;
        if (user != null) {
            html = ControllerProvider.getTaskController().getUserCaptionWithPendingTaskCount(user);
        } else {
            html = "";
        }
        return html;
    }, new HtmlRenderer());

    Column<TaskIndexDto, TaskPriority> priorityColumn = (Column<TaskIndexDto, TaskPriority>) getColumn(
            TaskIndexDto.PRIORITY);
    priorityColumn.setStyleGenerator(item -> {
        if (item.getPriority() != null) {
            switch (item.getPriority()) {
            case HIGH:
                return CssStyles.GRID_CELL_PRIORITY_HIGH;
            case NORMAL:
                return CssStyles.GRID_CELL_PRIORITY_NORMAL;
            case LOW:
                return CssStyles.GRID_CELL_PRIORITY_LOW;
            default:
                throw new IndexOutOfBoundsException(item.getPriority().toString());
            }
        }
        return null;
    });

    Column<TaskIndexDto, Date> dueDateColumn = (Column<TaskIndexDto, Date>) getColumn(TaskIndexDto.DUE_DATE);
    dueDateColumn.setStyleGenerator(item -> {
        Date dueDate = item.getDueDate();
        if (dueDate != null && dueDate.before(new Date())) {
            return CssStyles.GRID_CELL_WARNING;
        }
        return null;
    });

    for (Column<?, ?> column : getColumns()) {
        column.setCaption(I18nProperties.getPrefixCaption(TaskIndexDto.I18N_PREFIX, column.getId().toString(),
                column.getCaption()));
    }

    addItemClickListener(this);
}