Project

General

Profile

Download (5 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.io.Serializable;
12
import java.util.ArrayList;
13
import java.util.List;
14

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

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

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

    
35
/**
36
 * @author a.kohlbecker
37
 * @since Mar 3, 2017
38
 *
39
 */
40
@SpringComponent
41
@ViewScope
42
public class RegistrationWorkflowPresenter extends AbstractPresenter<RegistrationWorkflowView> implements Serializable{
43

    
44
    private static final long serialVersionUID = 1L;
45

    
46
    @Autowired
47
    private RegistrationService serviceMock;
48

    
49
    private RegistrationWorkingSet workingset;
50

    
51
    /**
52
     *
53
     */
54
    public RegistrationWorkflowPresenter() {
55
    }
56

    
57
    @EventListener
58
    protected void onRegistrationStartEvent(RegistrationWorkflowEvent event){
59

    
60
        boolean HACK = true;
61
        if(workingset != null && !HACK){
62
            Logger.getLogger(RegistrationWorkflowPresenter.class).warn("Can't start a new workflow over an existing one.");
63
            return;
64
        }
65

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

    
90
    @EventListener(condition = "#event.eventType ==T(eu.etaxonomy.cdm.vaadin.event.EntityEventType).ADD")
91
    public void onReferenceAddEvent(ReferenceEvent event) {
92
        Reference reference = ReferenceFactory.newGeneric();
93
        ReferencePopupEditor popup = getNavigationManager().showInPopup(ReferencePopupEditor.class);
94
        popup.showInEditor(reference);
95
    }
96

    
97
    @EventListener(condition = "#event.eventType ==T(eu.etaxonomy.cdm.vaadin.event.EntityEventType).EDIT")
98
    public void onReferenceEditEvent(ReferenceEvent event) {
99
        Reference reference = getRepo().getReferenceService().find(event.getEntityId());
100
        ReferencePopupEditor popup = getNavigationManager().showInPopup(ReferencePopupEditor.class);
101
        popup.showInEditor(reference);
102
    }
103

    
104

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

    
116
    @EventListener(classes=ShowDetailsEvent.class, condition = "#event.entityType == T(eu.etaxonomy.cdm.vaadin.view.registration.RegistrationDTO)")
117
    public void onShowRegistrationMessages(ShowDetailsEvent<?,?> event) { // WARNING don't use more specific generic type arguments
118
        RegistrationDTO regDto = serviceMock.loadDtoById((Integer)event.getIdentifier());
119
        if(event.getProperty().equals("messages")){
120
            if(getView() != null){
121
                getView().openDetailsPopup("Messages", regDto.getMessages());
122
            }
123
        }
124
    }
125

    
126
}
(12-12/17)