Project

General

Profile

Download (4.38 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.List;
13

    
14
import org.apache.log4j.Logger;
15
import org.springframework.beans.factory.annotation.Autowired;
16
import org.springframework.context.event.EventListener;
17

    
18
import com.vaadin.server.SystemError;
19
import com.vaadin.spring.annotation.SpringComponent;
20
import com.vaadin.spring.annotation.ViewScope;
21

    
22
import eu.etaxonomy.cdm.mock.Registration;
23
import eu.etaxonomy.cdm.mock.RegistrationService;
24
import eu.etaxonomy.cdm.model.name.Rank;
25
import eu.etaxonomy.cdm.model.name.TaxonNameFactory;
26
import eu.etaxonomy.cdm.vaadin.event.ReferenceEvent;
27
import eu.etaxonomy.cdm.vaadin.event.ShowDetailsEvent;
28
import eu.etaxonomy.cdm.vaadin.event.registration.RegistrationWorkflowEvent;
29
import eu.etaxonomy.cdm.vaadin.model.registration.RegistrationWorkingSet;
30
import eu.etaxonomy.vaadin.mvp.AbstractPresenter;
31

    
32
/**
33
 * @author a.kohlbecker
34
 * @since Mar 3, 2017
35
 *
36
 */
37
@SpringComponent
38
@ViewScope
39
public class RegistrationWorkflowPresenter extends AbstractPresenter<RegistrationWorkflowView> {
40

    
41

    
42
    @Autowired
43
    private RegistrationService serviceMock;
44

    
45
    private RegistrationWorkingSet workingset;
46

    
47
    /**
48
     *
49
     */
50
    public RegistrationWorkflowPresenter() {
51
    }
52

    
53
    @EventListener
54
    protected void onRegistrationStartEvent(RegistrationWorkflowEvent event){
55

    
56
        if(workingset != null){
57
            Logger.getLogger(RegistrationWorkflowPresenter.class).warn("Cant start a new workflow over an existing one.");
58
            return;
59
        }
60

    
61

    
62
        if(event.isStart()) {
63
            workingset = new RegistrationWorkingSet();
64
            Registration reg = new Registration();
65
            reg.setName(TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES()));
66
            getView().setHeaderText("New " + event.getType().name().toString()+ " Registration");
67
            try {
68
                workingset.add(reg);
69
            } catch (RegistrationValidationException error) {
70
                getView().getWorkflow().setComponentError(new SystemError(error));
71
            }
72
        } else {
73
            try {
74
                workingset = serviceMock.loadWorkingSetByRegistrationID(event.getRegistrationID());
75
            } catch (RegistrationValidationException error) {
76
                getView().getWorkflow().setComponentError(new SystemError(error));
77
            }
78
            getView().setHeaderText("Registration for " + workingset.getCitation());
79
        }
80
        if(workingset != null){
81
            getView().setWorkingset(workingset);
82
            //TODO add Blocking registrations to view
83
        }
84
    }
85

    
86
//    @EventListener(condition = "#event.eventType ==T(eu.etaxonomy.cdm.vaadin.event.EventType).ADD")
87
//    public void onReferenceAddEvent(ReferenceEvent event) {
88
//        getView().openReferenceEditor(null);
89
//    }
90

    
91
    @EventListener(condition = "#event.eventType ==T(eu.etaxonomy.cdm.vaadin.event.EntityEventType).EDIT")
92
    public void onReferenceEditEvent(ReferenceEvent event) {
93
        getView().openReferenceEditor(null);
94
    }
95

    
96

    
97
    @EventListener(classes=ShowDetailsEvent.class, condition = "#event.entityType == T(eu.etaxonomy.cdm.vaadin.model.registration.RegistrationWorkingSet)")
98
    public void onShowRegistrationWorkingSetMessages(ShowDetailsEvent<?,?> event) { // WARNING don't use more specific generic type arguments
99
        List<String> messages = new ArrayList<>();
100
        for(RegistrationDTO dto : workingset.getRegistrationDTOs()){
101
            dto.getMessages().forEach(m -> messages.add(dto.getSummary() + ": " + m));
102
        }
103
        if(event.getProperty().equals("messages")){
104
            getView().openDetailsPopup("Messages", messages);
105
        }
106
    }
107

    
108
    @EventListener(classes=ShowDetailsEvent.class, condition = "#event.entityType == T(eu.etaxonomy.cdm.vaadin.presenter.registration.RegistrationDTO)")
109
    public void onShowRegistrationMessages(ShowDetailsEvent<?,?> event) { // WARNING don't use more specific generic type arguments
110
        RegistrationDTO regDto = serviceMock.loadDtoById((Integer)event.getIdentifier());
111
        if(event.getProperty().equals("messages")){
112
            getView().openDetailsPopup("Messages", regDto.getMessages());
113
        }
114
    }
115

    
116
}
(9-9/14)