@Override public boolean isAffinityGroupAvailableInDomain(long affinityGroupId, long domainId) { Long groupDomainId = null; AffinityGroupDomainMapVO domainMap = _affinityGroupDomainMapDao.findByAffinityGroup(affinityGroupId); if (domainMap == null) { return false; } else { groupDomainId = domainMap.getDomainId(); } if (domainId == groupDomainId.longValue()) { return true; } if (domainMap.subdomainAccess) { Set<Long> parentDomains = _domainMgr.getDomainParentIds(domainId); if (parentDomains.contains(groupDomainId)) { return true; } } return false; }
@Override public void doInTransactionWithoutResult(TransactionStatus status) { AffinityGroupVO group = _affinityGroupDao.lockRow(affinityGroupId, true); if (group == null) { throw new InvalidParameterValueException("Unable to find affinity group by id " + affinityGroupId); } List<AffinityGroupVMMapVO> affinityGroupVmMap = _affinityGroupVMMapDao.listByAffinityGroup(affinityGroupId); if (!affinityGroupVmMap.isEmpty()) { SearchBuilder<AffinityGroupVMMapVO> listByAffinityGroup = _affinityGroupVMMapDao.createSearchBuilder(); listByAffinityGroup.and("affinityGroupId", listByAffinityGroup.entity().getAffinityGroupId(), SearchCriteria.Op.EQ); listByAffinityGroup.done(); SearchCriteria<AffinityGroupVMMapVO> sc = listByAffinityGroup.create(); sc.setParameters("affinityGroupId", affinityGroupId); _affinityGroupVMMapDao.lockRows(sc, null, true); _affinityGroupVMMapDao.remove(sc); } // call processor to handle the group delete AffinityGroupProcessor processor = getAffinityGroupProcessorForType(group.getType()); if (processor != null) { processor.handleDeleteGroup(group); } if(_affinityGroupDao.expunge(affinityGroupId)){ AffinityGroupDomainMapVO groupDomain = _affinityGroupDomainMapDao .findByAffinityGroup(affinityGroupId); if (groupDomain != null) { _affinityGroupDomainMapDao.remove(groupDomain.getId()); } } } });