You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datalab.apache.org by dy...@apache.org on 2022/08/09 10:41:29 UTC

[incubator-datalab] branch DATALAB-2968 created (now dd52d228c)

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

dyankiv pushed a change to branch DATALAB-2968
in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git


      at dd52d228c add license

This branch includes the following new commits:

     new 42d166c59 store user image filter in db
     new 125dd6758 add user image rights, fix reading image filter from db bug
     new ded35e3d9 remove commented-out code
     new dd52d228c add license

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datalab.apache.org
For additional commands, e-mail: commits-help@datalab.apache.org


[incubator-datalab] 04/04: add license

Posted by dy...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dyankiv pushed a commit to branch DATALAB-2968
in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git

commit dd52d228c131c94f141c8ee9bd662a853d8b2fd0
Author: Denys Yankiv <de...@gmail.com>
AuthorDate: Tue Aug 9 13:41:01 2022 +0300

    add license
---
 .../backendapi/resources/dto/ImageFilterFormData.java | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ImageFilterFormData.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ImageFilterFormData.java
index 639939075..46a208123 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ImageFilterFormData.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ImageFilterFormData.java
@@ -1,3 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file 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.
+ */
+
 package com.epam.datalab.backendapi.resources.dto;
 
 import com.epam.datalab.dto.exploratory.ImageSharingStatus;


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datalab.apache.org
For additional commands, e-mail: commits-help@datalab.apache.org


[incubator-datalab] 02/04: add user image rights, fix reading image filter from db bug

Posted by dy...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dyankiv pushed a commit to branch DATALAB-2968
in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git

commit 125dd67589dfb23a1d9be4aaea869287d88e6671
Author: Denys Yankiv <de...@gmail.com>
AuthorDate: Tue Aug 9 13:36:38 2022 +0300

    add user image rights, fix reading image filter from db bug
---
 .../backendapi/dao/ImageExploratoryDAO.java        |   2 +-
 .../backendapi/dao/ImageExploratoryDAOImpl.java    |   5 +-
 .../datalab/backendapi/dao/UserSettingsDAO.java    |  11 ++-
 .../resources/ImageExploratoryResource.java        |  10 +-
 .../backendapi/resources/dto/ImageFilter.java      |  13 +--
 .../resources/dto/ImageFilterFormData.java         |  27 ++++++
 .../backendapi/resources/dto/ImageInfoRecord.java  |   1 +
 .../resources/dto/ImageUserPermissions.java        |  20 ++++
 .../resources/dto/ProjectImagesInfo.java           |   7 +-
 .../service/ImageExploratoryService.java           |   6 +-
 .../service/impl/ImageExploratoryServiceImpl.java  | 107 ++++++++++++---------
 11 files changed, 139 insertions(+), 70 deletions(-)

diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/ImageExploratoryDAO.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/ImageExploratoryDAO.java
index 9638dec8e..4b67166b6 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/ImageExploratoryDAO.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/ImageExploratoryDAO.java
@@ -40,7 +40,7 @@ public interface ImageExploratoryDAO {
 
     List<ImageInfoRecord> getImages(String project, String endpoint, String dockerImage);
 
-    List<ImageInfoRecord> getImagesOfUser(String user, String project);
+    List<ImageInfoRecord> getImagesOfUser(String user);
 
     List<ImageInfoRecord> getImagesForProject(String project);
 
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/ImageExploratoryDAOImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/ImageExploratoryDAOImpl.java
index cc93a4b01..d4fde8042 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/ImageExploratoryDAOImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/ImageExploratoryDAOImpl.java
@@ -86,10 +86,11 @@ public class ImageExploratoryDAOImpl extends BaseDAO implements ImageExploratory
                 ImageInfoRecord.class);
     }
 
+
     @Override
