Project

General

Profile

Download (7.31 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.occurrence;
10

    
11
import java.util.Arrays;
12
import java.util.List;
13
import java.util.UUID;
14

    
15
import org.springframework.context.annotation.Scope;
16
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
17

    
18
import com.vaadin.spring.annotation.SpringComponent;
19

    
20
import eu.etaxonomy.cdm.api.service.IService;
21
import eu.etaxonomy.cdm.model.agent.AgentBase;
22
import eu.etaxonomy.cdm.model.agent.Institution;
23
import eu.etaxonomy.cdm.model.occurrence.Collection;
24
import eu.etaxonomy.cdm.service.CdmFilterablePagingProvider;
25
import eu.etaxonomy.cdm.service.UserHelperAccess;
26
import eu.etaxonomy.cdm.vaadin.event.CollectionEditorAction;
27
import eu.etaxonomy.cdm.vaadin.event.EditorActionTypeFilter;
28
import eu.etaxonomy.cdm.vaadin.event.EntityChangeEvent;
29
import eu.etaxonomy.cdm.vaadin.event.InstitutionEditorAction;
30
import eu.etaxonomy.cdm.vaadin.event.ToOneRelatedEntityReloader;
31
import eu.etaxonomy.cdm.vaadin.view.common.InstitutionPopupEditor;
32
import eu.etaxonomy.vaadin.mvp.AbstractCdmEditorPresenter;
33
import eu.etaxonomy.vaadin.mvp.BoundField;
34
import eu.etaxonomy.vaadin.ui.view.PopupView;
35

    
36
/**
37
 * @author a.kohlbecker
38
 * @since Dec 21, 2017
39
 *
40
 */
41
@SpringComponent
42
@Scope("prototype")
43
public class CollectionEditorPresenter extends AbstractCdmEditorPresenter<Collection, CollectionPopupEditorView> {
44

    
45
    private static final long serialVersionUID = -1996365248431425021L;
46

    
47

    
48
    /**
49
     * {@inheritDoc}
50
     */
51
    @Override
52
    protected Collection loadCdmEntity(UUID identifier) {
53

    
54
        List<String> initStrategy = Arrays.asList(new String []{
55

    
56
                "$",
57
                "institute.$",
58
                "superCollection.$",
59
                }
60
        );
61

    
62
        Collection bean;
63
        if(identifier != null){
64
            bean = getRepo().getCollectionService().load(identifier, initStrategy);
65
        } else {
66
            bean = Collection.NewInstance();
67
        }
68
        return bean;
69
    }
70

    
71
    /**
72
     * {@inheritDoc}
73
     */
74
    @Override
75
    protected void guaranteePerEntityCRUDPermissions(UUID identifier) {
76
        if(crud != null){
77
            newAuthorityCreated = UserHelperAccess.userHelper().createAuthorityForCurrentUser(Collection.class, identifier, crud, null);
78
        }
79

    
80
    }
81

    
82
    /**
83
     * {@inheritDoc}
84
     */
85
    @Override
86
    protected void guaranteePerEntityCRUDPermissions(Collection bean) {
87
        if(crud != null){
88
            newAuthorityCreated = UserHelperAccess.userHelper().createAuthorityForCurrentUser(bean, crud, null);
89
        }
90

    
91
    }
92

    
93
    /**
94
     * {@inheritDoc}
95
     */
96
    @Override
97
    protected IService<Collection> getService() {
98
        // TODO Auto-generated method stub
99
        return null;
100
    }
101

    
102
    /**
103
     * {@inheritDoc}
104
     */
105
    @Override
106
    public void handleViewEntered() {
107
        super.handleViewEntered();
108

    
109
        CdmFilterablePagingProvider<Collection, Collection> collectionPagingProvider = new CdmFilterablePagingProvider<Collection, Collection>(getRepo().getCollectionService());
110
        getView().getSuperCollectionCombobox().getSelect().loadFrom(collectionPagingProvider, collectionPagingProvider, collectionPagingProvider.getPageSize());
111
        getView().getSuperCollectionCombobox().getSelect().addValueChangeListener(new ToOneRelatedEntityReloader<Collection>(getView().getSuperCollectionCombobox(), this));
112

    
113
        CdmFilterablePagingProvider<AgentBase, Institution> institutionPagingProvider = new CdmFilterablePagingProvider<AgentBase, Institution>(getRepo().getAgentService(), Institution.class);
114
        getView().getInstitutionCombobox().getSelect().loadFrom(institutionPagingProvider, institutionPagingProvider, institutionPagingProvider.getPageSize());
115
        getView().getInstitutionCombobox().getSelect().addValueChangeListener(new ToOneRelatedEntityReloader<Institution>(getView().getInstitutionCombobox(), this));
116
    }
117

    
118
    @EventBusListenerMethod(filter = EditorActionTypeFilter.Add.class)
119
    public void onCollectionEditorActionAdd(CollectionEditorAction event) {
120

    
121
        if(!checkFromOwnView(event)){
122
            return;
123
        }
124

    
125
        CollectionPopupEditor collectionPopuEditor = openPopupEditor(CollectionPopupEditor.class, event);
126

    
127
        collectionPopuEditor.grantToCurrentUser(this.crud);
128
        collectionPopuEditor.withDeleteButton(true);
129
        collectionPopuEditor.loadInEditor(null);
130
    }
131

    
132
    @EventBusListenerMethod(filter = EditorActionTypeFilter.Edit.class)
133
    public void onCollectionEditorActionEdit(CollectionEditorAction event) {
134

    
135
        if(!checkFromOwnView(event)){
136
            return;
137
        }
138

    
139
        CollectionPopupEditor collectionPopuEditor = openPopupEditor(CollectionPopupEditor.class, event);
140

    
141
        collectionPopuEditor.grantToCurrentUser(this.crud);
142
        collectionPopuEditor.withDeleteButton(true);
143
        collectionPopuEditor.loadInEditor(event.getEntityUuid());
144
    }
145

    
146
    @EventBusListenerMethod(filter = EditorActionTypeFilter.Edit.class)
147
    public void onInstitutionEditorActionEdit(InstitutionEditorAction event) {
148

    
149
        if(!checkFromOwnView(event)){
150
            return;
151
        }
152

    
153
        InstitutionPopupEditor institutionPopuEditor = openPopupEditor(InstitutionPopupEditor.class, event);
154

    
155
        institutionPopuEditor.grantToCurrentUser(this.crud);
156
        institutionPopuEditor.withDeleteButton(true);
157
        institutionPopuEditor.loadInEditor(event.getEntityUuid());
158
    }
159

    
160
    @EventBusListenerMethod(filter = EditorActionTypeFilter.Add.class)
161
    public void onInstitutionEditorActionAdd(InstitutionEditorAction event) {
162

    
163
        if(!checkFromOwnView(event)){
164
            return;
165
        }
166

    
167
        InstitutionPopupEditor institutionPopuEditor = openPopupEditor(InstitutionPopupEditor.class, event);
168

    
169
        institutionPopuEditor.grantToCurrentUser(this.crud);
170
        institutionPopuEditor.withDeleteButton(true);
171
        institutionPopuEditor.loadInEditor(null);
172
    }
173

    
174
    @EventBusListenerMethod()
175
    public void onEntityChangeEvent(EntityChangeEvent<?> event){
176

    
177
        BoundField boundTargetField = boundTargetField((PopupView) event.getSourceView());
178

    
179
        if(boundTargetField != null){
180
            if(boundTargetField.matchesPropertyIdPath("superCollection")){
181
                if(event.isCreateOrModifiedType()){
182

    
183
                    Collection newCollection = (Collection) event.getEntity();
184
                    getCache().load(newCollection);
185
                    if(event.isCreatedType()){
186
                        getView().getSuperCollectionCombobox().setValue(newCollection);
187
                    } else {
188
                        getView().getSuperCollectionCombobox().reload();
189
                    }
190
                }
191

    
192
            } else if(boundTargetField.matchesPropertyIdPath("institution")){
193
                if(event.isCreateOrModifiedType()){
194

    
195
                    Institution newInstitution = (Institution) event.getEntity();
196
                    getCache().load(newInstitution);
197
                    if(event.isCreatedType()){
198
                        getView().getInstitutionCombobox().setValue(newInstitution);
199
                    } else {
200
                        getView().getInstitutionCombobox().reload();
201
                    }
202
                }
203

    
204
            }
205
        }
206
    }
207

    
208

    
209

    
210
}
(1-1/3)