Revision ebba5bdb
Added by Andreas Müller over 2 years ago
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/DeleteResult.java | ||
---|---|---|
64 | 64 |
if (includedResult instanceof DeleteResult){ |
65 | 65 |
DeleteResult includedDeleteResult = (DeleteResult)includedResult; |
66 | 66 |
this.addDeletedObjects(includedDeleteResult.getDeletedObjects()); |
67 |
//Note: we do not include related objects as they loose there context, if needed in some cases in future it should be done paremeterized
|
|
67 |
//Note: we do not include related objects as they loose there context, if needed in some cases in future it should be done parameterized
|
|
68 | 68 |
} |
69 | 69 |
} |
70 | 70 |
|
... | ... | |
74 | 74 |
public String toString() { |
75 | 75 |
String separator = ", "; |
76 | 76 |
String deletedObjectString = toStringObjectsString(separator, deletedObjects); |
77 |
String relatedObjectString = toStringObjectsString(separator, deletedObjects);
|
|
77 |
String relatedObjectString = toStringObjectsString(separator, relatedObjects);
|
|
78 | 78 |
return super.toString().replace("[UpdateResult]", "[DeleteResult]")+"\n" |
79 | 79 |
+ "Deleted objects: " + deletedObjectString +"\n" |
80 | 80 |
+ "Related objects: " + relatedObjectString; |
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonNodeServiceImpl.java | ||
---|---|---|
384 | 384 |
}else{ |
385 | 385 |
srt = synonym.getType(); |
386 | 386 |
} |
387 |
|
|
388 | 387 |
} |
389 | 388 |
if (secHandling != null && !secHandling.equals(SecReferenceHandlingEnum.KeepOrWarn)){ |
390 | 389 |
synonym.setSec(newSec); |
391 | 390 |
} |
392 | 391 |
newAcceptedTaxon.addSynonym(synonym, srt); |
393 |
|
|
394 | 392 |
} |
395 | 393 |
|
396 |
|
|
397 | 394 |
// CHILD NODES |
398 | 395 |
if(oldTaxonNode.getChildNodes() != null && oldTaxonNode.getChildNodes().size() != 0){ |
399 | 396 |
List<TaxonNode> childNodes = new ArrayList<>(); |
... | ... | |
462 | 459 |
|
463 | 460 |
if (result.isOk()){ |
464 | 461 |
result = taxonService.deleteTaxon(oldTaxon.getUuid(), conf, classification.getUuid()); |
465 |
|
|
466 | 462 |
}else{ |
467 | 463 |
result.setStatus(Status.OK); |
468 | 464 |
TaxonNodeDeletionConfigurator config = new TaxonNodeDeletionConfigurator(); |
... | ... | |
473 | 469 |
|
474 | 470 |
result.addUpdatedObject(newAcceptedTaxon); |
475 | 471 |
|
476 |
|
|
477 | 472 |
//oldTaxonNode.delete(); |
478 | 473 |
return result; |
479 | 474 |
} |
475 |
|
|
480 | 476 |
@Override |
481 | 477 |
@Transactional(readOnly = false) |
482 | 478 |
public DeleteResult makeTaxonNodeSynonymsOfAnotherTaxonNode( Set<UUID> oldTaxonNodeUuids, |
... | ... | |
703 | 699 |
}catch(NullPointerException e){ |
704 | 700 |
result.setAbort(); |
705 | 701 |
result.addException(new Exception("The Taxon was already deleted.")); |
706 |
|
|
707 | 702 |
} |
708 | 703 |
|
709 |
|
|
710 | 704 |
TaxonNode parent = HibernateProxyHelper.deproxy(node.getParent(), TaxonNode.class); |
711 | 705 |
if (config == null){ |
712 | 706 |
config = new TaxonDeletionConfigurator(); |
713 | 707 |
} |
714 | 708 |
|
715 |
|
|
716 | 709 |
if (config.getTaxonNodeConfig().getChildHandling().equals(ChildHandling.MOVE_TO_PARENT)){ |
717 | 710 |
Object[] children = node.getChildNodes().toArray(); |
718 | 711 |
TaxonNode childNode; |
719 | 712 |
for (Object child: children){ |
720 | 713 |
childNode = (TaxonNode) child; |
721 | 714 |
parent.addChildNode(childNode, childNode.getReference(), childNode.getMicroReference()); |
722 |
|
|
723 | 715 |
} |
724 | 716 |
}else{ |
725 |
result.includeResult(deleteTaxonNodes(node.getChildNodes(), config)); |
|
717 |
DeleteResult tmpResult = deleteTaxonNodes(node.getChildNodes(), config); |
|
718 |
result.includeResult(tmpResult); |
|
726 | 719 |
} |
727 | 720 |
|
728 | 721 |
//remove node from DescriptiveDataSet |
729 | 722 |
commonService.getReferencingObjects(node).stream() |
730 |
.filter(obj->obj instanceof DescriptiveDataSet) |
|
731 |
.forEach(dataSet->{ |
|
732 |
((DescriptiveDataSet)dataSet).removeTaxonSubtree(node); |
|
733 |
dataSetService.saveOrUpdate((DescriptiveDataSet) dataSet); |
|
723 |
.filter(obj->obj instanceof DescriptiveDataSet)
|
|
724 |
.forEach(dataSet->{
|
|
725 |
((DescriptiveDataSet)dataSet).removeTaxonSubtree(node);
|
|
726 |
dataSetService.saveOrUpdate((DescriptiveDataSet) dataSet);
|
|
734 | 727 |
}); |
735 | 728 |
|
736 | 729 |
if (taxon != null){ |
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TermNodeServiceImpl.java | ||
---|---|---|
120 | 120 |
result.addUpdatedObject(parent); |
121 | 121 |
} |
122 | 122 |
if (config.isDeleteElement()){ |
123 |
DefinedTermBase term = node.getTerm(); |
|
123 |
DefinedTermBase<?> term = node.getTerm();
|
|
124 | 124 |
termService.delete(term.getUuid()); |
125 | 125 |
result.addDeletedObject(term); |
126 | 126 |
} |
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/TaxonNodeServiceImplTest.java | ||
---|---|---|
279 | 279 |
if (!result.getUpdatedObjects().iterator().hasNext()){ |
280 | 280 |
Assert.fail("Some updates must have taken place"); |
281 | 281 |
} |
282 |
assertEquals(3,result.getUpdatedObjects().size()); |
|
282 |
assertEquals(3, result.getUpdatedObjects().size());
|
|
283 | 283 |
assertNotNull("Old taxon should not have been deleted as it is referenced by key node", taxonService.find(t1Uuid)); |
284 | 284 |
assertNull("Old taxon node should not exist anymore", taxonNodeService.find(node1Uuid)); |
285 | 285 |
|
Also available in: Unified diff
cleanup