-    public List<ImageInfoRecord> getImagesOfUser(String user, String project) {
+    public List<ImageInfoRecord> getImagesOfUser(String user) {
         return find(MongoCollections.IMAGES,
-                imageUserProjectCondition(user, project),
+                eq(USER, user),
                 ImageInfoRecord.class);
     }
 
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/UserSettingsDAO.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/UserSettingsDAO.java
index d12b9f851..2ae4fadea 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/UserSettingsDAO.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/UserSettingsDAO.java
@@ -30,6 +30,7 @@ import org.bson.Document;
 import java.util.Optional;
 
 import static com.epam.datalab.backendapi.dao.MongoCollections.USER_SETTINGS;
+import static com.mongodb.client.model.Filters.and;
 import static com.mongodb.client.model.Filters.eq;
 import static com.mongodb.client.model.Projections.*;
 import static com.mongodb.client.model.Updates.set;
@@ -81,9 +82,15 @@ public class UserSettingsDAO extends BaseDAO {
     }
 
     public Optional<ImageFilter> getImageFilter(String user){
-        return findOne(USER_SETTINGS, eq(ID, user),
+         return findOne(USER_SETTINGS, and(eq(ID, user), notNull(USER_IMAGE_FILTER)),
                 fields(include(USER_IMAGE_FILTER), excludeId()))
-                .map(d -> convertFromDocument((Document) d.get(USER_IMAGE_FILTER), ImageFilter.class));
+                 .map(d -> convertFromDocument((Document) d.get(USER_IMAGE_FILTER), ImageFilter.class));
+
+//         if(doc.isPresent()){
+//             return doc.map(d -> convertFromDocument((Document) d.get(USER_IMAGE_FILTER), ImageFilter.class)).get();
+//         }
+//         return new ImageFilter();
+
     }
 
 
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/ImageExploratoryResource.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/ImageExploratoryResource.java
index ec0ed7b7f..ae1f798df 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/ImageExploratoryResource.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/ImageExploratoryResource.java
@@ -102,7 +102,7 @@ public class ImageExploratoryResource {
     @Path("user")
     public Response getImagesForUser(@Auth UserInfo ui) {
         log.debug("Getting images for user {}", ui.getName());
-        final List<ProjectImagesInfo> images = imageExploratoryService.getImagesOfUser(ui);
+        final ProjectImagesInfo images = imageExploratoryService.getImagesOfUser(ui);
         return Response.ok(images).build();
     }
 
@@ -110,7 +110,7 @@ public class ImageExploratoryResource {
     @Path("user")
     public Response getImagesForUser(@Auth UserInfo ui, @Valid @NotNull ImageFilter imageFilter) {
         log.debug("Getting images for user {} with filter {}", ui.getName(), imageFilter);
-        final List<ProjectImagesInfo> images = imageExploratoryService.getImagesOfUserWithFilter(ui, imageFilter);
+        final ProjectImagesInfo images = imageExploratoryService.getImagesOfUserWithFilter(ui, imageFilter);
         return Response.ok(images).build();
     }
 
@@ -133,10 +133,4 @@ public class ImageExploratoryResource {
         return Response.ok(imageExploratoryService.getImagesOfUser(ui)).build();
     }
 
-    @POST
-    @Path("roles")
-    public Response getUserImagePermissions(@Auth UserInfo ui, @Valid @NotNull ImageProjectGroupsShareDTO dto){
-        return Response.ok(
-                imageExploratoryService.getUserImagePermissions(ui,dto.getImageName(),dto.getProjectName(), dto.getEndpoint())).build();
-    }
 }
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ImageFilter.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ImageFilter.java
index 2d924b4da..3ee650d2b 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ImageFilter.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ImageFilter.java
@@ -26,21 +26,22 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.NonNull;
 
-import java.util.List;
+import java.util.HashSet;
+import java.util.Set;
 
 @Data
 @NoArgsConstructor
 @JsonIgnoreProperties(ignoreUnknown = true)
 public class ImageFilter {
     @NonNull
-    private String imageName;
+    private String imageName = "";
     @NonNull
-    private List<ImageStatus> statuses;
+    private Set<ImageStatus> statuses = new HashSet<>();
     @NonNull
-    private List<String> endpoints;
+    private Set<String> endpoints = new HashSet<>();
     @NonNull
-    private List<String> templateNames;
+    private Set<String> templateNames = new HashSet<>();
     @NonNull
-    private List<ImageSharingStatus> sharingStatuses;
+    private Set<ImageSharingStatus> sharingStatuses = new HashSet<>();
 
 }
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ImageFilterFormData.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ImageFilterFormData.java
new file mode 100644
index 000000000..639939075
--- /dev/null
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ImageFilterFormData.java
@@ -0,0 +1,27 @@
+package com.epam.datalab.backendapi.resources.dto;
+
+import com.epam.datalab.dto.exploratory.ImageSharingStatus;
+import com.epam.datalab.dto.exploratory.ImageStatus;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.NonNull;
+
+
+import java.util.Set;
+
+@Data
+@NoArgsConstructor
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ImageFilterFormData {
+    @NonNull
+    private Set<String> imageNames;
+    @NonNull
+    private Set<ImageStatus> statuses;
+    @NonNull
+    private Set<String> endpoints;
+    @NonNull
+    private Set<String> templateNames;
+    @NonNull
+    private Set<ImageSharingStatus> sharingStatuses;
+}
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ImageInfoRecord.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ImageInfoRecord.java
index f13f1b199..4b9786194 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ImageInfoRecord.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ImageInfoRecord.java
@@ -48,6 +48,7 @@ public class ImageInfoRecord {
     private final String fullName;
     private final ImageStatus status;
     private ImageSharingStatus sharingStatus;
+    private ImageUserPermissions imageUserPermissions;
     private final List<ClusterConfig> clusterConfig;
     private final String exploratoryURL;
     private final List<Library> libraries;
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ImageUserPermissions.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ImageUserPermissions.java
index 5577444f3..1de9ec29e 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ImageUserPermissions.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ImageUserPermissions.java
@@ -1,3 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file 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.
+ */
+
+
 package com.epam.datalab.backendapi.resources.dto;
 
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ProjectImagesInfo.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ProjectImagesInfo.java
index 06da51f28..d561a78f1 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ProjectImagesInfo.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ProjectImagesInfo.java
@@ -26,6 +26,7 @@ import lombok.EqualsAndHashCode;
 import lombok.ToString;
 
 import java.util.List;
+import java.util.Map;
 
 @AllArgsConstructor
 @Builder
@@ -33,7 +34,9 @@ import java.util.List;
 @ToString
 public class ProjectImagesInfo {
     @JsonProperty
-    private String project;
+    private Map<String,List<ImageInfoRecord>> projectImages;
     @JsonProperty
-    private List<ImageInfoRecord> images;
+    private ImageFilter imageFilter;
+    @JsonProperty
+    private ImageFilterFormData filterData;
 }
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/ImageExploratoryService.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/ImageExploratoryService.java
index 363dc9d16..b9cf922c1 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/ImageExploratoryService.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/ImageExploratoryService.java
@@ -42,8 +42,8 @@ public interface ImageExploratoryService {
 
     List<ImageInfoRecord> getImagesForProject(String project);
 
-    List<ProjectImagesInfo> getImagesOfUser(UserInfo user);
-    List<ProjectImagesInfo> getImagesOfUserWithFilter(UserInfo user, ImageFilter imageFilter);
+    ProjectImagesInfo getImagesOfUser(UserInfo user);
+    ProjectImagesInfo getImagesOfUserWithFilter(UserInfo user, ImageFilter imageFilter);
 
     void shareImageWithProjectGroups(UserInfo user, String imageName, String projectName, String endpoint);
 
@@ -51,6 +51,6 @@ public interface ImageExploratoryService {
 
     List<ImageInfoRecord> getSharedImages(UserInfo userInfo, String dockerImage, String project, String endpoint);
 
-    ImageUserPermissions getUserImagePermissions(UserInfo userInfo, String imageName, String projectName, String endpoint);
+    ImageUserPermissions getUserImagePermissions(UserInfo userInfo, ImageInfoRecord image);
 
 }
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ImageExploratoryServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ImageExploratoryServiceImpl.java
index c103fb7c6..c5ee95534 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ImageExploratoryServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ImageExploratoryServiceImpl.java
@@ -48,7 +48,6 @@ import com.epam.datalab.model.exploratory.Image;
 import com.epam.datalab.model.library.Library;
 import com.epam.datalab.rest.client.RESTService;
 import com.epam.datalab.rest.contracts.ExploratoryAPI;
-import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.common.collect.Lists;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
@@ -80,7 +79,6 @@ public class ImageExploratoryServiceImpl implements ImageExploratoryService {
      * projectName-endpointName-exploratoryName-imageName
      */
     private static final String IMAGE_MONIKER = "%s_%s_%s_%s";
-    private static final ObjectMapper MAPPER = new ObjectMapper();
     @Inject
     private ExploratoryDAO exploratoryDAO;
     @Inject
@@ -102,6 +100,8 @@ public class ImageExploratoryServiceImpl implements ImageExploratoryService {
     private EndpointService endpointService;
     @Inject
     private ProjectService projectService;
+    @Inject
+    private UserSettingsDAO userSettingsDAO;
 
     @Audit(action = CREATE, type = IMAGE)
     @Override
@@ -190,39 +190,58 @@ public class ImageExploratoryServiceImpl implements ImageExploratoryService {
     }
 
     @Override
-    public List<ProjectImagesInfo> getImagesOfUser(UserInfo user) {
+    public ProjectImagesInfo getImagesOfUser(UserInfo user) {
         log.debug("Loading list of images for user {}", user.getName());
-        return projectService.getUserProjects(user, Boolean.FALSE)
-                .stream()
-                .map(p -> {
-                    List<ImageInfoRecord> images = imageExploratoryDao.getImagesOfUser(user.getName(), p.getName());
-                    images.forEach(img -> img.setSharingStatus(getImageSharingStatus(user.getName(),img)));
-                    images.addAll(getSharedImages(user, p.getName()));
-                    return ProjectImagesInfo.builder()
-                            .project(p.getName())
-                            .images(images)
-                            .build();
-                })
-                .collect(Collectors.toList());
+        Map<String, List<ImageInfoRecord>> projectImages = new HashMap<>();
+        projectService.getUserProjects(user, Boolean.FALSE).stream()
+                .map(ProjectDTO::getName)
+                .forEach(name->projectImages.put(name, new ArrayList<>()));
+
+        List<ImageInfoRecord> images = imageExploratoryDao.getImagesOfUser(user.getName());
+        images.forEach(img -> img.setSharingStatus(getImageSharingStatus(user.getName(),img)));
+        images.addAll(getSharedImages(user));
+
+        ImageFilterFormData filterData = getDataForFilter(images);
+        ImageFilter imageFilter = new ImageFilter();
+        if(userSettingsDAO.getImageFilter(user.getName()).isPresent()){
+            imageFilter = userSettingsDAO.getImageFilter(user.getName()).get();
+            images = filterImages(images, imageFilter);
+        }
+        userSettingsDAO.setUserImageFilter(user.getName(),imageFilter);
+        images.forEach(img -> img.setImageUserPermissions(getUserImagePermissions(user,img)));
+
+        projectImages.putAll(images.stream().collect(Collectors.groupingBy(ImageInfoRecord::getProject)));
+        return ProjectImagesInfo.builder()
+                .projectImages(projectImages)
+                .imageFilter(userSettingsDAO.getImageFilter(user.getName()).get())
+                .filterData(filterData).build();
     }
 
     @Override
-    public List<ProjectImagesInfo> getImagesOfUserWithFilter(UserInfo user, ImageFilter imageFilter) {
+    public ProjectImagesInfo getImagesOfUserWithFilter(UserInfo user, ImageFilter imageFilter) {
         log.debug("Loading list of images for user {}", user.getName());
-        return projectService.getUserProjects(user, Boolean.FALSE)
-                .stream()
-                .map(p -> {
-                    List<ImageInfoRecord> images = imageExploratoryDao.getImagesOfUser(user.getName(), p.getName());
-                    images.forEach(img -> img.setSharingStatus(getImageSharingStatus(user.getName(),img)));
-                    List<ImageInfoRecord> sharedImages = getSharedImages(user, p.getName());
-                    images.addAll(sharedImages);
-                    images = filterImages(images, imageFilter);
-                    return ProjectImagesInfo.builder()
-                            .project(p.getName())
-                            .images(images)
-                            .build();
-                })
-                .collect(Collectors.toList());
+        Map<String, List<ImageInfoRecord>> projectImages = new HashMap<>();
+        projectService.getUserProjects(user, Boolean.FALSE).stream()
+                .map(ProjectDTO::getName)
+                .forEach(name->projectImages.put(name, new ArrayList<>()));
+
+        List<ImageInfoRecord> images = imageExploratoryDao.getImagesOfUser(user.getName());
+        images.forEach(img -> img.setSharingStatus(getImageSharingStatus(user.getName(),img)));
+        images.addAll(getSharedImages(user));
+
+        ImageFilterFormData filterData = getDataForFilter(images);
+        images = filterImages(images, imageFilter);
+
+        userSettingsDAO.setUserImageFilter(user.getName(),imageFilter);
+
+        images.forEach(img -> img.setImageUserPermissions(getUserImagePermissions(user,img)));
+
+        projectImages.putAll(images.stream().collect(Collectors.groupingBy(ImageInfoRecord::getProject)));
+        return ProjectImagesInfo.builder()
+                .projectImages(projectImages)
+                .filterData(filterData)
+                .imageFilter(imageFilter)
+                .build();
     }
 
     @Override
@@ -287,10 +306,10 @@ public class ImageExploratoryServiceImpl implements ImageExploratoryService {
     }
 
     @Override
-    public ImageUserPermissions getUserImagePermissions(UserInfo userInfo, String imageName, String projectName, String endpoint) {
+    public ImageUserPermissions getUserImagePermissions(UserInfo userInfo, ImageInfoRecord image) {
         boolean canShare;
         boolean canTerminate = false;
-        if(imageExploratoryDao.getImage(userInfo.getName(), imageName, projectName, endpoint).isPresent()){
+        if(image.getUser().equals(userInfo.getName())){
             canShare = UserRoles.checkAccess(userInfo, RoleType.PAGE, SHARE_OWN_IMAGES_PAGE,userInfo.getRoles());
         } else {
             canShare = UserRoles.checkAccess(userInfo, RoleType.PAGE, SHARE_RECEIVED_IMAGES_PAGE,userInfo.getRoles());
@@ -298,20 +317,6 @@ public class ImageExploratoryServiceImpl implements ImageExploratoryService {
         return  new ImageUserPermissions(canShare,canTerminate);
     }
 
-    public List<ImageInfoRecord> getSharedImages(UserInfo userInfo, String project){
-        List<ImageInfoRecord> sharedImages = imageExploratoryDao.getAllImages().stream()
-                .filter(img -> img.getStatus().equals(ImageStatus.ACTIVE))
-                .filter(img -> !img.getUser().equals(userInfo.getName()))
-                .filter(img -> img.getProject().equals(project) )
-                .filter(img -> UserRoles.checkAccess(userInfo, RoleType.IMAGE,
-                        String.format(IMAGE_MONIKER, img.getProject(), img.getEndpoint(), img.getInstanceName(), img.getName()),
-                        userInfo.getRoles()))
-                .collect(Collectors.toList());
-        sharedImages.forEach(img -> img.setSharingStatus(getImageSharingStatus(userInfo.getName(),img)));
-        log.info("Found shared with user {} images {}", userInfo.getName(), sharedImages);
-        return sharedImages;
-    }
-
     private ImageSharingStatus getImageSharingStatus(String username, ImageInfoRecord image){
         String anyUser = "$anyuser";
         UserRoleDTO role = getImageRole(image);
@@ -361,4 +366,14 @@ public class ImageExploratoryServiceImpl implements ImageExploratoryService {
                 .collect(Collectors.toList());
 
     }
+
+    private ImageFilterFormData getDataForFilter(List<ImageInfoRecord> images){
+        ImageFilterFormData filterData = new ImageFilterFormData();
+        filterData.setImageNames(images.stream().map(ImageInfoRecord::getName).collect(Collectors.toSet()));
+        filterData.setStatuses(images.stream().map(ImageInfoRecord::getStatus).collect(Collectors.toSet()));
+        filterData.setEndpoints(images.stream().map(ImageInfoRecord::getEndpoint).collect(Collectors.toSet()));
+        filterData.setTemplateNames(images.stream().map(ImageInfoRecord::getTemplateName).collect(Collectors.toSet()));
+        filterData.setSharingStatuses(images.stream().map(ImageInfoRecord::getSharingStatus).collect(Collectors.toSet()));
+        return filterData;
+    }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datalab.apache.org
For additional commands, e-mail: commits-help@datalab.apache.org


[incubator-datalab] 03/04: remove commented-out code

Posted by dy...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dyankiv pushed a commit to branch DATALAB-2968
in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git

commit ded35e3d9cf9f59c13cc7a1a959ea291fa0e89f1
Author: Denys Yankiv <de...@gmail.com>
AuthorDate: Tue Aug 9 13:39:28 2022 +0300

    remove commented-out code
---
 .../main/java/com/epam/datalab/backendapi/dao/UserSettingsDAO.java  | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/UserSettingsDAO.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/UserSettingsDAO.java
index 2ae4fadea..ab8552ce3 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/UserSettingsDAO.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/UserSettingsDAO.java
@@ -85,12 +85,6 @@ public class UserSettingsDAO extends BaseDAO {
          return findOne(USER_SETTINGS, and(eq(ID, user), notNull(USER_IMAGE_FILTER)),
                 fields(include(USER_IMAGE_FILTER), excludeId()))
                  .map(d -> convertFromDocument((Document) d.get(USER_IMAGE_FILTER), ImageFilter.class));
-
-//         if(doc.isPresent()){
-//             return doc.map(d -> convertFromDocument((Document) d.get(USER_IMAGE_FILTER), ImageFilter.class)).get();
-//         }
-//         return new ImageFilter();
-
     }
 
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datalab.apache.org
For additional commands, e-mail: commits-help@datalab.apache.org


[incubator-datalab] 01/04: store user image filter in db

Posted by dy...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dyankiv pushed a commit to branch DATALAB-2968
in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git

commit 42d166c59a6c45509ce3aafd1a1d5475b38edd85
Author: Denys Yankiv <de...@gmail.com>
AuthorDate: Mon Aug 8 18:11:26 2022 +0300

    store user image filter in db
---
 .../epam/datalab/backendapi/dao/UserSettingsDAO.java | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/UserSettingsDAO.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/UserSettingsDAO.java
index 7e06eb335..d12b9f851 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/UserSettingsDAO.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/UserSettingsDAO.java
@@ -20,14 +20,18 @@
 package com.epam.datalab.backendapi.dao;
 
 import com.epam.datalab.auth.UserInfo;
+import com.epam.datalab.backendapi.resources.dto.ImageFilter;
 import com.epam.datalab.backendapi.resources.dto.UserDTO;
 import io.dropwizard.auth.Auth;
 import org.apache.commons.lang3.StringUtils;
+import org.bson.Document;
+
 
 import java.util.Optional;
 
 import static com.epam.datalab.backendapi.dao.MongoCollections.USER_SETTINGS;
 import static com.mongodb.client.model.Filters.eq;
+import static com.mongodb.client.model.Projections.*;
 import static com.mongodb.client.model.Updates.set;
 
 /**
@@ -37,6 +41,8 @@ public class UserSettingsDAO extends BaseDAO {
     private static final String USER_UI_SETTINGS_FIELD = "userUISettings";
     private static final String USER_ALLOWED_BUDGET = "allowedBudget";
 
+    private static final String USER_IMAGE_FILTER = "imageFilter";
+
     /**
      * Returns the user preferences of UI dashboard.
      *
@@ -74,4 +80,18 @@ public class UserSettingsDAO extends BaseDAO {
                 .flatMap(d -> Optional.ofNullable(d.getInteger(USER_ALLOWED_BUDGET)));
     }
 
+    public Optional<ImageFilter> getImageFilter(String user){
+        return findOne(USER_SETTINGS, eq(ID, user),
+                fields(include(USER_IMAGE_FILTER), excludeId()))
+                .map(d -> convertFromDocument((Document) d.get(USER_IMAGE_FILTER), ImageFilter.class));
+    }
+
+
+    public void setUserImageFilter(String userName, ImageFilter imageFilter) {
+        updateOne(USER_SETTINGS,
+                eq(ID, userName),
+                set(USER_IMAGE_FILTER, convertToBson(imageFilter)),
+                true);
+    }
+
 }
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datalab.apache.org
For additional commands, e-mail: commits-help@datalab.apache.org