Revision c5cfeefd
Added by Katja Luther over 5 years ago
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/e4/TaxonEditorInputE4.java | ||
---|---|---|
13 | 13 |
import java.util.Arrays; |
14 | 14 |
import java.util.HashMap; |
15 | 15 |
import java.util.HashSet; |
16 |
import java.util.Iterator; |
|
16 | 17 |
import java.util.List; |
17 | 18 |
import java.util.Map; |
18 | 19 |
import java.util.Map.Entry; |
... | ... | |
42 | 43 |
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType; |
43 | 44 |
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap; |
44 | 45 |
import eu.etaxonomy.taxeditor.editor.CdmEntitySessionInput; |
46 |
import eu.etaxonomy.taxeditor.editor.ChooseFromMultipleAcceptedTaxaDialog; |
|
45 | 47 |
import eu.etaxonomy.taxeditor.editor.ChooseFromMultipleTaxonNodesDialog; |
46 | 48 |
import eu.etaxonomy.taxeditor.editor.EditorUtil; |
47 | 49 |
import eu.etaxonomy.taxeditor.editor.l10n.Messages; |
... | ... | |
145 | 147 |
acceptedTaxa.add(relation.getToTaxon()); |
146 | 148 |
} |
147 | 149 |
} |
148 |
setInputForMultipleTaxa(conversation, acceptedTaxa);
|
|
150 |
setInputForRelatedTaxa(conversation, acceptedTaxa);
|
|
149 | 151 |
|
150 | 152 |
}else{ |
151 | 153 |
setInputForMultipleNodes(conversation, taxon.getTaxonNodes()); |
... | ... | |
185 | 187 |
taxonNode = getCdmEntitySession().remoteLoad(CdmStore.getService(ITaxonNodeService.class), taxonNode.getUuid(), getTaxonNodePropertyPaths()); |
186 | 188 |
init(taxonNode); |
187 | 189 |
}else if(taxonNodes.size() > 1){ |
190 |
|
|
188 | 191 |
TaxonNode taxonNode = ChooseFromMultipleTaxonNodesDialog.choose(taxonNodes); |
189 | 192 |
if(taxonNode != null){ |
190 | 193 |
taxonNode = CdmStore.getService(ITaxonNodeService.class).load(taxonNode.getUuid(), getTaxonNodePropertyPaths()); |
... | ... | |
215 | 218 |
} |
216 | 219 |
} |
217 | 220 |
|
221 |
private void setInputForRelatedTaxa(ConversationHolder conversation, Set<Taxon> taxa){ |
|
222 |
if(taxa.size() == 1){ |
|
223 |
Taxon taxon = taxa.iterator().next(); |
|
224 |
Set<TaxonNode> nodes = taxon.getTaxonNodes(); |
|
225 |
TaxonNode taxonNode = ChooseFromMultipleTaxonNodesDialog.choose(nodes); |
|
226 |
init(taxonNode); |
|
227 |
}else if(taxa.size() > 1){ |
|
228 |
Iterator<Taxon> taxonIterator = taxa.iterator(); |
|
229 |
Set<TaxonNode> nodes = new HashSet<>(); |
|
230 |
while (taxonIterator.hasNext()){ |
|
231 |
|
|
232 |
nodes.addAll(taxonIterator.next().getTaxonNodes()); |
|
233 |
} |
|
234 |
TaxonNode taxonNode = ChooseFromMultipleAcceptedTaxaDialog.choose(nodes); |
|
235 |
if(taxonNode != null){ |
|
236 |
taxonNode = CdmStore.getService(ITaxonNodeService.class).load(taxonNode.getUuid(), getTaxonNodePropertyPaths()); |
|
237 |
} |
|
238 |
if(taxonNode != null){ |
|
239 |
init(taxonNode); |
|
240 |
} |
|
241 |
} else if (taxa.size() == 0) { |
|
242 |
// this is an undesired state |
|
243 |
MessagingUtils.warningDialog(INCORRECT_STATE,TaxonEditorInputE4.class,Messages.TaxonEditorInput_TAXON_NOT_IN_CLASSIFICATION); |
|
244 |
} |
|
245 |
} |
|
246 |
|
|
218 | 247 |
public static TaxonEditorInputE4 NewInstance(UUID taxonNodeUuid) { |
219 | 248 |
return new TaxonEditorInputE4(taxonNodeUuid, CdmType.TAXON_NODE); |
220 | 249 |
|
Also available in: Unified diff
fix #7500: for misapplied names related to different taxa use chooseAcceptedTaxonDialog