Revision cfabbeb0
Added by Andreas Kohlbecker almost 7 years ago
src/main/java/eu/etaxonomy/cdm/vaadin/component/SelectFieldFactory.java | ||
---|---|---|
11 | 11 |
import java.util.ArrayList; |
12 | 12 |
import java.util.Arrays; |
13 | 13 |
import java.util.List; |
14 |
import java.util.UUID; |
|
14 | 15 |
|
15 | 16 |
import org.springframework.beans.factory.annotation.Autowired; |
16 | 17 |
import org.springframework.beans.factory.annotation.Qualifier; |
... | ... | |
20 | 21 |
import com.vaadin.ui.ListSelect; |
21 | 22 |
|
22 | 23 |
import eu.etaxonomy.cdm.api.application.CdmRepository; |
24 |
import eu.etaxonomy.cdm.api.service.pager.Pager; |
|
23 | 25 |
import eu.etaxonomy.cdm.model.common.CdmBase; |
24 | 26 |
import eu.etaxonomy.cdm.model.common.DefinedTermBase; |
25 | 27 |
import eu.etaxonomy.cdm.model.common.TermType; |
28 |
import eu.etaxonomy.cdm.model.common.TermVocabulary; |
|
26 | 29 |
import eu.etaxonomy.cdm.persistence.query.OrderHint; |
27 |
import eu.etaxonomy.vaadin.component.ToOneRelatedEntityListSelect; |
|
28 | 30 |
|
29 | 31 |
/** |
30 | 32 |
* @author a.kohlbecker |
... | ... | |
47 | 49 |
orderHints.add(OrderHint.ORDER_BY_TITLE_CACHE); |
48 | 50 |
} |
49 | 51 |
|
52 |
/** |
|
53 |
* Constructor for the Spring Bean Factory |
|
54 |
*/ |
|
55 |
public SelectFieldFactory(){ |
|
56 |
this.repo = null; |
|
57 |
} |
|
58 |
|
|
59 |
/** |
|
60 |
* Constructor to be used by presenter classes directly |
|
61 |
* |
|
62 |
* @param repo |
|
63 |
*/ |
|
64 |
public SelectFieldFactory(CdmRepository repo){ |
|
65 |
this.repo = repo; |
|
66 |
} |
|
67 |
|
|
50 | 68 |
public ListSelect createListSelect(String caption, TermType termType){ |
51 | 69 |
BeanItemContainer<DefinedTermBase> termItemContainer = buildBeanItemContainer(termType); |
52 | 70 |
ListSelect select = new ListSelect(caption, termItemContainer); |
... | ... | |
96 | 114 |
return select; |
97 | 115 |
} |
98 | 116 |
|
99 |
/** |
|
100 |
* |
|
101 |
* @param caption |
|
102 |
* @param type |
|
103 |
* @param orderHints |
|
104 |
* @param propertyId the property id from which to read the label |
|
105 |
* @return |
|
106 |
*/ |
|
107 |
public <T extends CdmBase> ToOneRelatedEntityListSelect<T> createListSelectEditor(String caption, Class<T> type, List<OrderHint> orderHints, String propertyId){ |
|
108 |
|
|
109 |
if(orderHints == null){ |
|
110 |
orderHints = OrderHint.defaultOrderHintsFor(type); |
|
111 |
} |
|
112 |
|
|
113 |
BeanItemContainer<T> termItemContainer = buildBeanItemContainer(type, orderHints); |
|
114 |
ToOneRelatedEntityListSelect<T> selectEditor = new ToOneRelatedEntityListSelect<T>(caption, type, termItemContainer); |
|
115 |
|
|
116 |
// guess property id to use for display |
|
117 |
if(propertyId == null) { |
|
118 |
if(orderHints != null && !orderHints.isEmpty()){ |
|
119 |
propertyId = orderHints.get(0).getPropertyName(); |
|
120 |
} |
|
121 |
} |
|
122 |
if(propertyId != null){ |
|
123 |
selectEditor.getSelect().setItemCaptionPropertyId(propertyId); |
|
124 |
} |
|
125 |
return selectEditor; |
|
126 |
} |
|
127 |
|
|
128 | 117 |
|
129 | 118 |
/** |
130 | 119 |
* @param termType |
131 | 120 |
*/ |
132 |
private BeanItemContainer<DefinedTermBase> buildBeanItemContainer(TermType termType) {
|
|
121 |
public BeanItemContainer<DefinedTermBase> buildBeanItemContainer(TermType termType) {
|
|
133 | 122 |
// TODO use TermCacher? |
134 | 123 |
List<DefinedTermBase> terms = repo.getTermService().listByTermType(termType, null, null, orderHints, INIT_STRATEGY); |
135 | 124 |
BeanItemContainer<DefinedTermBase> termItemContainer = new BeanItemContainer<>(DefinedTermBase.class); |
... | ... | |
140 | 129 |
/** |
141 | 130 |
* @param termType |
142 | 131 |
*/ |
143 |
private <T extends CdmBase> BeanItemContainer<T> buildBeanItemContainer(Class<T> type, List<OrderHint> orderHints) { |
|
132 |
public BeanItemContainer<DefinedTermBase> buildBeanItemContainer(UUID vocabularyUuid) { |
|
133 |
|
|
134 |
TermVocabulary vocab = repo.getVocabularyService().find(vocabularyUuid); |
|
135 |
Pager<DefinedTermBase> terms = repo.getVocabularyService().getTerms(vocab, null, null, orderHints, INIT_STRATEGY); |
|
136 |
BeanItemContainer<DefinedTermBase> termItemContainer = new BeanItemContainer<>(DefinedTermBase.class); |
|
137 |
termItemContainer.addAll(terms.getRecords()); |
|
138 |
return termItemContainer; |
|
139 |
} |
|
140 |
|
|
141 |
/** |
|
142 |
* @param termType |
|
143 |
*/ |
|
144 |
public <T extends CdmBase> BeanItemContainer<T> buildBeanItemContainer(Class<T> type, List<OrderHint> orderHints) { |
|
144 | 145 |
|
145 | 146 |
List<T> terms = repo.getCommonService().list(type, (Integer)null, (Integer)null, |
146 | 147 |
orderHints, |
Also available in: Unified diff
ref #6724 SpecimenTypeDesignationWorkingsetEditor improvements