Revision c295928b
Added by Katja Luther over 4 years ago
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
ref #8568: performance issues for term and voc preference pages