Search in sources :

Example 31 with Link

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);
}
Also used : XmEntity(com.icthh.xm.ms.entity.domain.XmEntity) Link(com.icthh.xm.ms.entity.domain.Link)

Example 32 with Link

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());
}
Also used : Link(com.icthh.xm.ms.entity.domain.Link) TypeSpec(com.icthh.xm.ms.entity.domain.spec.TypeSpec)

Aggregations

Link (com.icthh.xm.ms.entity.domain.Link)32 XmEntity (com.icthh.xm.ms.entity.domain.XmEntity)20 Test (org.junit.Test)19 SpringBootTest (org.springframework.boot.test.context.SpringBootTest)19 Transactional (org.springframework.transaction.annotation.Transactional)16 LogicExtensionPoint (com.icthh.xm.commons.lep.LogicExtensionPoint)3 WithMockUser (org.springframework.security.test.context.support.WithMockUser)3 Timed (com.codahale.metrics.annotation.Timed)2 BusinessException (com.icthh.xm.commons.exceptions.BusinessException)2 Attachment (com.icthh.xm.ms.entity.domain.Attachment)2 SneakyThrows (lombok.SneakyThrows)2 HttpHeaders (org.springframework.http.HttpHeaders)2 ResponseEntity (org.springframework.http.ResponseEntity)2 MvcResult (org.springframework.test.web.servlet.MvcResult)2 GetMapping (org.springframework.web.bind.annotation.GetMapping)2 Calendar (com.icthh.xm.ms.entity.domain.Calendar)1 Comment (com.icthh.xm.ms.entity.domain.Comment)1 Location (com.icthh.xm.ms.entity.domain.Location)1 Rating (com.icthh.xm.ms.entity.domain.Rating)1 Tag (com.icthh.xm.ms.entity.domain.Tag)1