import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
+import java.util.Set;
import javax.persistence.EntityExistsException;
+import javax.print.attribute.standard.Fidelity;
import org.onap.portal.dao.fn.FnRoleDao;
import org.onap.portal.domain.db.fn.FnRole;
+import org.onap.portal.service.ExternalAccessRolesService;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
@Transactional
public class FnRoleService {
- private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(FnRoleService.class);
+ private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(FnRoleService.class);
- private final FnRoleDao fnRoleDao;
- @Autowired
- public FnRoleService(FnRoleDao fnRoleDao) {
- this.fnRoleDao = fnRoleDao;
- }
+ private final FnRoleDao fnRoleDao;
- public FnRole getById(final Long id) {
- return fnRoleDao.findById(id).orElseThrow(EntityExistsException::new);
- }
+ @Autowired
+ public FnRoleService(FnRoleDao fnRoleDao) {
+ this.fnRoleDao = fnRoleDao;
+ }
- public FnRole getRole(final Long appId, final Long appRoleId) {
+ public FnRole getById(final Long id) {
+ return fnRoleDao.findById(id).orElseThrow(EntityExistsException::new);
+ }
- String sql = "SELECT * FROM fn_role where APP_ID = :appId AND APP_ROLE_ID = :appRoleId";
+ public FnRole getRole(final Long appId, final Long appRoleId) {
+ List<FnRole> 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;
+ }
- List<FnRole> 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<FnRole> getAppRoles(Long appId) {
+ List<FnRole> applicationRoles;
+ try {
+ if (appId == 1) {
+ applicationRoles = retrieveAppRolesWhereAppIdIsNull();
+ } else {
+ applicationRoles = retrieveAppRolesByAppId(appId);
+ }
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger, "getAppRoles: failed", e);
+ throw e;
+ }
+ return applicationRoles;
+ }
+
+ public List<FnRole> retrieveAppRoleByAppRoleIdAndByAppId(final Long appId, final Long appRoleId) {
+ return Optional.of(fnRoleDao.retrieveAppRoleByAppRoleIdAndByAppId(appId, appRoleId)).orElse(new ArrayList<>());
+ }
+
+ public List<FnRole> getUserRoleOnUserIdAndAppId(final Long userId, final Long appId) {
+ return Optional.of(fnRoleDao.getUserRoleOnUserIdAndAppId(userId, appId)).orElse(new ArrayList<>());
+ }
+
+ public List<FnRole> retrieveAppRoleByRoleIdWhereAppIdIsNull(final Long roleId) {
+ return Optional.of(fnRoleDao.retrieveAppRoleByRoleIdWhereAppIdIsNull(roleId)).orElse(new ArrayList<>());
+ }
+
+ public List<FnRole> retrieveAppRolesWhereAppIdIsNull() {
+ return Optional.of(fnRoleDao.retrieveAppRolesWhereAppIdIsNull()).orElse(new ArrayList<>());
+ }
+
+ public List<FnRole> retrieveAppRolesByAppId(final Long id) {
+ return Optional.of(fnRoleDao.retrieveAppRolesByAppId(id)).orElse(new ArrayList<>());
+ }
+
+ public List<FnRole> retrieveAppRolesByRoleNameAndByAppId(final String roleName, final Long appId) {
+ return Optional.of(fnRoleDao.retrieveAppRolesByRoleNameAndByAppId(roleName, appId)).orElse(new ArrayList<>());
+ }
+
+ public List<FnRole> retrieveActiveRolesOfApplication(final Long appId) {
+ return Optional.of(fnRoleDao.retrieveActiveRolesOfApplication(appId)).orElse(new ArrayList<>());
+ }
+
+ public List<FnRole> getGlobalRolesOfPortal() {
+ List<FnRole> globalRoles = new ArrayList<>();
+ try {
+ globalRoles = Optional.of(fnRoleDao.getGlobalRolesOfPortal()).orElse(new ArrayList<>());
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger, "getGlobalRolesOfPortal failed", e);
+ }
+ return globalRoles;
+ }
+
+ public void delete(FnRole role) {
+ fnRoleDao.delete(role);
+ }
+
+ public FnRole saveOne(final FnRole role){
+ return fnRoleDao.save(role);
+ }
}