Project

General

Profile

« Previous | Next » 

Revision cfabbeb0

Added by Andreas Kohlbecker almost 7 years ago

ref #6724 SpecimenTypeDesignationWorkingsetEditor improvements

  • better country select item captions
  • extending the SpecimenTypeDesignationWorkingSetDTO
  • adding more fields to the editor
  • Custom component for the min-max-freetext fields like 'Absolute elevation'

View differences:

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