Project

General

Profile

« Previous | Next » 

Revision 65c80174

Added by Andreas Kohlbecker over 6 years ago

fix #7130 implementing registration list filters

View differences:

src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/ListPresenter.java
8 8
*/
9 9
package eu.etaxonomy.cdm.vaadin.view.registration;
10 10

  
11
import java.util.Collection;
12 11
import java.util.EnumSet;
13 12

  
13
import org.apache.commons.lang3.StringUtils;
14 14
import org.springframework.beans.factory.annotation.Autowired;
15 15
import org.springframework.context.event.EventListener;
16 16
import org.springframework.security.core.Authentication;
......
18 18
import com.vaadin.spring.annotation.SpringComponent;
19 19
import com.vaadin.spring.annotation.ViewScope;
20 20

  
21
import eu.etaxonomy.cdm.api.service.pager.Pager;
21 22
import eu.etaxonomy.cdm.model.common.User;
22 23
import eu.etaxonomy.cdm.model.name.RegistrationStatus;
23 24
import eu.etaxonomy.cdm.model.reference.Reference;
24 25
import eu.etaxonomy.cdm.service.IRegistrationWorkingSetService;
26
import eu.etaxonomy.cdm.vaadin.component.CdmBeanItemContainerFactory;
25 27
import eu.etaxonomy.cdm.vaadin.event.EntityChangeEvent;
26 28
import eu.etaxonomy.cdm.vaadin.event.ShowDetailsEvent;
27
import eu.etaxonomy.cdm.vaadin.security.UserHelper;
29
import eu.etaxonomy.cdm.vaadin.event.UpdateResultsEvent;
28 30
import eu.etaxonomy.vaadin.mvp.AbstractPresenter;
29 31

  
30 32
/**
......
57 59

  
58 60
    @Override
59 61
    public void handleViewEntered() {
60
        getView().populate(listRegistrations());
62

  
63
        if(getNavigationManager().getCurrentViewParameters().get(0).equals(ListView.Mode.inProgress.name())){
64
            getView().setViewMode(ListViewBean.Mode.inProgress);
65
            getView().getStatusFilter().setVisible(false);
66
        } else {
67
            getView().setViewMode(ListViewBean.Mode.all);
68
        }
69

  
70
        CdmBeanItemContainerFactory selectFieldFactory = new CdmBeanItemContainerFactory(getRepo());
71

  
72
        getView().getSubmitterFilter().setContainerDataSource(selectFieldFactory.buildBeanItemContainer(User.class));
73
        getView().getSubmitterFilter().setItemCaptionPropertyId("username");
74

  
75
        getView().populate(pageRegistrations());
61 76
    }
62 77

  
63 78
    /**
......
65 80
     *
66 81
     * @return
67 82
     */
68
    private Collection<RegistrationDTO> listRegistrations() {
83
    private Pager<RegistrationDTO> pageRegistrations() {
69 84

  
70 85
        // list all if the authenticated user is having the role CURATION of if it is an admin
71 86
        Authentication authentication = currentSecurityContext().getAuthentication();
87

  
88
        // prepare the filters
89
        String identifierFilter = getView().getIdentifierFilter().getValue();
90
        String nameFilter = getView().getTaxonNameFilter().getValue();
72 91
        User submitter = null;
73
        if(!(UserHelper.fromSession().userIsRegistrationCurator() || UserHelper.fromSession().userIsAdmin())) {
92
        if(getView().getSubmitterFilter() != null){
93
            Object o = getView().getSubmitterFilter().getValue();
94
            if(o != null){
95
                submitter = (User)o;
96
            }
97
        } else {
74 98
            submitter = (User) authentication.getPrincipal();
75 99
        }
76

  
77
        // determine whether to show all or only registrations in progress
78
        EnumSet<RegistrationStatus> includeStatus = null;
79
        try {
80
            if(getNavigationManager().getCurrentViewParameters().get(0).equals(ListViewBean.OPTION_IN_PROGRESS)){
81
                includeStatus = inProgressStatus;
100
        EnumSet<RegistrationStatus> includeStatus = inProgressStatus;
101
        if(getView().getViewMode().equals(ListView.Mode.all)){
102
            includeStatus = null;
103
            Object o = getView().getStatusFilter().getValue();
104
            if(o != null){
105
                includeStatus = EnumSet.of((RegistrationStatus)o);
82 106
            }
83
        } catch (IndexOutOfBoundsException e){
84
            // no parameter provided:  IGNORE
85 107
        }
86 108

  
87
        Collection<RegistrationDTO> dtos = getWorkingSetService().listDTOs(submitter, includeStatus);
88
        return dtos;
109
        Pager<RegistrationDTO> dtoPager = getWorkingSetService().pageDTOs(
110
                submitter,
111
                includeStatus,
112
                StringUtils.trimToNull(identifierFilter),
113
                StringUtils.trimToNull(nameFilter),
114
                null,
115
                null);
116
        return dtoPager;
89 117
    }
90 118

  
91 119
    @EventListener(classes=ShowDetailsEvent.class, condition = "#event.type == T(eu.etaxonomy.cdm.vaadin.view.registration.RegistrationDTO)")
......
103 131
        if(event.getEntityType().isAssignableFrom(Reference.class)){
104 132
            // TODO update component showing the according reference, is there a Vaadin event supporting this?
105 133
        }
134
    }
106 135

  
136
    @EventListener
137
    public void onUpdateResultsEvent(UpdateResultsEvent event){
138
        getView().populate(pageRegistrations());
107 139
    }
108 140

  
109 141
}

Also available in: Unified diff