getAppRolesForUser() method up in UserRolesController
[portal.git] / portal-BE / src / main / java / org / onap / portal / service / ep / EpAppFunctionService.java
index b3691fc..012983d 100644 (file)
 
 package org.onap.portal.service.ep;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
+import java.util.function.Function;
+import java.util.function.Predicate;
+import java.util.stream.Collectors;
 import org.onap.portal.dao.ep.EpAppFunctionDao;
 import org.onap.portal.domain.db.ep.EpAppFunction;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -57,6 +62,18 @@ public class EpAppFunctionService {
   }
 
   public List<EpAppFunction> getAppRoleFunctionList(final Long roleId, final Long appId) {
-    return epAppFunctionDao.getAppRoleFunctionList(roleId, appId);
+
+    return Optional.of(epAppFunctionDao.getAppRoleFunctionList(roleId, appId))
+        .orElse(new ArrayList<>())
+        .stream()
+        .filter(distinctByKey(EpAppFunction::getAppId))
+        .filter(distinctByKey(EpAppFunction::getFunctionCd))
+        .filter(distinctByKey(EpAppFunction::getFunctionName))
+        .collect(Collectors.toList());
+  }
+
+  private <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
+    List<Object> seen = new ArrayList<>();
+    return t -> seen.add(keyExtractor.apply(t));
   }
 }