protected void removeManagedLinkAndDeleteIfNotManagedByAnyoneElse(IPResourceService resourceService, ChangesContext changes, IPResource managedResource, IPResource... removeLinksFrom) { List<? extends IPResource> fromResources = resourceService.linkFindAllByLinkTypeAndToResource(LinkTypeConstants.MANAGES, managedResource); logger.debug("Resource {} is managed by {} other resources", managedResource, fromResources.size()); // Remove the managed links int removedLinks = 0; List<Long> removeLinksFromIds = Arrays.asList(removeLinksFrom).stream().map(IPResource::getInternalId).collect(Collectors.toList()); for (IPResource fromResource : fromResources) { if (removeLinksFromIds.contains(fromResource.getInternalId())) { ++removedLinks; changes.linkDelete(fromResource, LinkTypeConstants.MANAGES, managedResource); } } logger.debug("Resource {} is now managed by {} other resources", managedResource, fromResources.size() - removedLinks); // All managed links removed and not manually edited-> Delete the resource if (fromResources.size() - removedLinks == 0 && managedResource.getResourceEditorName() == null) { changes.resourceDelete(managedResource.getInternalId()); } }
List<? extends IPResource> managers = resourceService.linkFindAllByLinkTypeAndToResource(LinkTypeConstants.MANAGES, createdOrFoundNeededManagedResource); if (managers.size() > 1) { throw new IllegalUpdateException("The resource " + createdOrFoundNeededManagedResource.getResourceName() + " of type " + createdOrFoundNeededManagedResource.getClass()
List<? extends IPResource> managers = resourceService.linkFindAllByLinkTypeAndToResource(LinkTypeConstants.MANAGES, desiredManagedResource); if (managers.size() > 1) { throw new IllegalUpdateException( previousLinks = Collections.emptyList(); } else { previousLinks = resourceService.linkFindAllByLinkTypeAndToResource(linkType, desiredManagedResource);