X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=portal-BE%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fportal%2Fservice%2Ffn%2FFnRoleService.java;h=cabefcc36b573e0b0918245be9493678cd6919d2;hb=refs%2Fchanges%2F29%2F97729%2F3;hp=539d4bdce2baab3150c920eda23e9b2cce63a5da;hpb=009040bc056dee5e26e43244422e8e0b9c47144a;p=portal.git diff --git a/portal-BE/src/main/java/org/onap/portal/service/fn/FnRoleService.java b/portal-BE/src/main/java/org/onap/portal/service/fn/FnRoleService.java index 539d4bdc..cabefcc3 100644 --- a/portal-BE/src/main/java/org/onap/portal/service/fn/FnRoleService.java +++ b/portal-BE/src/main/java/org/onap/portal/service/fn/FnRoleService.java @@ -40,9 +40,13 @@ package org.onap.portal.service.fn; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; import javax.persistence.EntityExistsException; import org.onap.portal.dao.fn.FnRoleDao; import org.onap.portal.domain.db.fn.FnRole; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -50,6 +54,9 @@ import org.springframework.transaction.annotation.Transactional; @Service @Transactional public class FnRoleService { + private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(FnRoleService.class); + + private final FnRoleDao fnRoleDao; @Autowired @@ -57,7 +64,32 @@ public class FnRoleService { this.fnRoleDao = fnRoleDao; } - public FnRole getById(final Long id){ + public FnRole getById(final Long id) { return fnRoleDao.findById(id).orElseThrow(EntityExistsException::new); } + + public FnRole getRole(final Long appId, final Long appRoleId) { + + String sql = "SELECT * FROM fn_role where APP_ID = :appId AND APP_ROLE_ID = :appRoleId"; + + List roles = Optional.of(fnRoleDao.retrieveAppRoleByAppRoleIdAndByAppId(appId, appRoleId)).orElse(new ArrayList<>()); + if (!roles.isEmpty()) { + logger.error(EELFLoggerDelegate.errorLogger, + String.format( + "search by appId=%s, appRoleid=%s should have returned 0 or 1 results. Got %d. This is an internal server error.", + appId, appRoleId, roles.size())); + logger.error(EELFLoggerDelegate.errorLogger, + "Trying to recover from duplicates by returning the first search result. This issue should be treated, it is probably not critical because duplicate roles should be similar."); + return roles.get(0); + } + return null; + } + + public List retrieveAppRoleByAppRoleIdAndByAppId(Long appId, Long appRoleId){ + return Optional.of(fnRoleDao.retrieveAppRoleByAppRoleIdAndByAppId(appId, appRoleId)).orElse(new ArrayList<>()); + } + + public List getUserRoleOnUserIdAndAppId(final Long userId, final Long appId) { + return Optional.of(fnRoleDao.getUserRoleOnUserIdAndAppId(userId, appId)).orElse(new ArrayList<>()); + } }