Project

General

Profile

« Previous | Next » 

Revision cedc4ff1

Added by Katja Luther about 6 years ago

ref #2380: implement usage of Dto for taxon navigator

View differences:

eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/e4/handler/RemotingDeleteTaxonNodeHandlerE4.java
26 26
import org.eclipse.jface.viewers.TreeSelection;
27 27
import org.eclipse.swt.widgets.Shell;
28 28

  
29
import eu.etaxonomy.cdm.api.application.CdmApplicationState;
30 29
import eu.etaxonomy.cdm.api.service.config.NodeDeletionConfigurator.ChildHandling;
31 30
import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;
32 31
import eu.etaxonomy.cdm.api.service.config.TaxonNodeDeletionConfigurator;
33 32
import eu.etaxonomy.cdm.model.taxon.Classification;
34
import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
35
import eu.etaxonomy.cdm.model.taxon.Synonym;
36 33
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
34
import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
37 35
import eu.etaxonomy.taxeditor.editor.EditorUtil;
38 36
import eu.etaxonomy.taxeditor.model.MessagingUtils;
39 37
import eu.etaxonomy.taxeditor.navigation.l10n.Messages;
......
50 48
public class RemotingDeleteTaxonNodeHandlerE4 extends RemotingCdmHandlerE4 {
51 49

  
52 50
    private TaxonDeletionConfigurator config;
53
    private Set<ITaxonTreeNode> treeNodes;
51
    private Set<TaxonNodeDto> treeNodes;
52
    private Set<TaxonNodeDto> classifications;
54 53

  
55 54
    public RemotingDeleteTaxonNodeHandlerE4() {
56 55
        super(TaxonNavigatorLabels.DELETE_TAXON_NODE_LABEL);
......
63 62
            MHandledMenuItem menuItem) {
64 63

  
65 64
        Iterator<?> selectionIterator = selection.iterator();
66
        treeNodes = new HashSet<ITaxonTreeNode>();
65
        treeNodes = new HashSet();
67 66

  
67
        boolean containsNodeWithChildren = false;
68
        boolean containsClassification = false;
69
        boolean containsTaxonNodes = false;
70
        classifications = new HashSet();
68 71
        while (selectionIterator.hasNext()){
69 72
            Object object = selectionIterator.next();
70
            if(object instanceof ITaxonTreeNode) {
71
                treeNodes.add((ITaxonTreeNode) object);
73
            if(object instanceof TaxonNodeDto) {
74
                treeNodes.add((TaxonNodeDto) object);
75
            }else if (object instanceof TaxonNode && !((TaxonNode)object).hasTaxon()){
76
                TaxonNodeDto dto = new TaxonNodeDto(Classification.class,(TaxonNode)object);
77
                classifications.add(dto);
78
                containsClassification = true;
72 79
            }
73 80
        }
74
        for (ITaxonTreeNode treeNode : treeNodes) {
75
            if(treeNode instanceof TaxonNode) {
76
                EditorUtil.closeObsoleteEditor((TaxonNode) treeNode, partService);
77
            }
81
        for (TaxonNodeDto treeNode : treeNodes) {
82
           EditorUtil.closeObsoleteEditor(treeNode, partService);
78 83
        }
79 84

  
80 85
        config = new TaxonDeletionConfigurator();
81 86
        Iterator it = treeNodes.iterator();
82
        boolean containsNodeWithChildren = false;
83
        boolean containsClassification = false;
84
        boolean containsTaxonNodes = false;
85
        treeNodes = new HashSet<ITaxonTreeNode>();
86
        while (it.hasNext()){
87
        	ITaxonTreeNode treeNode = (ITaxonTreeNode) it.next();
88 87

  
89
            if (treeNode instanceof TaxonNode && !((TaxonNode)treeNode).hasTaxon()){
90
                treeNode = CdmApplicationState.getCurrentAppConfig().getClassificationService().load(((TaxonNode)treeNode).getClassification().getUuid());
91
            }else{
92
                treeNode = CdmApplicationState.getCurrentAppConfig().getTaxonNodeService().load(treeNode.getUuid());
93
            }
88
        treeNodes = new HashSet();
89
        while (it.hasNext()){
90
            TaxonNodeDto treeNode = (TaxonNodeDto) it.next();
94 91

  
95 92
            treeNodes.add(treeNode);
96 93
            if (treeNode == null){
......
98 95
            	return Status.CANCEL_STATUS;
99 96

  
100 97
            }
101
            if (treeNode instanceof Classification){
102
            	containsClassification = true;
103
            	if (((Classification)treeNode).getRootNode() != null &&treeNode.hasChildNodes()) {
104
            		containsNodeWithChildren = true;
105
            	}
106
            }else if (treeNode instanceof TaxonNode){
98
           if (treeNode instanceof TaxonNodeDto){
107 99
            	containsTaxonNodes = true;
108
            	if (treeNode.hasChildNodes()){
100
            	if (treeNode.getTaxonomicChildrenCount()>0){
109 101
            		containsNodeWithChildren = true;
110 102
            	}
111 103
            }
112 104

  
113 105

  
106
        }
107

  
108
        for (TaxonNodeDto rootNode: classifications){
109

  
110
            if (rootNode.getTaxonomicChildrenCount() > 0) {
111
                containsNodeWithChildren = true;
112
            }
113

  
114 114
        }
115 115
            TaxonNodeDeletionConfigurator configNodes = new TaxonNodeDeletionConfigurator();
116 116
			if (containsClassification && !containsTaxonNodes) {
......
186 186
        return new RemotingDeleteTaxonNodeOperation(getTrigger(),
187 187
                false,
188 188
                treeNodes,
189
                classifications,
189 190
                config);
190 191
    }
191 192

  
192 193
    @CanExecute
193 194
    private boolean canExecute(@Named(IServiceConstants.ACTIVE_SELECTION)TreeSelection selection, MHandledMenuItem menuItem){
194 195
        boolean canExecute = false;
195
        canExecute = !selection.isEmpty() && !(selection.getFirstElement() instanceof Synonym);
196
        Object selectionElement =  selection.getFirstElement();
197

  
198
        canExecute = (selectionElement instanceof TaxonNodeDto) ||
199
                (selectionElement instanceof TaxonNode && ((TaxonNode)selectionElement).getTaxon() == null);
196 200
        menuItem.setVisible(canExecute);
197 201
        return canExecute;
198 202
    }

Also available in: Unified diff