dad8f2553518fbae121fc9896fceb33bc42707e7
[sdc.git] /
1 /*
2  * Copyright © 2016-2018 European Support Limited
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package org.openecomp.sdc.itempermissions.dao.impl;
18
19 import com.datastax.driver.core.ResultSet;
20 import com.datastax.driver.mapping.annotations.Accessor;
21 import com.datastax.driver.mapping.annotations.Query;
22 import org.openecomp.core.nosqldb.api.NoSqlDb;
23 import org.openecomp.core.nosqldb.factory.NoSqlDbFactory;
24 import org.openecomp.sdc.itempermissions.dao.UserPermissionsDao;
25
26 import java.util.Collections;
27 import java.util.HashSet;
28 import java.util.Set;
29
30 public class UserPermissionsDaoImpl implements UserPermissionsDao {
31
32     private static final NoSqlDb noSqlDb = NoSqlDbFactory.getInstance().createInterface();
33     private static UserPermissionsAccessor accessor =
34             noSqlDb.getMappingManager().createAccessor(UserPermissionsAccessor.class);
35
36
37     @Override
38     public Set<String> listUserPermittedItems(String userId, String permission) {
39         ResultSet resultSet = accessor.getUserPermissionItems(userId,permission);
40         if(resultSet.isExhausted()){
41             return new HashSet<>();
42         } else {
43             return resultSet.one().getSet(0,String.class);
44         }
45     }
46
47     @Override
48     public void updatePermissions(String itemId, String permission, Set<String> addedUsersIds,
49                                       Set<String> removedUsersIds) {
50         Set<String> itemSet = Collections.singleton(itemId);
51
52         addedUsersIds.forEach(userId ->
53                 accessor.addItem(itemSet, userId,permission));
54         removedUsersIds.forEach(userId ->
55                 accessor.removeItem(itemSet,userId,permission));
56     }
57
58     @Accessor
59     interface UserPermissionsAccessor {
60
61         @Query("select item_list from dox.user_permission_items WHERE user_id = ? AND permission = ?")
62         ResultSet getUserPermissionItems(String userId, String permission);
63
64         @Query("update dox.user_permission_items set item_list=item_list+? WHERE user_id = ? AND permission = ?")
65         void addItem(Set<String> items, String userId, String permission);
66
67         @Query("update dox.user_permission_items set item_list=item_list-? WHERE user_id = ? AND permission = ?")
68         void removeItem(Set<String> items, String userId, String permission);
69
70     }
71
72 }