Project

General

Profile

Download (7.26 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.ArrayList;
12
import java.util.Arrays;
13
import java.util.Collection;
14
import java.util.List;
15

    
16
import org.springframework.security.core.GrantedAuthority;
17

    
18
import com.vaadin.data.Item;
19
import com.vaadin.data.util.BeanContainer;
20
import com.vaadin.data.util.GeneratedPropertyContainer;
21
import com.vaadin.data.util.PropertyValueGenerator;
22
import com.vaadin.navigator.View;
23
import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent;
24
import com.vaadin.server.Page;
25
import com.vaadin.spring.annotation.SpringView;
26
import com.vaadin.ui.CssLayout;
27
import com.vaadin.ui.HorizontalLayout;
28
import com.vaadin.ui.Label;
29
import com.vaadin.ui.ListSelect;
30
import com.vaadin.ui.Notification;
31
import com.vaadin.ui.TextField;
32

    
33
import eu.etaxonomy.cdm.api.service.pager.Pager;
34
import eu.etaxonomy.cdm.model.name.RegistrationStatus;
35
import eu.etaxonomy.cdm.vaadin.component.TextFieldNFix;
36
import eu.etaxonomy.cdm.vaadin.component.registration.RegistrationItem;
37
import eu.etaxonomy.cdm.vaadin.event.UpdateResultsEvent;
38
import eu.etaxonomy.cdm.vaadin.security.AccessRestrictedView;
39
import eu.etaxonomy.cdm.vaadin.security.UserHelper;
40
import eu.etaxonomy.cdm.vaadin.view.AbstractPageView;
41

    
42
/**
43
 * @author a.kohlbecker
44
 * @since Mar 2, 2017
45
 *
46
 */
47
@SpringView(name=ListViewBean.NAME)
48
public class ListViewBean extends AbstractPageView<ListPresenter> implements ListView, View, AccessRestrictedView {
49

    
50

    
51
    private static final long serialVersionUID = 3543300933072824713L;
52

    
53
    public static final String NAME = "list";
54

    
55
    Mode viewMode = Mode.all;
56

    
57
    private CssLayout listContainer;
58

    
59
    private HorizontalLayout toolBar;
60

    
61
    private Label filterInstructionLabel = new Label("Filter the registrations by");
62

    
63
    private ListSelect statusFilter = null;
64

    
65
    private ListSelect submitterFilter = null; // must be null, the presenter relies on this
66

    
67
    private TextField identifierFilter = new TextFieldNFix("Identifier");
68

    
69
    private TextField taxonNameFilter = new TextFieldNFix("Name");
70

    
71
    private TextField referenceFilter = new TextFieldNFix("Publication");
72

    
73
    public ListViewBean() {
74
        super();
75
    }
76

    
77
    @Override
78
    protected void initContent() {
79

    
80
        getLayout().setId(NAME);
81
        toolBar = new HorizontalLayout();
82

    
83
        toolBar.addComponent(filterInstructionLabel);
84

    
85
        if(UserHelper.fromSession().userIsRegistrationCurator() || UserHelper.fromSession().userIsAdmin()){
86

    
87
            submitterFilter = new ListSelect("Submitter");
88
            submitterFilter.setRows(1);
89
            submitterFilter.addValueChangeListener(e -> updateResults());
90
            toolBar.addComponent(submitterFilter);
91
        }
92

    
93
        if(viewMode.equals(Mode.all)){
94
            statusFilter = new ListSelect("Status", Arrays.asList(RegistrationStatus.values()));
95
            statusFilter.setNullSelectionAllowed(true);
96
            statusFilter.setRows(1);
97
            statusFilter.addValueChangeListener(e -> updateResults());
98
            toolBar.addComponent(statusFilter);
99
        }
100

    
101
        toolBar.addComponents(identifierFilter, taxonNameFilter);
102
        identifierFilter.addValueChangeListener(e -> updateResults());
103
        taxonNameFilter.addValueChangeListener(e -> updateResults());
104

    
105
        toolBar.setSpacing(true);
106
        addContentComponent(toolBar, null);
107

    
108
        listContainer = new CssLayout();
109
        listContainer.setId("registration-list");
110
        listContainer.setWidth(100, Unit.PERCENTAGE);
111
        addContentComponent(listContainer, 1f);
112

    
113
    }
114

    
115
    /**
116
     * @return
117
     */
118
    private void updateResults() {
119
        eventBus.publishEvent(new UpdateResultsEvent(this));
120
    }
121

    
122
    @Override
123
    protected String getHeaderText() {
124
        return "Registrations";
125
    }
126

    
127
    @Override
128
    protected String getSubHeaderText() {
129
        return "This is the list of all your registrations in progress.";
130
    }
131

    
132

    
133
    /**
134
     * {@inheritDoc}
135
     */
136
    @Override
137
    public void enter(ViewChangeEvent event) {
138
        getPresenter().onViewEnter();
139
    }
140

    
141
    @Override
142
    public void populate(Pager<RegistrationDTO> regDtoPager) {
143

    
144
        ArrayList<RegistrationDTO> regDtos = new ArrayList<RegistrationDTO>(regDtoPager.getRecords());
145

    
146
        populateList(regDtos);
147
    }
148

    
149
    public void populateList(Collection<RegistrationDTO> registrations) {
150

    
151
        listContainer.removeAllComponents();
152
        boolean isCurator = UserHelper.fromSession().userIsRegistrationCurator() || UserHelper.fromSession().userIsAdmin();
153
        for(RegistrationDTO regDto : registrations) {
154
            RegistrationItem item = new RegistrationItem(regDto, this);
155
            item.getSubmitterLabel().setVisible(isCurator);
156
            item.setWidth(100, Unit.PERCENTAGE);
157
            listContainer.addComponent(item);
158
        }
159
    }
160

    
161
    @Override
162
    public void openDetailsPopup(String caption, List<String> messages){
163
        StringBuffer sb = new StringBuffer();
164
        sb.append("<div class=\"details-popup-content\">");
165
        messages.forEach(s -> sb.append(s).append("</br>"));
166
        sb.append("</div>");
167
        new Notification(caption, sb.toString(), Notification.Type.HUMANIZED_MESSAGE, true).show(Page.getCurrent());
168
    }
169

    
170
    /**
171
     * @param registrationItems
172
     * @return
173
     */
174
    @Deprecated
175
    private GeneratedPropertyContainer buildGeneratedProperties(
176
            BeanContainer<String, RegistrationDTO> registrationItems) {
177
        GeneratedPropertyContainer gpContainer = new GeneratedPropertyContainer(registrationItems);
178

    
179
        gpContainer.addGeneratedProperty("operation", new PropertyValueGenerator<String>() {
180

    
181
            @Override
182
            public String getValue(Item item, Object itemId, Object propertyId) {
183
                return "Open";
184
            }
185

    
186
            @Override
187
            public Class<String> getType() {
188
                return String.class;
189
            }
190
          });
191

    
192
        return gpContainer;
193
    }
194

    
195
    /**
196
     * {@inheritDoc}
197
     */
198
    @Override
199
    public boolean allowAnonymousAccess() {
200
        return false;
201
    }
202

    
203
    /**
204
     * {@inheritDoc}
205
     */
206
    @Override
207
    public Collection<Collection<GrantedAuthority>> allowedGrantedAuthorities() {
208
        return null;
209
    }
210

    
211
    /**
212
     * @return the identifierFilter
213
     */
214
    @Override
215
    public TextField getIdentifierFilter() {
216
        return identifierFilter;
217
    }
218

    
219
    /**
220
     * @return the taxonNameFilter
221
     */
222
    @Override
223
    public TextField getTaxonNameFilter() {
224
        return taxonNameFilter;
225
    }
226

    
227
    /**
228
     * @return the referenceFilter
229
     */
230
    @Override
231
    public TextField getReferenceFilter() {
232
        return referenceFilter;
233
    }
234

    
235
    /**
236
     * @return the statusFilter
237
     */
238
    @Override
239
    public ListSelect getStatusFilter() {
240
        return statusFilter;
241
    }
242

    
243
    /**
244
     * @return the submitterFilter
245
     */
246
    @Override
247
    public ListSelect getSubmitterFilter() {
248
        return submitterFilter;
249
    }
250

    
251
    /**
252
     * {@inheritDoc}
253
     */
254
    @Override
255
    public void setViewMode(Mode mode) {
256
        viewMode = mode;
257
    }
258

    
259

    
260
    @Override
261
    public Mode getViewMode() {
262
        return viewMode;
263
    }
264

    
265

    
266

    
267

    
268

    
269

    
270

    
271
}
(4-4/19)