Project

General

Profile

« Previous | Next » 

Revision c295928b

Added by Katja Luther over 4 years ago

ref #8568: performance issues for term and voc preference pages

View differences:

eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/AbstractTermSelectionWizardPage.java
12 12
import java.util.ArrayList;
13 13
import java.util.Arrays;
14 14
import java.util.List;
15
import java.util.UUID;
16 15

  
17
import org.apache.commons.lang.StringUtils;
18 16
import org.eclipse.jface.viewers.CheckboxTreeViewer;
19 17
import org.eclipse.jface.wizard.WizardPage;
20 18
import org.eclipse.swt.SWT;
19
import org.eclipse.swt.events.SelectionAdapter;
20
import org.eclipse.swt.events.SelectionEvent;
21 21
import org.eclipse.swt.layout.GridData;
22 22
import org.eclipse.swt.layout.GridLayout;
23
import org.eclipse.swt.widgets.Button;
23 24
import org.eclipse.swt.widgets.Composite;
24 25

  
25
import eu.etaxonomy.cdm.api.service.ITermService;
26 26
import eu.etaxonomy.cdm.api.service.IVocabularyService;
27
import eu.etaxonomy.cdm.model.term.DefinedTermBase;
27
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
28 28
import eu.etaxonomy.cdm.model.term.TermType;
29
import eu.etaxonomy.cdm.model.term.TermVocabulary;
30 29
import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
31
import eu.etaxonomy.cdm.persistence.dto.TermDto;
32 30
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
33 31
import eu.etaxonomy.taxeditor.editor.definedterm.DefinedTermSorter;
34 32
import eu.etaxonomy.taxeditor.editor.definedterm.TermDtoContentProvider;
......
40 38
 * @since 04.06.2018
41 39
 *
42 40
 */
43
public abstract class AbstractTermSelectionWizardPage extends WizardPage {
41
public abstract class AbstractTermSelectionWizardPage<T extends AbstractTermDto> extends WizardPage {
44 42

  
45 43
    protected CheckBoxTreeComposite treeComposite;
46 44
    private List<TermVocabularyDto> vocabularies = new ArrayList<>();
47 45
    boolean localPref;
46
    protected CdmPreference pref;
47
    protected boolean override;
48 48

  
49 49
    protected TermType type;
50 50

  
51 51
    protected AbstractTermSelectionWizardPage(String pageName, TermType type) {
52 52
        super(pageName);
53
        // TODO check if configuration exists
54
       // CdmStore.getCurrentSessionManager().bindNullSession();
55 53
        this.type = type;
56 54

  
57 55
    }
......
84 82
        vocabularies = vocs;
85 83
    }
86 84

  
85
    public CdmPreference getPreference() {
86
        return pref;
87
    }
88

  
87 89
    protected void rememberCheckedValues(String checkedValues) {
88 90
        initialiseVocabularies();
89 91

  
......
99 101
            if (listCheckedComma != null && checkedValues.contains(",")){ //$NON-NLS-1$
100 102
                checked = Arrays.asList(listCheckedComma);
101 103
            }
102
            List<AbstractTermDto> termsFromStringValues = getTermsFromStringValues(checked);
104
            List<T> termsFromStringValues = getTermsFromStringValues(checked);
103 105
            treeComposite.setCheckedElements(termsFromStringValues.toArray());
104 106

  
105 107
        }else{
106
            List<AbstractTermDto> termsFromStringValues = getTermsFromStringValues(new ArrayList<String>());
108
            List<T> termsFromStringValues = getTermsFromStringValues(new ArrayList<String>());
107 109
            treeComposite.setCheckedElements(termsFromStringValues.toArray());
108 110
        }
109 111
    }
110 112

  
111
    protected List<AbstractTermDto> getTermsFromStringValues(List<String> listValue) {
112
        List<AbstractTermDto> termlist = new ArrayList<>();
113
        ITermService termService = CdmStore.getService(ITermService.class);
114
        for (String s : listValue) {
115
            if (!StringUtils.isBlank(s)){
116
                UUID uuid = UUID.fromString(s);
117

  
118
                DefinedTermBase definedTermBase = termService.load(uuid);
119
                if(definedTermBase != null){
120
                    termlist.add(TermDto.fromTerm(definedTermBase, true));
121
                }else{
122
                    IVocabularyService vocabularyService = CdmStore.getService(IVocabularyService.class);
123
                    TermVocabulary termVocabulary = vocabularyService.load(uuid);
124
                    if (termVocabulary != null){
125
                        termlist.add(new TermVocabularyDto(uuid, termVocabulary.getRepresentations(), termVocabulary.getTermType()));
126
                    }
127
                }
128
            }
129
        }
130
        if (listValue.isEmpty()){
131
            List<DefinedTermBase> terms = CdmStore.getTermManager().getAllTerms(type, null);
132
            for (DefinedTermBase term: terms){
133
                termlist.add(TermDto.fromTerm(term, true));
134
            }
135
        }
136 113

  
137
        return termlist;
138
    }
139 114

  
140 115
    protected void initialiseVocabularies() {
141 116
        if (getVocabularies() != null) {
......
149 124

  
150 125
    protected abstract List<TermVocabularyDto> getVocabulariesFromPreference();
151 126

  
127
    /**
128
     * @param listValue
129
     * @return
130
     */
131
    protected abstract List<T> getTermsFromStringValues(List<String> listValue);
132

  
133
    protected void createAllowOverrideButton(Composite parent) {
134
        final Button activateCheckButton = new Button(parent, SWT.CHECK);
135
       if (localPref){
136
           activateCheckButton.setText("Override");
137
           activateCheckButton.setSelection(override);
138
       }else{
139
           activateCheckButton.setText("Allow Override");
140
           activateCheckButton.setSelection(pref.isAllowOverride());
141
       }
142

  
143

  
144

  
145
        activateCheckButton.addSelectionListener(new SelectionAdapter(){
146
                @Override
147
                public void widgetSelected(SelectionEvent e) {
148
                    pref.setAllowOverride(activateCheckButton.getSelection());
149
                    override = activateCheckButton.getSelection();
150

  
151
                }
152
            });
153
    }
152 154

  
153 155
}

Also available in: Unified diff