2 * Copyright (C) 2017 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
9 package eu
.etaxonomy
.cdm
.vaadin
.component
;
11 import java
.util
.ArrayList
;
12 import java
.util
.Arrays
;
13 import java
.util
.List
;
14 import java
.util
.UUID
;
16 import com
.vaadin
.data
.util
.BeanItemContainer
;
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
;
28 * @author a.kohlbecker
32 public class CdmBeanItemContainerFactory
{
34 private CdmRepository repo
;
36 private final static List
<String
> INIT_STRATEGY
= Arrays
.asList(new String
[]{"$", "representations"});
38 private static List
<OrderHint
> orderHints
= new ArrayList
<>();
41 orderHints
.add(OrderHint
.BY_ORDER_INDEX
);
42 orderHints
.add(OrderHint
.ORDER_BY_TITLE_CACHE
);
46 * Constructor to be used by presenter classes directly
50 public CdmBeanItemContainerFactory(CdmRepository repo
){
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
;
68 public BeanItemContainer
<DefinedTermBase
> buildBeanItemContainer(UUID vocabularyUuid
) {
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
;
80 public BeanItemContainer
<DefinedTermBase
> buildTermItemContainer(UUID
... termUuid
) {
81 return buildTermItemContainer(Arrays
.asList(termUuid
));
85 * @param derivation_EVENT_TYPE_UUIDS
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
;
98 public <T
extends CdmBase
> BeanItemContainer
<T
> buildBeanItemContainer(Class
<T
> type
, List
<OrderHint
> orderHints
) {
100 if(orderHints
== null){
101 orderHints
= OrderHint
.defaultOrderHintsFor(type
);
104 List
<T
> terms
= repo
.getCommonService().list(type
, (Integer
)null, (Integer
)null,
106 Arrays
.asList(new String
[]{"$"}));
107 BeanItemContainer
<T
> termItemContainer
= new BeanItemContainer
<>(type
);
108 termItemContainer
.addAll(terms
);
109 return termItemContainer
;
112 public <T
extends CdmBase
> BeanItemContainer
<T
> buildBeanItemContainer(Class
<T
> type
) {
113 return buildBeanItemContainer(type
, null);
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
;