Revision 8ccf2acc
Added by Katja Luther about 6 years ago
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
improve deduplication handling and saving in bulkeditor