Project

General

Profile

Download (4.21 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.component;
10

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

    
16
import com.vaadin.data.util.BeanItemContainer;
17

    
18
import eu.etaxonomy.cdm.api.application.CdmRepository;
19
import eu.etaxonomy.cdm.api.service.pager.Pager;
20
import eu.etaxonomy.cdm.model.common.CdmBase;
21
import eu.etaxonomy.cdm.model.common.DefinedTermBase;
22
import eu.etaxonomy.cdm.model.common.IEnumTerm;
23
import eu.etaxonomy.cdm.model.common.TermType;
24
import eu.etaxonomy.cdm.model.common.TermVocabulary;
25
import eu.etaxonomy.cdm.persistence.query.OrderHint;
26

    
27
/**
28
 * @author a.kohlbecker
29
 * @since Apr 6, 2017
30
 *
31
 */
32
public class CdmBeanItemContainerFactory {
33

    
34
    private CdmRepository repo;
35

    
36
    private final static List<String> INIT_STRATEGY = Arrays.asList(new String[]{"$", "representations"});
37

    
38
    private static List<OrderHint> orderHints = new ArrayList<>();
39

    
40
    static {
41
        orderHints.add(OrderHint.BY_ORDER_INDEX);
42
        orderHints.add(OrderHint.ORDER_BY_TITLE_CACHE);
43
    }
44

    
45
    /**
46
     * Constructor to be used by presenter classes directly
47
     *
48
     * @param repo
49
     */
50
    public CdmBeanItemContainerFactory(CdmRepository repo){
51
        this.repo = repo;
52
    }
53

    
54
    /**
55
     * @param termType
56
     */
57
    public BeanItemContainer<DefinedTermBase> buildBeanItemContainer(TermType termType) {
58
        // TODO use TermCacher?
59
        List<DefinedTermBase> terms = repo.getTermService().listByTermType(termType, null, null, orderHints, INIT_STRATEGY);
60
        BeanItemContainer<DefinedTermBase> termItemContainer = new BeanItemContainer<>(DefinedTermBase.class);
61
        termItemContainer.addAll(terms);
62
        return termItemContainer;
63
    }
64

    
65
    /**
66
     * @param termType
67
     */
68
    public BeanItemContainer<DefinedTermBase> buildBeanItemContainer(UUID vocabularyUuid) {
69

    
70
        TermVocabulary vocab = repo.getVocabularyService().find(vocabularyUuid);
71
        Pager<DefinedTermBase> terms = repo.getVocabularyService().getTerms(vocab, null, null, orderHints, INIT_STRATEGY);
72
        BeanItemContainer<DefinedTermBase> termItemContainer = new BeanItemContainer<>(DefinedTermBase.class);
73
        termItemContainer.addAll(terms.getRecords());
74
        return termItemContainer;
75
    }
76

    
77
    /**
78
     * @param termType
79
     */
80
    public BeanItemContainer<DefinedTermBase> buildTermItemContainer(UUID ... termUuid) {
81
        return buildTermItemContainer(Arrays.asList(termUuid));
82
    }
83

    
84
    /**
85
     * @param derivation_EVENT_TYPE_UUIDS
86
     * @return
87
     */
88
    public BeanItemContainer<DefinedTermBase> buildTermItemContainer(List<UUID> termsUuids) {
89
        List<DefinedTermBase> terms = repo.getTermService().load(termsUuids, INIT_STRATEGY);
90
        BeanItemContainer<DefinedTermBase> termItemContainer = new BeanItemContainer<>(DefinedTermBase.class);
91
        termItemContainer.addAll(terms);
92
        return termItemContainer;
93
    }
94

    
95
    /**
96
     * @param termType
97
     */
98
    public <T extends CdmBase> BeanItemContainer<T> buildBeanItemContainer(Class<T> type, List<OrderHint> orderHints) {
99

    
100
        if(orderHints == null){
101
            orderHints = OrderHint.defaultOrderHintsFor(type);
102
        }
103

    
104
        List<T> terms = repo.getCommonService().list(type, (Integer)null, (Integer)null,
105
                orderHints,
106
                Arrays.asList(new String[]{"$"}));
107
        BeanItemContainer<T> termItemContainer = new BeanItemContainer<>(type);
108
        termItemContainer.addAll(terms);
109
        return termItemContainer;
110
    }
111

    
112
    public <T extends CdmBase> BeanItemContainer<T> buildBeanItemContainer(Class<T> type) {
113
        return buildBeanItemContainer(type, null);
114
    }
115

    
116
    /**
117
     * @param values
118
     * @return
119
     */
120
    public <T extends IEnumTerm<T>> BeanItemContainer<T> buildBeanItemContainer(Class<T> termType, T ... enumTerms) {
121
        BeanItemContainer<T> termItemContainer = new BeanItemContainer<>(termType);
122
        List<T> termList = Arrays.asList(enumTerms);
123
        termItemContainer.addAll(termList);
124
        return termItemContainer;
125
    }
126

    
127

    
128
}
(1-1/9)