Project

General

Profile

« Previous | Next » 

Revision 52aa37ab

Added by Andreas Kohlbecker about 5 years ago

  • ID 52aa37ab6574362cda647ba7f83c2b2521620b2c
  • Parent 3506344d

ref #8161 TaxonNameStringFilterablePagingProvider as transactional readonly prototype bean

View differences:

src/main/java/eu/etaxonomy/cdm/service/FilterableStringRepresentationPagingProvider.java
25 25
    public void clearIdCache();
26 26

  
27 27

  
28
    /**
29
     * @return
30
     */
31
    public int getPageSize();
32

  
33

  
28 34
}
src/main/java/eu/etaxonomy/cdm/service/ITaxonNameStringFilterablePagingProvider.java
1
/**
2
* Copyright (C) 2019 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.service;
10

  
11
import java.util.UUID;
12

  
13
import org.vaadin.viritin.fields.LazyComboBox.FilterableCountProvider;
14

  
15
import com.vaadin.ui.AbstractField;
16

  
17
import eu.etaxonomy.cdm.model.name.Rank;
18
import eu.etaxonomy.cdm.model.name.TaxonName;
19

  
20
/**
21
 * @author a.kohlbecker
22
 * @since Mar 4, 2019
23
 *
24
 */
25
public interface ITaxonNameStringFilterablePagingProvider extends FilterableStringRepresentationPagingProvider<UUID>, FilterableCountProvider  {
26

  
27
    /**
28
     * @param cdmEntity
29
     */
30
    public void excludeNames(TaxonName ... excludedTaxonNames);
31

  
32
    /**
33
     *
34
     */
35
    public void updateFromFields();
36

  
37
    /**
38
     *
39
     */
40
    public void unlistenAllFields();
41

  
42
    void listenToFields(AbstractField<String> genusOrUninomialField, AbstractField<String> infraGenericEpithetField, AbstractField<String> specificEpithetField, AbstractField<String> infraSpecificEpithetField);
43

  
44
    /**
45
     * @param rank
46
     */
47
    public void setRankFilter(Rank rank);
48

  
49
}
src/main/java/eu/etaxonomy/cdm/service/TaxonNameStringFilterablePagingProvider.java
16 16
import java.util.UUID;
17 17

  
18 18
import org.apache.log4j.Logger;
19
import org.vaadin.viritin.fields.LazyComboBox.FilterableCountProvider;
19
import org.springframework.beans.factory.annotation.Autowired;
20
import org.springframework.context.annotation.Scope;
21
import org.springframework.stereotype.Repository;
22
import org.springframework.transaction.annotation.Transactional;
20 23

  
21 24
import com.vaadin.data.Property.ValueChangeListener;
22 25
import com.vaadin.ui.AbstractField;
......
41 44
 * @since Jun 7, 2017
42 45
 *
43 46
 */
