summaryrefslogtreecommitdiffstats
path: root/portal-BE/src/main
diff options
context:
space:
mode:
authorDominik Mizyn <d.mizyn@samsung.com>2019-10-07 13:10:38 +0200
committerDominik Mizyn <d.mizyn@samsung.com>2019-10-07 13:10:48 +0200
commit0cd9645a9dc83b9a5a2eddcc15cdfaf30fdade3a (patch)
treedb1efb7b735f1f94d97124e7a7e5aa4049ed6137 /portal-BE/src/main
parent26abc89a7ce21999cccd88b77cd2ecda21cbe905 (diff)
WidgetsController test coverage up
WidgetsController test coverage up Issue-ID: PORTAL-710 Change-Id: Ie2473ea00ac5cb569a9461060924427d5cceada0 Signed-off-by: Dominik Mizyn <d.mizyn@samsung.com>
Diffstat (limited to 'portal-BE/src/main')
-rw-r--r--portal-BE/src/main/java/org/onap/portal/aop/service/PersUserWidgetServiceAOP.java72
-rw-r--r--portal-BE/src/main/java/org/onap/portal/aop/service/WidgetServiceAOP.java5
-rw-r--r--portal-BE/src/main/java/org/onap/portal/controller/WidgetsController.java67
-rw-r--r--portal-BE/src/main/java/org/onap/portal/dao/fn/FnUserRoleDao.java58
-rw-r--r--portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpPersUserWidgetSel.java2
-rw-r--r--portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnUserRole.java15
-rw-r--r--portal-BE/src/main/java/org/onap/portal/domain/dto/transport/WidgetCatalogPersonalization.java3
-rw-r--r--portal-BE/src/main/java/org/onap/portal/service/PersUserWidgetService.java58
-rw-r--r--portal-BE/src/main/java/org/onap/portal/service/WidgetService.java28
-rw-r--r--portal-BE/src/main/java/org/onap/portal/service/fn/FnUserRoleService.java65
10 files changed, 277 insertions, 96 deletions
diff --git a/portal-BE/src/main/java/org/onap/portal/aop/service/PersUserWidgetServiceAOP.java b/portal-BE/src/main/java/org/onap/portal/aop/service/PersUserWidgetServiceAOP.java
new file mode 100644
index 00000000..79326618
--- /dev/null
+++ b/portal-BE/src/main/java/org/onap/portal/aop/service/PersUserWidgetServiceAOP.java
@@ -0,0 +1,72 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ============LICENSE_END============================================
+ *
+ *
+ */
+
+package org.onap.portal.aop.service;
+
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.onap.portal.domain.db.fn.FnUser;
+import org.onap.portal.domain.dto.transport.WidgetCatalogPersonalization;
+import org.onap.portal.validation.DataValidator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Aspect
+@Component
+public class PersUserWidgetServiceAOP {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(PersUserWidgetServiceAOP.class);
+
+ private final DataValidator dataValidator;
+
+ @Autowired
+ public PersUserWidgetServiceAOP(DataValidator dataValidator) {
+ this.dataValidator = dataValidator;
+ }
+
+ @Before("execution(* org.onap.portal.service.PersUserWidgetService.setPersUserAppValue(..)) && args(user, personalization)")
+ public void setOnboardingWidget(FnUser user, WidgetCatalogPersonalization personalization) {
+ if (!dataValidator.isValid(personalization)) {
+ throw new IllegalArgumentException(dataValidator.getConstraintViolationsString(personalization));
+ }
+ }
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/aop/service/WidgetServiceAOP.java b/portal-BE/src/main/java/org/onap/portal/aop/service/WidgetServiceAOP.java
index cc168578..14172937 100644
--- a/portal-BE/src/main/java/org/onap/portal/aop/service/WidgetServiceAOP.java
+++ b/portal-BE/src/main/java/org/onap/portal/aop/service/WidgetServiceAOP.java
@@ -2,7 +2,6 @@ package org.onap.portal.aop.service;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
-import org.onap.portal.domain.db.fn.FnUser;
import org.onap.portal.domain.dto.transport.OnboardingWidget;
import org.onap.portal.validation.DataValidator;
import org.slf4j.Logger;
@@ -24,8 +23,8 @@ public class WidgetServiceAOP {
this.dataValidator = dataValidator;
}
- @Before("execution(* org.onap.portal.service.WidgetService.setOnboardingWidget(..)) && args(fnUser, onboardingWidget)")
- public void setOnboardingWidget(final FnUser fnUser, OnboardingWidget onboardingWidget) {
+ @Before("execution(* org.onap.portal.service.WidgetService.setOnboardingWidget(..)) && args(userId, onboardingWidget)")
+ public void setOnboardingWidget(final Long userId, OnboardingWidget onboardingWidget) {
if (!dataValidator.isValid(onboardingWidget)) {
throw new IllegalArgumentException(dataValidator.getConstraintViolationsString(onboardingWidget));
}
diff --git a/portal-BE/src/main/java/org/onap/portal/controller/WidgetsController.java b/portal-BE/src/main/java/org/onap/portal/controller/WidgetsController.java
index 571cbc13..556c7ef3 100644
--- a/portal-BE/src/main/java/org/onap/portal/controller/WidgetsController.java
+++ b/portal-BE/src/main/java/org/onap/portal/controller/WidgetsController.java
@@ -49,7 +49,6 @@ import org.onap.portal.domain.db.fn.FnUser;
import org.onap.portal.domain.dto.transport.FieldsValidator;
import org.onap.portal.domain.dto.transport.OnboardingWidget;
import org.onap.portal.domain.dto.transport.WidgetCatalogPersonalization;
-import org.onap.portal.exception.NotValidDataException;
import org.onap.portal.logging.aop.EPAuditLog;
import org.onap.portal.service.AdminRolesService;
import org.onap.portal.service.PersUserWidgetService;
@@ -128,7 +127,7 @@ public class WidgetsController {
onboardingWidget.setId(widgetId);
onboardingWidget.normalize();
try {
- fieldsValidator = widgetService.setOnboardingWidget(user, onboardingWidget);
+ fieldsValidator = widgetService.setOnboardingWidget(user.getUserId(), onboardingWidget);
response.setStatus(fieldsValidator.getHttpStatusCode().intValue());
} catch (IllegalArgumentException e) {
fieldsValidator = new FieldsValidator();
@@ -143,37 +142,25 @@ public class WidgetsController {
return fieldsValidator;
}
- private boolean userHasPermissions(FnUser user, HttpServletResponse response, String invocator) {
- if (!adminRolesService.isSuperAdmin(user) && !adminRolesService.isAccountAdmin(user)) {
- EcompPortalUtils.setBadPermissions(user, response, invocator);
- return false;
- }
- return true;
- }
-
@PostMapping(value = {"/portalApi/widgets"}, produces = MediaType.APPLICATION_JSON_VALUE)
+ @PreAuthorize("hasRole('System_Administrator') and hasRole('Account_Administrator')")
public FieldsValidator postOnboardingWidget(Principal principal, HttpServletResponse response,
@RequestBody OnboardingWidget onboardingWidget) {
FnUser user = fnUserService.loadUserByUsername(principal.getName());
- FieldsValidator fieldsValidator = new FieldsValidator();
+ FieldsValidator fieldsValidator;
- if (onboardingWidget != null) {
- if (!dataValidator.isValid(onboardingWidget)) {
- fieldsValidator.setHttpStatusCode((long) HttpServletResponse.SC_NOT_ACCEPTABLE);
- return fieldsValidator;
- }
- }
+ onboardingWidget.setId(null);
+ onboardingWidget.normalize();
- if (userHasPermissions(user, response, "postOnboardingWidget")) {
- onboardingWidget.setId(null);
- onboardingWidget.normalize();
- try {
- fieldsValidator = widgetService.setOnboardingWidget(user, onboardingWidget);
- } catch (Exception e) {
- fieldsValidator.setHttpStatusCode((long) HttpServletResponse.SC_BAD_REQUEST);
- }
- response.setStatus(fieldsValidator.getHttpStatusCode().intValue());
+ try {
+ fieldsValidator = widgetService.setOnboardingWidget(user.getUserId(), onboardingWidget);
+ } catch (IllegalArgumentException e) {
+ fieldsValidator = new FieldsValidator();
+ fieldsValidator.setHttpStatusCode((long) HttpServletResponse.SC_NOT_ACCEPTABLE);
+ fieldsValidator.addProblematicFieldName(e.getMessage());
+ return fieldsValidator;
}
+ response.setStatus(fieldsValidator.getHttpStatusCode().intValue());
EcompPortalUtils
.logAndSerializeObject(logger, "/portalApi/widgets", "POST result =", response.getStatus());
@@ -181,15 +168,14 @@ public class WidgetsController {
}
@DeleteMapping(value = {"/portalApi/widgets/{widgetId}"}, produces = MediaType.APPLICATION_JSON_VALUE)
+ @PreAuthorize("hasRole('System_Administrator') and hasRole('Account_Administrator')")
public FieldsValidator deleteOnboardingWidget(Principal principal, HttpServletResponse response,
@PathVariable("widgetId") Long widgetId) {
FnUser user = fnUserService.loadUserByUsername(principal.getName());
- FieldsValidator fieldsValidator = null;
+ FieldsValidator fieldsValidator;
- if (userHasPermissions(user, response, "deleteOnboardingWidget")) {
- fieldsValidator = widgetService.deleteOnboardingWidget(user, widgetId);
- response.setStatus(fieldsValidator.getHttpStatusCode().intValue());
- }
+ fieldsValidator = widgetService.deleteOnboardingWidget(user, widgetId);
+ response.setStatus(fieldsValidator.getHttpStatusCode().intValue());
EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/widgets/" + widgetId, "DELETE result =",
response.getStatus());
@@ -202,23 +188,16 @@ public class WidgetsController {
FieldsValidator result = new FieldsValidator();
FnUser user = fnUserService.loadUserByUsername(principal.getName());
- if (persRequest != null) {
- if (!dataValidator.isValid(persRequest)) {
- result.setHttpStatusCode((long) HttpServletResponse.SC_NOT_ACCEPTABLE);
- return result;
- }
- }
try {
assert persRequest != null;
- if (persRequest.getWidgetId() == null || user == null) {
- EcompPortalUtils.setBadPermissions(user, response, "putWidgetCatalogSelection");
- } else {
- persUserWidgetService
- .setPersUserAppValue(user, persRequest.getWidgetId(), persRequest.getSelect());
- }
+ persUserWidgetService
+ .setPersUserAppValue(user, persRequest);
+ } catch (IllegalArgumentException iae) {
+ logger.error(EELFLoggerDelegate.errorLogger, "Failed in putAppCatalogSelection", iae);
+ response.sendError(HttpServletResponse.SC_NOT_ACCEPTABLE, iae.getMessage());
} catch (Exception e) {
logger.error(EELFLoggerDelegate.errorLogger, "Failed in putAppCatalogSelection", e);
- response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.toString());
+ response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
}
result.setHttpStatusCode((long) HttpServletResponse.SC_OK);
return result;
diff --git a/portal-BE/src/main/java/org/onap/portal/dao/fn/FnUserRoleDao.java b/portal-BE/src/main/java/org/onap/portal/dao/fn/FnUserRoleDao.java
new file mode 100644
index 00000000..ee1ebdd0
--- /dev/null
+++ b/portal-BE/src/main/java/org/onap/portal/dao/fn/FnUserRoleDao.java
@@ -0,0 +1,58 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ============LICENSE_END============================================
+ *
+ *
+ */
+
+package org.onap.portal.dao.fn;
+
+import java.util.List;
+import java.util.Optional;
+import org.onap.portal.domain.db.fn.FnUserRole;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+@Repository
+@Transactional
+public interface FnUserRoleDao extends JpaRepository<FnUserRole, Long> {
+
+ @Query
+ Optional<List<FnUserRole>> getAdminUserRoles(final @Param("USERID") Long userId, final @Param("ROLEID") Long roleId, final @Param("APPID") Long appId);
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpPersUserWidgetSel.java b/portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpPersUserWidgetSel.java
index 9cee72a3..4b2785f1 100644
--- a/portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpPersUserWidgetSel.java
+++ b/portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpPersUserWidgetSel.java
@@ -82,7 +82,7 @@ CREATE TABLE `ep_pers_user_widget_sel` (
@NamedQueries({
@NamedQuery(
name = "EpPersUserWidgetSel.getEpPersUserWidgetSelForUserIdAndWidgetId",
- query = "FROM EpPersUserWidgetSel WHERE userId = :USERID and widgetId = :WIDGETID")
+ query = "FROM EpPersUserWidgetSel WHERE userId.userId = :USERID and widgetId.widgetId = :WIDGETID")
})
@Table(name = "ep_pers_user_widget_sel", uniqueConstraints = {
@UniqueConstraint(columnNames = {"user_id", "widget_id"})
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnUserRole.java b/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnUserRole.java
index 390ef8b4..4e783764 100644
--- a/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnUserRole.java
+++ b/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnUserRole.java
@@ -53,6 +53,8 @@ import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedNativeQueries;
import javax.persistence.NamedNativeQuery;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
@@ -82,16 +84,25 @@ CREATE TABLE `fn_user_role` (
@NamedNativeQueries({
@NamedNativeQuery(
name = "FnUserRole.retrieveUserRoleOnUserIdAndRoleIdAndAppId",
- query = "select * from FnUserRole where user_id= :userId"
+ query = "FROM FnUserRole where user_id= :userId"
+ " and role_id= :roleId"
+ " and app_id= :appId"),
@NamedNativeQuery(
name = "FnUserRole.retrieveCachedAppRolesForUser",
- query = "select * from FnUserRole where user_id= :userId"
+ query = "FROM FnUserRole where user_id= :userId"
+ " and user_id= :userId"
+ " and app_id= :appId")
})
+@NamedQueries({
+ @NamedQuery(
+ name = "FnUserRole.getAdminUserRoles",
+ query = "FROM FnUserRole fn "
+ + "WHERE fn.userId.userId = :USERID "
+ + "AND fn.roleId.roleId = :ROLEID "
+ + "AND fn.appId.appId = :APPID")
+})
+
@Table(
name = "fn_user_role",
indexes = {
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/transport/WidgetCatalogPersonalization.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/transport/WidgetCatalogPersonalization.java
index b9e54bfc..d9053f03 100644
--- a/portal-BE/src/main/java/org/onap/portal/domain/dto/transport/WidgetCatalogPersonalization.java
+++ b/portal-BE/src/main/java/org/onap/portal/domain/dto/transport/WidgetCatalogPersonalization.java
@@ -40,6 +40,7 @@
package org.onap.portal.domain.dto.transport;
+import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
@@ -51,7 +52,9 @@ import lombok.Setter;
@AllArgsConstructor
public class WidgetCatalogPersonalization {
+ @NotNull
private Long widgetId;
+ @NotNull
private Boolean select;
}
diff --git a/portal-BE/src/main/java/org/onap/portal/service/PersUserWidgetService.java b/portal-BE/src/main/java/org/onap/portal/service/PersUserWidgetService.java
index 364085c4..38a0a408 100644
--- a/portal-BE/src/main/java/org/onap/portal/service/PersUserWidgetService.java
+++ b/portal-BE/src/main/java/org/onap/portal/service/PersUserWidgetService.java
@@ -46,14 +46,22 @@ import java.util.stream.Collectors;
import org.onap.portal.dao.ep.EpPersUserWidgetSelDao;
import org.onap.portal.dao.fn.EpWidgetCatalogDao;
import org.onap.portal.domain.db.ep.EpPersUserWidgetSel;
+import org.onap.portal.domain.db.ep.EpWidgetCatalog;
import org.onap.portal.domain.db.fn.FnUser;
import org.onap.portal.domain.dto.ecomp.PersUserWidgetSelection;
+import org.onap.portal.domain.dto.transport.WidgetCatalogPersonalization;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
@Service
+@Transactional
public class PersUserWidgetService {
+ private static final Logger LOGGER = LoggerFactory.getLogger(PersUserWidgetService.class);
private final EpPersUserWidgetSelDao epPersUserWidgetSelDao;
private final EpWidgetCatalogDao epWidgetCatalogDao;
@@ -64,44 +72,36 @@ public class PersUserWidgetService {
this.epWidgetCatalogDao = epWidgetCatalogDao;
}
- public void setPersUserAppValue(FnUser user, Long widgetId, Boolean select) {
- if (user == null || widgetId == null) {
- throw new IllegalArgumentException("setPersUserAppValue: Null values");
- }
-
- List<PersUserWidgetSelection> persList = getUserWidgetSelction(user, widgetId);
+ public void setPersUserAppValue(FnUser user, WidgetCatalogPersonalization personalization) {
+ List<PersUserWidgetSelection> persList = getUserWidgetSelction(user, personalization.getWidgetId());
+ LOGGER.info("Error: " + persList.size());
// Key constraint limits to 1 row
- PersUserWidgetSelection persRow = null;
+ PersUserWidgetSelection persRow;
if (persList.size() == 1) {
persRow = persList.get(0);
} else {
- persRow = new PersUserWidgetSelection(null, user.getId(), widgetId, null);
+ persRow = new PersUserWidgetSelection(null, user.getUserId(), personalization.getWidgetId(), null);
}
- if (select) {
- if (persRow.getId() != null) {
- epPersUserWidgetSelDao.deleteById(persRow.getId());
- }
- persRow.setStatusCode("S"); // show
- EpPersUserWidgetSel epPersUserWidgetSel = new EpPersUserWidgetSel();
- epPersUserWidgetSel.setUserId(user);
- epPersUserWidgetSel.setWidgetId(epWidgetCatalogDao.findById(widgetId).get());
- epPersUserWidgetSelDao.saveAndFlush(epPersUserWidgetSel);
- } else {
- if (persRow.getId() != null) {
- epPersUserWidgetSelDao.deleteById(persRow.getId());
- }
- persRow.setStatusCode("H"); // Hide
- EpPersUserWidgetSel epPersUserWidgetSel = new EpPersUserWidgetSel();
- epPersUserWidgetSel.setUserId(user);
- epPersUserWidgetSel.setWidgetId(epWidgetCatalogDao.findById(widgetId).get());
- epPersUserWidgetSelDao.saveAndFlush(epPersUserWidgetSel);
+
+ if (persRow.getId() != null) {
+ epPersUserWidgetSelDao.deleteById(persRow.getId());
}
+
+ persRow.setStatusCode(personalization.getSelect() ? "S" : "H"); // Show / Hide
+ EpPersUserWidgetSel epPersUserWidgetSel = new EpPersUserWidgetSel();
+ epPersUserWidgetSel.setUserId(user);
+ epPersUserWidgetSel.setWidgetId(
+ epWidgetCatalogDao.findById(personalization.getWidgetId()).orElse(new EpWidgetCatalog()));
+ epPersUserWidgetSelDao.saveAndFlush(epPersUserWidgetSel);
}
private List<PersUserWidgetSelection> getUserWidgetSelction(FnUser user, Long widgetId) {
- return epPersUserWidgetSelDao.getEpPersUserWidgetSelForUserIdAndWidgetId(user.getId(), widgetId)
- .orElse(new ArrayList<>()).stream().map(
- this::epPersUserWidgetSelToPersUserWidgetSelection).collect(Collectors.toList());
+ return epPersUserWidgetSelDao
+ .getEpPersUserWidgetSelForUserIdAndWidgetId(user.getId(), widgetId)
+ .orElse(new ArrayList<>())
+ .stream()
+ .map(this::epPersUserWidgetSelToPersUserWidgetSelection)
+ .collect(Collectors.toList());
}
private PersUserWidgetSelection epPersUserWidgetSelToPersUserWidgetSelection(EpPersUserWidgetSel widgetSel) {
diff --git a/portal-BE/src/main/java/org/onap/portal/service/WidgetService.java b/portal-BE/src/main/java/org/onap/portal/service/WidgetService.java
index 90d6ab78..ba5deaa4 100644
--- a/portal-BE/src/main/java/org/onap/portal/service/WidgetService.java
+++ b/portal-BE/src/main/java/org/onap/portal/service/WidgetService.java
@@ -44,14 +44,14 @@ import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import javax.servlet.http.HttpServletResponse;
-import javax.validation.constraints.NotNull;
import org.onap.portal.dao.fn.FnWidgetDao;
import org.onap.portal.domain.db.fn.FnUser;
+import org.onap.portal.domain.db.fn.FnUserRole;
import org.onap.portal.domain.db.fn.FnWidget;
import org.onap.portal.domain.dto.ecomp.EPUserApp;
-import org.onap.portal.domain.dto.ecomp.Widget;
import org.onap.portal.domain.dto.transport.FieldsValidator;
import org.onap.portal.domain.dto.transport.OnboardingWidget;
+import org.onap.portal.service.fn.FnUserRoleService;
import org.onap.portal.utils.EPCommonSystemProperties;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.springframework.beans.factory.annotation.Autowired;
@@ -82,13 +82,15 @@ public class WidgetService {
private final AdminRolesService adminRolesService;
private final EntityManager entityManager;
private final FnWidgetDao fnWidgetDao;
+ private final FnUserRoleService fnUserRoleService;
@Autowired
public WidgetService(final AdminRolesService adminRolesService, final EntityManager entityManager,
- final FnWidgetDao fnWidgetDao) {
+ final FnWidgetDao fnWidgetDao, FnUserRoleService fnUserRoleService) {
this.adminRolesService = adminRolesService;
this.entityManager = entityManager;
this.fnWidgetDao = fnWidgetDao;
+ this.fnUserRoleService = fnUserRoleService;
}
private static final Object syncRests = new Object();
@@ -127,8 +129,8 @@ public class WidgetService {
}
@PreAuthorize("hasRole('System_Administrator')")
- public FieldsValidator setOnboardingWidget(final FnUser user, final OnboardingWidget onboardingWidget) {
- return this.updateOrSaveWidget(true, user.getId(), onboardingWidget);
+ public FieldsValidator setOnboardingWidget(final Long userId, final OnboardingWidget onboardingWidget) {
+ return this.updateOrSaveWidget(true, userId, onboardingWidget);
}
private FieldsValidator updateOrSaveWidget(boolean superAdmin, Long userId, OnboardingWidget onboardingWidget) {
@@ -157,22 +159,14 @@ public class WidgetService {
private boolean isUserAdminOfAppForWidget(boolean superAdmin, Long userId, Long appId) {
if (!superAdmin) {
- List<EPUserApp> userRoles = getAdminUserRoles(userId, appId);
+ List<FnUserRole> userRoles = getAdminUserRoles(userId, appId);
return (userRoles.size() > 0);
}
return true;
}
- private List<EPUserApp> getAdminUserRoles(Long userId, Long appId) {
- return entityManager.createQuery(
- "SELECT new org.onap.portal.domain.dto.ecomp.EPUserApp(fn.userId, fn.roleId, fn.appId) FROM FnUserRole fn"
- + "WHERE fn.userId = :USERID "
- + "AND fn.roleId = :ROLEID "
- + "AND fn.appId = :APPID", EPUserApp.class)
- .setParameter("USERID", userId)
- .setParameter("ROLEID", ACCOUNT_ADMIN_ROLE_ID)
- .setParameter("APPID", appId)
- .getResultList();
+ private List<FnUserRole> getAdminUserRoles(Long userId, Long appId) {
+ return fnUserRoleService.getAdminUserRoles(userId, ACCOUNT_ADMIN_ROLE_ID, appId);
}
private void applyOnboardingWidget(OnboardingWidget onboardingWidget, FieldsValidator fieldsValidator) {
@@ -238,7 +232,7 @@ public class WidgetService {
synchronized (syncRests) {
FnWidget widget = fnWidgetDao.getOne(onboardingWidgetId);
if (widget != null && widget.getAppId() != null) { // widget exists
- if (!this.isUserAdminOfAppForWidget(adminRolesService.isSuperAdmin(user), user.getId(),
+ if (!this.isUserAdminOfAppForWidget(adminRolesService.isSuperAdmin(user), user.getUserId(),
widget.getAppId())) {
fieldsValidator.setHttpStatusCode((long) HttpServletResponse.SC_FORBIDDEN);
} else {
diff --git a/portal-BE/src/main/java/org/onap/portal/service/fn/FnUserRoleService.java b/portal-BE/src/main/java/org/onap/portal/service/fn/FnUserRoleService.java
new file mode 100644
index 00000000..4b24f9f3
--- /dev/null
+++ b/portal-BE/src/main/java/org/onap/portal/service/fn/FnUserRoleService.java
@@ -0,0 +1,65 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ============LICENSE_END============================================
+ *
+ *
+ */
+
+package org.onap.portal.service.fn;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.onap.portal.dao.fn.FnUserRoleDao;
+import org.onap.portal.domain.db.fn.FnUserRole;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@Transactional
+public class FnUserRoleService {
+
+ private final FnUserRoleDao fnUserRoleDao;
+
+ @Autowired
+ public FnUserRoleService(FnUserRoleDao fnUserRoleDao) {
+ this.fnUserRoleDao = fnUserRoleDao;
+ }
+
+ public List<FnUserRole> getAdminUserRoles(final Long userId, final Long roleId, final Long appId) {
+ return fnUserRoleDao.getAdminUserRoles(userId, roleId, appId).orElse(new ArrayList<>());
+ }
+}