51 |
51 |
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
|
52 |
52 |
import eu.etaxonomy.cdm.api.service.ITermNodeService;
|
53 |
53 |
import eu.etaxonomy.cdm.api.service.ITermTreeService;
|
|
54 |
import eu.etaxonomy.cdm.api.service.UpdateResult;
|
54 |
55 |
import eu.etaxonomy.cdm.model.term.DefinedTermBase;
|
55 |
56 |
import eu.etaxonomy.cdm.model.term.TermNode;
|
56 |
57 |
import eu.etaxonomy.cdm.model.term.TermType;
|
... | ... | |
125 |
126 |
Map<UUID,TermTreeDto> trees;
|
126 |
127 |
|
127 |
128 |
Map<UUID, TermNodeDto> uuidTermMap = new HashMap<>();
|
128 |
|
List<AbstractPostOperation<TermNode>> createOperationList = new ArrayList<>();
|
|
129 |
Map<UUID, CreateFeatureTreeOperation> createOperationList = new HashMap<>();
|
129 |
130 |
List<AbstractPostOperation<TermNode>> operationList = new ArrayList<>();
|
130 |
131 |
List<TermNodeDto> listToUpdate = new ArrayList<>();
|
131 |
132 |
|
... | ... | |
308 |
309 |
|
309 |
310 |
// commit the conversation and start a new transaction immediately
|
310 |
311 |
Object[] expandedElements = this.viewer.getExpandedElements();
|
|
312 |
ISelection sel = this.viewer.getSelection();
|
311 |
313 |
conversation.commit(true);
|
312 |
314 |
if (createOperationList != null && !createOperationList.isEmpty()){
|
313 |
|
for (AbstractPostOperation<TermNode> operation: createOperationList){
|
|
315 |
for (CreateFeatureTreeOperation operation: createOperationList.values()){
|
|
316 |
TermTreeDto termDto = getTreeDtoForUuid(operation.getElementUuid());
|
|
317 |
operation.getElement().setTitleCache(termDto.getTitleCache(), true);
|
|
318 |
operation.getElement().setAllowDuplicates(termDto.isAllowDuplicate());
|
|
319 |
operation.getElement().setFlat(termDto.isFlat());
|
|
320 |
operation.getElement().setOrderRelevant(termDto.isOrderRelevant());
|
314 |
321 |
AbstractUtility.executeOperation(operation, sync);
|
315 |
322 |
}
|
316 |
323 |
createOperationList.clear();
|
... | ... | |
326 |
333 |
CdmStore.getService(ITermNodeService.class).saveTermNodeDtoList(listToUpdate);
|
327 |
334 |
listToUpdate.clear();
|
328 |
335 |
List<TermTreeDto> rootEntities = getRootEntities();
|
329 |
|
CdmStore.getService(ITermTreeService.class).saveOrUpdateTermTreeDtoList(rootEntities);
|
330 |
|
initializeTrees();
|
|
336 |
UpdateResult result = CdmStore.getService(ITermTreeService.class).saveOrUpdateTermTreeDtoList(rootEntities);
|
331 |
337 |
conversation.commit(true);
|
332 |
|
|
333 |
338 |
this.setDirty(false);
|
|
339 |
initializeTrees();
|
|
340 |
this.viewer.setSelection(sel);
|
334 |
341 |
// this.viewer.setExpandedElements(expandedElements);
|
335 |
342 |
}
|
336 |
343 |
|
... | ... | |
524 |
531 |
@Override
|
525 |
532 |
public void addOperation(AbstractPostOperation operation) {
|
526 |
533 |
if (operation instanceof CreateFeatureTreeOperation){
|
527 |
|
createOperationList.add(operation);
|
|
534 |
createOperationList.put(((CreateFeatureTreeOperation)operation).getElementUuid(), (CreateFeatureTreeOperation)operation);
|
528 |
535 |
}else{
|
529 |
536 |
operationList.add(operation);
|
530 |
537 |
}
|
... | ... | |
535 |
542 |
private void addSaveCandidate(@UIEventTopic(WorkbenchEventConstants.ADD_SAVE_CANDIDATE) UUID cdmbaseUuid) {
|
536 |
543 |
for (UUID uuid: uuidTermMap.keySet()) {
|
537 |
544 |
if (uuid.equals(cdmbaseUuid)){
|
538 |
|
listToUpdate.add(uuidTermMap.get(uuid));
|
|
545 |
listToUpdate.add(uuidTermMap.get(uuid));
|
539 |
546 |
}
|
540 |
547 |
|
541 |
548 |
}
|
|
549 |
|
542 |
550 |
}
|
543 |
551 |
|
544 |
552 |
@Override
|
ref #9504: fix saving label changes of newly created term trees