use of com.icthh.xm.ms.entity.domain.Link in project xm-ms-entity by xm-online.
the class XmEntityServiceImpl method deleteNewLink.
private void deleteNewLink(Link linkToDelete) {
XmEntity entity = linkToDelete.getTarget();
entity.getSources().remove(linkToDelete);
for (Link sourceLink : nullSafe(entity.getSources())) {
if (!sourceLink.linkFromSameEntity(linkToDelete)) {
log.warn("Entity {} has links from other entity(ies), so deletion of this entity will be ignored in cascade deletion.", entity);
return;
}
}
deleteXmEntity(entity);
}
use of com.icthh.xm.ms.entity.domain.Link in project xm-ms-entity by xm-online.
the class XmEntityServiceImpl method deleteXmEntity.
private void deleteXmEntity(XmEntity xmEntity) {
TypeSpec spec = xmEntitySpecService.findTypeByKey(xmEntity.getTypeKey());
Map<String, String> linkSpec = ofNullable(spec).map(TypeSpec::getLinks).orElse(emptyList()).stream().collect(toMap(LinkSpec::getKey, LinkSpec::getBuilderType));
Iterator<Link> iterator = nullSafe(xmEntity.getTargets()).iterator();
while (iterator.hasNext()) {
Link target = iterator.next();
iterator.remove();
linkService.delete(target.getId());
if (NEW_BUILDER_TYPE.equalsIgnoreCase(linkSpec.get(target.getTypeKey()))) {
deleteNewLink(target);
} else if (!SEARCH_BUILDER_TYPE.equals(linkSpec.get(target.getTypeKey()))) {
log.warn("Unknown link builder type |{}| for link type {}", linkSpec.get(target.getTypeKey()), target.getTypeKey());
}
}
xmEntityRepository.delete(xmEntity.getId());
xmEntitySearchRepository.delete(xmEntity.getId());
}
Aggregations