Project

General

Profile

« Previous | Next » 

Revision c0fb722d

Added by Katja Luther about 6 years ago

improve deduplication handling and saving in bulkeditor

View differences:

eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/handler/MergeGroupHandlerE4.java
8 8
 */
9 9
package eu.etaxonomy.taxeditor.bulkeditor.e4.handler;
10 10

  
11
import java.util.HashSet;
11 12
import java.util.Set;
12 13

  
13 14
import javax.inject.Named;
......
48 49

  
49 50
        BulkEditorE4 editor = (BulkEditorE4) activePart.getObject();
50 51
        AbstractBulkEditorInput input = editor.getEditorInput();
52
        Set<CdmBase> mergedCandidates = new HashSet<>();
51 53

  
52 54
        if(editor.isDirty()){
53 55
            boolean proceed = MessageDialog.openQuestion(null,
......
63 65
        }
64 66

  
65 67
        // Check whether there are any group annotations
66
        Set<CdmBase> mergeCandidates = input.getMergeCandidates();
67
        if (mergeCandidates.size() == 0) {
68
        Set<CdmBase> candidatesToMerge = input.getMergeCandidates();
69
        if (candidatesToMerge.size() == 0) {
68 70
            MessageDialog.openWarning(shell,
69 71
                    "No merge candidates", "No objects have been chosen for merging.");
70 72
            return;
......
85 87
        } else if(mergeTarget instanceof Reference){
86 88
            ref = HibernateProxyHelper.deproxy(mergeTarget, Reference.class);
87 89
        }
88
        for (CdmBase item : mergeCandidates) {
90
        for (CdmBase item : candidatesToMerge) {
89 91
            //first check whether entities are mergeable
90 92
            try{
91 93
                if (ref != null){
......
97 99
                        return;
98 100
                    }
99 101
                    input.getModel().remove(item);
102
                    mergedCandidates.add(item);
103

  
100 104
                }
101 105
                if (teamOrPerson != null){
102 106
                    TeamOrPersonBase<?> teamOrPerson2 = HibernateProxyHelper.deproxy(item, TeamOrPersonBase.class);
......
107 111
                        return;
108 112
                    }
109 113
                    input.getModel().remove(item);
114
                    mergedCandidates.add(item);
110 115
                }
111 116
            }catch(MergeException e){
112

  
117
                candidatesToMerge.clear();
118
                MessageDialog.openWarning(shell,
119
                        "No merge possible", "A merge is not possible." + e.getLocalizedMessage());
120
                return;
113 121
            }
114 122
        }
115

  
123
        if (!candidatesToMerge.isEmpty()){
124
            input.getMergedEntities().put(mergeTarget, mergedCandidates);
125
//            mergeCandidates.clear();
126
            input.getMergeCandidates().clear();
127
            input.setMergeTarget(null);
128
        }
116 129
        editor.setDirty();
117 130
        editor.refresh();
118 131
    }

Also available in: Unified diff