44
public class TaxonNameStringFilterablePagingProvider implements FilterableStringRepresentationPagingProvider<UUID>, FilterableCountProvider {
47
@Scope("prototype")
48
@Repository
49
public class TaxonNameStringFilterablePagingProvider implements ITaxonNameStringFilterablePagingProvider {
45 50

  
46 51
    private static final List<String> DEFAULT_INIT_STRATEGY = Arrays.asList("$");
47 52

  
......
49 54

  
50 55
    private int pageSize = 20;
51 56

  
57
    @Autowired
52 58
    private INameService service;
53 59

  
54 60
    private MatchMode matchMode = MatchMode.BEGINNING;
......
64 70
    private Map<String, UUID> lastPagedEntityUUIDs;
65 71

  
66 72

  
67
    public TaxonNameStringFilterablePagingProvider(INameService service) {
68
        this(service, Rank.GENUS(), null);
73
    public TaxonNameStringFilterablePagingProvider() {
74
        this(Rank.GENUS(), null);
69 75
    }
70 76

  
77
    /**
71 78
    public TaxonNameStringFilterablePagingProvider(INameService service, Rank rank) {
72 79
        this(service, rank, null);
73 80
    }
81
     */
74 82

  
75
    public TaxonNameStringFilterablePagingProvider(INameService service, Rank rank, MatchMode matchMode) {
83
    private TaxonNameStringFilterablePagingProvider(Rank rank, MatchMode matchMode) {
76 84
        super();
77
        this.service = service;
78 85
        if(matchMode != null){
79 86
            this.matchMode = matchMode;
80 87
        }
88
        setRankFilter(rank);
89
    }
90

  
91
    /**
92
     * @param rank
93
     */
94
    @Override
95
    public void setRankFilter(Rank rank) {
81 96
        namePartsFilter.setRank(rank);
82 97
    }
83 98

  
99

  
100
    @Override
84 101
    public void listenToFields(AbstractField<String> genusOrUninomialField, AbstractField<String> infraGenericEpithetField,
85 102
            AbstractField<String> specificEpithetField, AbstractField<String> infraSpecificEpithetField){
86 103

  
......
95 112
    /**
96 113
     *
97 114
     */
115
    @Override
98 116
    public void unlistenAllFields() {
99 117
        for(AbstractField<String> f : registeredToFields.keySet()){
100 118
            f.removeValueChangeListener(registeredToFields.get(f));
......
113 131
        }
114 132
    }
115 133

  
134
    @Override
116 135
    public void updateFromFields(){
117 136
        for(AbstractField<String> f : registeredToFields.keySet()){
118 137
            ValueChangeListener listener = registeredToFields.get(f);
......
133 152
    /**
134 153
     * @return the matchMode
135 154
     */
136
    protected MatchMode getMatchMode() {
155
    public MatchMode getMatchMode() {
137 156
        return matchMode;
138 157
    }
139 158

  
140 159
    /**
141 160
     * @param matchMode the matchMode to set
142 161
     */
143
    protected void setMatchMode(MatchMode matchMode) {
162
    public void setMatchMode(MatchMode matchMode) {
144 163
        this.matchMode = matchMode;
145 164
    }
146 165

  
......
166 185
     * {@inheritDoc}
167 186
     */
168 187
    @Override
188
    @Transactional(readOnly=true)
169 189
    public List<String> findEntities(int firstRow, String filter) {
170 190

  
171 191
        Integer pageIndex = firstRow / pageSize;
......
191 211
     * {@inheritDoc}
192 212
     */
193 213
    @Override
214
    @Transactional(readOnly=true)
194 215
    public int size(String filter) {
195 216

  
196 217
        Pager<TaxonNameParts> taxonNamePager = service.findTaxonNameParts(namePartsFilter, filter,  1, 0, null);
......
203 224
    /**
204 225
     * @return the pageSize
205 226
     */
227
    @Override
206 228
    public int getPageSize() {
207 229
        return pageSize;
208 230
    }
......
250 272
     * @param asList
251 273
     * @return
252 274
     */
275
    @Override
253 276
    public void excludeNames(TaxonName ... excludedTaxonNames) {
254 277
        namePartsFilter.getExludedNamesUuids();
255 278
        for(TaxonName n : excludedTaxonNames){
src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TaxonNameEditorPresenter.java
41 41
import eu.etaxonomy.cdm.persistence.dao.common.Restriction.Operator;
42 42
import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
43 43
import eu.etaxonomy.cdm.service.CdmFilterablePagingProvider;
44
import eu.etaxonomy.cdm.service.TaxonNameStringFilterablePagingProvider;
44
import eu.etaxonomy.cdm.service.ITaxonNameStringFilterablePagingProvider;
45 45
import eu.etaxonomy.cdm.service.UserHelperAccess;
46 46
import eu.etaxonomy.cdm.service.initstrategies.AgentBaseInit;
47 47
import eu.etaxonomy.cdm.vaadin.event.EditorActionTypeFilter;
......
97 97

  
98 98
    private BeanInstantiator<Reference> newReferenceInstantiator;
99 99

  
100
    private TaxonNameStringFilterablePagingProvider genusOrUninomialPartPagingProvider;
100
    private ITaxonNameStringFilterablePagingProvider genusOrUninomialPartPagingProvider;
101 101

  
102
    private TaxonNameStringFilterablePagingProvider specificEpithetPartPagingProvider;
102
    private ITaxonNameStringFilterablePagingProvider specificEpithetPartPagingProvider;
103 103

  
104 104
    private Property.ValueChangeListener refreshSpecificEpithetComboBoxListener;
105 105

  
......
379 379
                AbstractField<String> genusOrUninomialField = getView().getGenusOrUninomialField();
380 380
                if(event.getNewField() instanceof CompositeCustomField){
381 381
                    if(specificEpithetPartPagingProvider == null){
382
                        specificEpithetPartPagingProvider = new TaxonNameStringFilterablePagingProvider(getRepo().getNameService(), Rank.SPECIES());
382
                        specificEpithetPartPagingProvider = taxonNameStringFilterablePagingProvider(Rank.SPECIES());
383 383
                    }
384 384
                    specificEpithetPartPagingProvider.listenToFields(
385 385
                            genusOrUninomialField,
......
404 404
            } else if(boundPropertyIdPath.matches("genusOrUninomial")) {
405 405
                if(event.getNewField() instanceof CompositeCustomField){
406 406
                    if(genusOrUninomialPartPagingProvider  == null){
407
                        genusOrUninomialPartPagingProvider = new TaxonNameStringFilterablePagingProvider(getRepo().getNameService());
407
                        genusOrUninomialPartPagingProvider = taxonNameStringFilterablePagingProvider(null);
408 408
                    }
409 409
                    genusOrUninomialPartPagingProvider.listenToFields(
410 410
                                null,
......
698 698
        };
699 699
    }
700 700

  
701
    @Override
702
    public void destroy() throws Exception {
703
        super.destroy();
704
        specificEpithetPartPagingProvider = null;
705
        genusOrUninomialPartPagingProvider = null;
706
    }
707

  
708

  
709

  
701 710

  
702 711

  
703 712

  
src/main/java/eu/etaxonomy/vaadin/mvp/CdmEditorPresenterBase.java
24 24
import eu.etaxonomy.cdm.model.ICdmEntityUuidCacher;
25 25
import eu.etaxonomy.cdm.model.common.CdmBase;
26 26
import eu.etaxonomy.cdm.model.common.User;
27
import eu.etaxonomy.cdm.model.name.Rank;
27 28
import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
28 29
import eu.etaxonomy.cdm.persistence.hibernate.permission.CdmAuthority;
29 30
import eu.etaxonomy.cdm.service.CdmBeanItemContainerFactory;
30 31
import eu.etaxonomy.cdm.service.CdmFilterablePagingProviderFactory;
31 32
import eu.etaxonomy.cdm.service.CdmStore;
33
import eu.etaxonomy.cdm.service.ITaxonNameStringFilterablePagingProvider;
32 34
import eu.etaxonomy.cdm.service.UserHelperAccess;
33 35
import eu.etaxonomy.cdm.vaadin.event.EntityChangeEvent;
34 36
import eu.etaxonomy.cdm.vaadin.view.name.CachingPresenter;
......
351 353
    public void disposeCache() {
352 354
        cache.dispose();
353 355
    }
356

  
357

  
358
    protected ITaxonNameStringFilterablePagingProvider taxonNameStringFilterablePagingProvider(Rank rank) {
359
        ITaxonNameStringFilterablePagingProvider pagingProvider =  (ITaxonNameStringFilterablePagingProvider) getRepo().getBean("taxonNameStringFilterablePagingProvider");
360
        if(rank != null) {
361
            pagingProvider.setRankFilter(rank);
362
        }
363
        return pagingProvider;
364
    }
354 365
}

Also available in: Unified diff