This is an automated email from the ASF dual-hosted git repository.

ofuks pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git


The following commit(s) were added to refs/heads/develop by this push:
     new 2f618ac  [DLAB-1801] Conveyed the list of buckets to the 'List of 
report' page
2f618ac is described below

commit 2f618acbcbfbd169b35fa6008e8ae3210f190964
Author: Oleh Fuks <olegfuk...@gmail.com>
AuthorDate: Wed May 13 15:08:24 2020 +0300

    [DLAB-1801] Conveyed the list of buckets to the 'List of report' page
---
 .../epam/dlab/backendapi/dao/ExploratoryDAO.java   |  4 +-
 .../impl/InfrastructureInfoServiceImpl.java        | 60 +++++++++++-----------
 2 files changed, 33 insertions(+), 31 deletions(-)

diff --git 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ExploratoryDAO.java
 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ExploratoryDAO.java
index fc44569..8c5a7ce 100644
--- 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ExploratoryDAO.java
+++ 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ExploratoryDAO.java
@@ -113,8 +113,8 @@ public class ExploratoryDAO extends BaseDAO {
         * @param user name
         * @return list of user resources
         */
-       public Iterable<Document> findExploratory(String user) {
-               return find(USER_INSTANCES, eq(USER, user),
+       public Iterable<Document> findExploratories(String user, String 
project) {
+               return find(USER_INSTANCES, and(eq(USER, user), eq(PROJECT, 
project)),
                                
fields(exclude(ExploratoryLibDAO.EXPLORATORY_LIBS, 
ExploratoryLibDAO.COMPUTATIONAL_LIBS, SCHEDULER_DATA,
                                                EXPLORATORY_USER, 
EXPLORATORY_PASS)));
        }
diff --git 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/InfrastructureInfoServiceImpl.java
 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/InfrastructureInfoServiceImpl.java
index 4063ca1..76d785c 100644
--- 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/InfrastructureInfoServiceImpl.java
+++ 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/InfrastructureInfoServiceImpl.java
@@ -25,6 +25,7 @@ import com.epam.dlab.backendapi.dao.BillingDAO;
 import com.epam.dlab.backendapi.dao.ExploratoryDAO;
 import com.epam.dlab.backendapi.domain.BillingReport;
 import com.epam.dlab.backendapi.domain.EndpointDTO;
+import com.epam.dlab.backendapi.domain.ProjectDTO;
 import com.epam.dlab.backendapi.domain.ProjectEndpointDTO;
 import com.epam.dlab.backendapi.resources.dto.HealthStatusEnum;
 import com.epam.dlab.backendapi.resources.dto.HealthStatusPageDTO;
@@ -85,37 +86,14 @@ public class InfrastructureInfoServiceImpl implements 
InfrastructureInfoService
        public List<ProjectInfrastructureInfo> getUserResources(UserInfo user) {
                log.debug("Loading list of provisioned resources for user {}", 
user);
                try {
-                       Iterable<Document> documents = 
expDAO.findExploratory(user.getName());
                        List<EndpointDTO> allEndpoints = 
endpointService.getEndpoints();
-                       return StreamSupport.stream(documents.spliterator(), 
false)
-                                       .collect(Collectors.groupingBy(d -> 
d.getString("project")))
-                                       .entrySet()
+                       return projectService.getUserProjects(user, false)
                                        .stream()
-                                       .map(e -> {
-                                               List<ProjectEndpointDTO> 
endpoints = projectService.get(e.getKey()).getEndpoints();
-                                               List<EndpointDTO> 
endpointResult = allEndpoints.stream()
-                                                               
.filter(endpoint -> endpoints.stream()
-                                                                               
.anyMatch(endpoint1 -> endpoint1.getName().equals(endpoint.getName())))
-                                                               
.collect(Collectors.toList());
-
-                                               List<BillingReport> billingData 
= e.getValue()
-                                                               .stream()
-                                                               .map(exp ->
-                                                                               
billingService.getExploratoryBillingData(exp.getString("project"), 
exp.getString("endpoint"),
-                                                                               
                exp.getString("exploratory_name"),
-                                                                               
                Optional.ofNullable(exp.get("computational_resources")).map(cr 
-> (List<Document>) cr).get()
-                                                                               
                                .stream()
-                                                                               
                                .map(cr -> cr.getString("computational_name"))
-                                                                               
                                .collect(Collectors.toList()))
-                                                               )
-                                                               
.collect(Collectors.toList());
-
-                                               final Map<String, Map<String, 
String>> projectEdges =
-                                                               endpoints
-                                                                               
.stream()
-                                                                               
.collect(Collectors.toMap(ProjectEndpointDTO::getName, this::getSharedInfo));
-                                               return new 
ProjectInfrastructureInfo(e.getKey(), 
billingDAO.getBillingProjectQuoteUsed(e.getKey()),
-                                                               projectEdges, 
e.getValue(), billingData, endpointResult);
+                                       .map(p -> {
+                                               Iterable<Document> 
exploratories = expDAO.findExploratories(user.getName(), p.getName());
+                                               return new 
ProjectInfrastructureInfo(p.getName(), 
billingDAO.getBillingProjectQuoteUsed(p.getName()),
+                                                               
getSharedInfo(p.getName()), exploratories, 
getExploratoryBillingData(exploratories),
+                                                               
getEndpoints(allEndpoints, p));
                                        })
                                        .collect(Collectors.toList());
                } catch (Exception e) {
@@ -162,6 +140,30 @@ public class InfrastructureInfoServiceImpl implements 
InfrastructureInfoService
                                .build();
        }
 
+       private List<BillingReport> 
getExploratoryBillingData(Iterable<Document> exploratories) {
+               return StreamSupport.stream(exploratories.spliterator(), false)
+                               .map(exp ->
+                                               
billingService.getExploratoryBillingData(exp.getString("project"), 
exp.getString("endpoint"),
+                                                               
exp.getString("exploratory_name"),
+                                                               
Optional.ofNullable(exp.get("computational_resources")).map(cr -> 
(List<Document>) cr).get()
+                                                                               
.stream()
+                                                                               
.map(cr -> cr.getString("computational_name"))
+                                                                               
.collect(Collectors.toList()))
+                               )
+                               .collect(Collectors.toList());
+       }
+
+       private List<EndpointDTO> getEndpoints(List<EndpointDTO> allEndpoints, 
ProjectDTO projectDTO) {
+               return allEndpoints.stream().filter(endpoint -> 
projectDTO.getEndpoints().stream()
+                               .anyMatch(endpoint1 -> 
endpoint1.getName().equals(endpoint.getName())))
+                               .collect(Collectors.toList());
+       }
+
+       private Map<String, Map<String, String>> getSharedInfo(String name) {
+               return projectService.get(name).getEndpoints().stream()
+                               
.collect(Collectors.toMap(ProjectEndpointDTO::getName, this::getSharedInfo));
+       }
+
        private Map<String, String> getSharedInfo(ProjectEndpointDTO 
endpointDTO) {
                Optional<EdgeInfo> edgeInfo = 
Optional.ofNullable(endpointDTO.getEdgeInfo());
                if (!edgeInfo.isPresent()) {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@dlab.apache.org
For additional commands, e-mail: commits-h...@dlab.apache.org

Reply via email to