Project

General

Profile

Download (5.96 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2017 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9
package eu.etaxonomy.cdm.vaadin.view.registration;
10

    
11
import java.util.EnumSet;
12
import java.util.Set;
13
import java.util.UUID;
14

    
15
import org.apache.commons.lang3.StringUtils;
16
import org.springframework.beans.factory.annotation.Autowired;
17
import org.springframework.security.core.Authentication;
18
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
19

    
20
import com.vaadin.spring.annotation.SpringComponent;
21
import com.vaadin.spring.annotation.ViewScope;
22
import com.vaadin.ui.TextField;
23

    
24
import eu.etaxonomy.cdm.api.service.pager.Pager;
25
import eu.etaxonomy.cdm.model.common.User;
26
import eu.etaxonomy.cdm.model.name.RegistrationStatus;
27
import eu.etaxonomy.cdm.model.reference.Reference;
28
import eu.etaxonomy.cdm.service.IRegistrationWorkingSetService;
29
import eu.etaxonomy.cdm.vaadin.component.CdmBeanItemContainerFactory;
30
import eu.etaxonomy.cdm.vaadin.component.registration.RegistrationItem;
31
import eu.etaxonomy.cdm.vaadin.event.EntityChangeEvent;
32
import eu.etaxonomy.cdm.vaadin.event.ShowDetailsEvent;
33
import eu.etaxonomy.cdm.vaadin.event.UpdateResultsEvent;
34
import eu.etaxonomy.vaadin.mvp.AbstractPresenter;
35

    
36
/**
37
 *
38
 * @author a.kohlbecker
39
 * @since Mar 3, 2017
40
 *
41
 */
42
@SpringComponent
43
@ViewScope
44
public class ListPresenter extends AbstractPresenter<ListView> {
45

    
46
    private static final EnumSet<RegistrationStatus> inProgressStatus = EnumSet.of(
47
            RegistrationStatus.PREPARATION,
48
            RegistrationStatus.CURATION,
49
            RegistrationStatus.READY
50
            );
51

    
52
    private static final long serialVersionUID = 5419947244621450665L;
53

    
54
    @Autowired
55
    private IRegistrationWorkingSetService workingSetService;
56

    
57
    /**
58
     * @return the workingSetService
59
     */
60
    public IRegistrationWorkingSetService getWorkingSetService() {
61
        return workingSetService;
62
    }
63

    
64

    
65
    @Override
66
    public void handleViewEntered() {
67

    
68
        if(getNavigationManager().getCurrentViewParameters().get(0).equals(ListView.Mode.inProgress.name())){
69
            getView().setViewMode(ListViewBean.Mode.inProgress);
70
            getView().getStatusFilter().setVisible(false);
71
        } else {
72
            getView().setViewMode(ListViewBean.Mode.all);
73
        }
74

    
75
        CdmBeanItemContainerFactory selectFieldFactory = new CdmBeanItemContainerFactory(getRepo());
76

    
77
        if(getView().getSubmitterFilter() != null){
78
            getView().getSubmitterFilter().setContainerDataSource(selectFieldFactory.buildBeanItemContainer(User.class));
79
            getView().getSubmitterFilter().setItemCaptionPropertyId("username");
80
        }
81

    
82
        getView().populate(pageRegistrations(null, null));
83
    }
84

    
85
    /**
86
     * FIXME write test !!!!!!!!!!!!!!!!!
87
     *
88
     * @return
89
     */
90
    private Pager<RegistrationDTO> pageRegistrations(TextField textFieldOverride, String alternativeText) {
91

    
92
        // list all if the authenticated user is having the role CURATION of if it is an admin
93
        Authentication authentication = currentSecurityContext().getAuthentication();
94

    
95
        // prepare the filters
96
        String identifierFilter;
97
        if(textFieldOverride != null && textFieldOverride == getView().getIdentifierFilter()){
98
            identifierFilter = alternativeText;
99
        } else {
100
            identifierFilter = getView().getIdentifierFilter().getValue();
101
        }
102
        String nameFilter;
103
        if(textFieldOverride != null && textFieldOverride == getView().getTaxonNameFilter()){
104
            nameFilter = alternativeText;
105
        } else {
106
            nameFilter = getView().getTaxonNameFilter().getValue();
107
        }
108
        User submitter = null;
109
        if(getView().getSubmitterFilter() != null){
110
            Object o = getView().getSubmitterFilter().getValue();
111
            if(o != null){
112
                submitter = (User)o;
113
            }
114
        } else {
115
            submitter = (User) authentication.getPrincipal();
116
        }
117
        EnumSet<RegistrationStatus> includeStatus = inProgressStatus;
118
        if(getView().getViewMode().equals(ListView.Mode.all)){
119
            includeStatus = null;
120
            Object o = getView().getStatusFilter().getValue();
121
            if(o != null){
122
                includeStatus = EnumSet.of((RegistrationStatus)o);
123
            }
124
        }
125

    
126
        Pager<RegistrationDTO> dtoPager = getWorkingSetService().pageDTOs(
127
                submitter,
128
                includeStatus,
129
                StringUtils.trimToNull(identifierFilter),
130
                StringUtils.trimToNull(nameFilter),
131
                null,
132
                null);
133
        return dtoPager;
134
    }
135

    
136
    @EventBusListenerMethod
137
    public void onShowDetailsEvent(ShowDetailsEvent<RegistrationDTO, UUID> event) {
138

    
139
        // FIXME check from own view!!!
140
        if(getView() == null){
141
            return;
142
        }
143

    
144
        UUID registrationUuid = event.getIdentifier();
145

    
146
        RegistrationDTO regDto = getWorkingSetService().loadDtoByUuid(registrationUuid);
147
        if(event.getProperty().equals("messages")){
148

    
149
            getView().openDetailsPopup("Messages", regDto.getValidationProblems());
150

    
151
        } else if(event.getProperty().equals("blockedBy")){
152

    
153
            Set<RegistrationDTO> blockingRegs = getWorkingSetService().loadBlockingRegistrations(registrationUuid);
154
            RegistrationItem regItem = getView().getRegistrationItem(registrationUuid);
155
            regItem.showBlockingRegistrations(blockingRegs);
156
        }
157

    
158
    }
159

    
160
    @EventBusListenerMethod
161
    public void onEntityChangeEvent(EntityChangeEvent event){
162
        if(event.getEntityType().isAssignableFrom(Reference.class)){
163
            // TODO update component showing the according reference, is there a Vaadin event supporting this?
164
        }
165
    }
166

    
167
    @EventBusListenerMethod
168
    public void onUpdateResultsEvent(UpdateResultsEvent event){
169
        getView().populate(pageRegistrations(event.getField(), event.getNewText()));
170
    }
171

    
172
}
(2-2/23)