Project

General

Profile

« Previous | Next » 

Revision 8ccf2acc

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/input/AbstractBulkEditorInput.java
57 57
	private List<T> saveCandidates = new ArrayList<>();
58 58

  
59 59

  
60
	private Set<T> mergeCandidates = new HashSet<>();
61
	private T mergeTarget = null;
60
	private Set<T> markedMergeCandidates = new HashSet<>();
61
	private T markedMergeTarget = null;
62

  
63
	private HashMap<T, Set<T>> mergedEntities = new HashMap<>();
62 64

  
63 65
	private IEntityCreator<T> entityCreator;
64 66
	private final ConversationHolder conversation;
......
91 93
	protected abstract T loadEntity(UUID entityUuid);
92 94

  
93 95
	public void setMergeTarget(T t){
94
	    mergeTarget = t;
96
	    markedMergeTarget = t;
95 97
	}
96 98

  
97 99
    public Set<T> getMergeCandidates() {
98
        return mergeCandidates;
100
        return markedMergeCandidates;
99 101
    }
100 102

  
101 103
    public T getMergeTarget() {
102
        return mergeTarget;
104
        return markedMergeTarget;
103 105
    }
104 106

  
105 107
	public void removeMergeTarget(){
106
	    mergeTarget = null;
108
	    markedMergeTarget = null;
107 109
	}
108 110

  
109 111
	public void addMergeCandidate(T t){
110
	    mergeCandidates.add(t);
112
	    markedMergeCandidates.add(t);
111 113
	}
112 114

  
113 115
	public void removeMergeCandidate(T t){
114
		mergeCandidates.remove(t);
116
		markedMergeCandidates.remove(t);
115 117
	}
116 118

  
117 119
    public void addToDelete(T t, DeleteConfiguratorBase config) {
......
198 200
            }
199 201
	    }
200 202
	    toDelete.clear();
203
	    if (!saveCandidates.isEmpty()){
204
            CdmStore.getService(saveCandidates.get(0)).merge(saveCandidates, true);
205
        }
201 206
	    if(resetMerge){
202 207
	        //merge entities
203
	        for(T mergeCandidate:mergeCandidates){
204
	            merge(mergeCandidate, mergeTarget);
208
	        for(T mergeTarget:mergedEntities.keySet()){
209
	            for (T mergeCandidate: mergedEntities.get(mergeTarget)){
210
	                merge(mergeCandidate, mergeTarget);
211
	            }
205 212
	        }
206
	        mergeCandidates.clear();
207
	        mergeTarget = null;
213
	        mergedEntities.clear();
214

  
208 215
	    }
209 216
	}
210 217

  
......
299 306
       this.saveCandidates.clear();
300 307

  
301 308
    }
309

  
310
    public HashMap<T, Set<T>> getMergedEntities() {
311
        return mergedEntities;
312
    }
313

  
314
    public void setMergedEntities(HashMap<T, Set<T>> mergedEntities) {
315
        this.mergedEntities = mergedEntities;
316
    }
302 317
}

Also available in: Unified diff