Project

General

Profile

« Previous | Next » 

Revision c5cfeefd

Added by Katja Luther over 5 years ago

fix #7500: for misapplied names related to different taxa use chooseAcceptedTaxonDialog

View differences:

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