Project

General

Profile

Download (4.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.name;
10

    
11
import java.util.List;
12
import java.util.Set;
13

    
14
import org.apache.log4j.Logger;
15

    
16
import eu.etaxonomy.cdm.api.service.INameService;
17
import eu.etaxonomy.cdm.model.common.TermType;
18
import eu.etaxonomy.cdm.model.name.Rank;
19
import eu.etaxonomy.cdm.model.name.TaxonName;
20
import eu.etaxonomy.cdm.model.name.TaxonNameFactory;
21
import eu.etaxonomy.cdm.model.reference.Reference;
22
import eu.etaxonomy.cdm.service.CdmFilterablePagingProvider;
23
import eu.etaxonomy.cdm.vaadin.component.CdmBeanItemContainerFactory;
24
import eu.etaxonomy.cdm.vaadin.event.ToOneRelatedEntityButtonUpdater;
25
import eu.etaxonomy.cdm.vaadin.security.UserHelper;
26
import eu.etaxonomy.cdm.vaadin.util.CdmTitleCacheCaptionGenerator;
27
import eu.etaxonomy.vaadin.mvp.AbstractCdmEditorPresenter;
28

    
29
/**
30
 * @author a.kohlbecker
31
 * @since May 22, 2017
32
 *
33
 */
34
public class TaxonNameEditorPresenter extends AbstractCdmEditorPresenter<TaxonName, TaxonNamePopupEditorView> {
35

    
36
    private static final long serialVersionUID = -3538980627079389221L;
37

    
38
    private static final Logger logger = Logger.getLogger(TaxonNameEditorPresenter.class);
39

    
40
    /**
41
     * {@inheritDoc}
42
     */
43
    @Override
44
    public void handleViewEntered() {
45

    
46
        super.handleViewEntered();
47

    
48
        CdmBeanItemContainerFactory selectFieldFactory = new CdmBeanItemContainerFactory(getRepo());
49
        getView().getRankSelect().setContainerDataSource(selectFieldFactory.buildBeanItemContainer(TermType.Rank));
50
        getView().getRankSelect().setItemCaptionPropertyId("label");
51

    
52
        getView().getNomReferenceCombobox().getSelect().setCaptionGenerator(new CdmTitleCacheCaptionGenerator<Reference>());
53
        CdmFilterablePagingProvider<Reference> referencePagingProvider = new CdmFilterablePagingProvider<Reference>(getRepo().getReferenceService(), TaxonNameEditorPresenter.this);
54
        getView().getNomReferenceCombobox().loadFrom(referencePagingProvider, referencePagingProvider, referencePagingProvider.getPageSize());
55
        getView().getNomReferenceCombobox().getSelect().addValueChangeListener(new ToOneRelatedEntityButtonUpdater<Reference>(getView().getNomReferenceCombobox()));
56

    
57

    
58
        getView().getBasionymCombobox().setCaptionGenerator(new CdmTitleCacheCaptionGenerator<TaxonName>());
59
        CdmFilterablePagingProvider<TaxonName> namePagingProvider = new CdmFilterablePagingProvider<TaxonName>(getRepo().getNameService(), TaxonNameEditorPresenter.this);
60
        getView().getBasionymCombobox().setPagingProviders(namePagingProvider, namePagingProvider, namePagingProvider.getPageSize());
61

    
62
    }
63

    
64
    /**
65
     * {@inheritDoc}
66
     */
67
    @Override
68
    protected TaxonName loadCdmEntityById(Integer identifier) {
69

    
70
        TaxonName bean;
71
        if(identifier != null){
72
            bean = getRepo().getNameService().find(identifier);
73
        } else {
74
            bean = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
75
        }
76
        return bean;
77
    }
78

    
79
    /**
80
     * {@inheritDoc}
81
     */
82
    @Override
83
    protected void guaranteePerEntityCRUDPermissions(Integer identifier) {
84
        if(crud != null){
85
            newAuthorityCreated = UserHelper.fromSession().createAuthorityForCurrentUser(TaxonName.class, identifier, crud, null);
86
        }
87

    
88
    }
89

    
90
    /**
91
     * {@inheritDoc}
92
     */
93
    @Override
94
    protected void guaranteePerEntityCRUDPermissions(TaxonName bean) {
95
        if(crud != null){
96
            newAuthorityCreated = UserHelper.fromSession().createAuthorityForCurrentUser(bean, crud, null);
97
        }
98
    }
99

    
100
    @Override
101
    protected TaxonName handleTransientProperties(TaxonName bean) {
102
        logger.trace(this._toString() + ".onEditorSaveEvent - handling transient properties");
103
        List<TaxonName> newBasionymNames = getView().getBasionymCombobox().getValueFromNestedFields();
104
        Set<TaxonName> oldBasionyms = bean.getBasionyms();
105
        boolean updateBasionyms = false;
106
        for(TaxonName newB : newBasionymNames){
107

    
108
            updateBasionyms = updateBasionyms || !oldBasionyms.contains(newB);
109
        }
110
        for(TaxonName oldB : oldBasionyms){
111
            updateBasionyms = updateBasionyms || !newBasionymNames.contains(oldB);
112
        }
113
        if(updateBasionyms){
114
            bean.removeBasionyms();
115
            for(TaxonName basionymName :newBasionymNames){
116
                if(basionymName != null){
117
                    if(basionymName .getUuid() != null){
118
                        // reload
119
                        basionymName = getRepo().getNameService().load(basionymName.getUuid());
120
                    }
121
                    bean.addBasionym(basionymName);
122
                }
123
            }
124
        }
125
        return bean;
126
    }
127

    
128
    /**
129
     * {@inheritDoc}
130
     */
131
    @Override
132
    protected INameService getService() {
133
        return getRepo().getNameService();
134
    }
135

    
136

    
137

    
138
}
(5-5/8)