6421c283f3f3ad79eab443665abac94897d98f94
[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 package org.openecomp.sdc.itempermissions.dao.impl;
17
18 import com.datastax.driver.core.ResultSet;
19 import com.datastax.driver.mapping.Result;
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.ItemPermissionsDao;
25 import org.openecomp.sdc.itempermissions.type.ItemPermissionsEntity;
26
27 import java.util.Collection;
28 import java.util.Optional;
29 import java.util.Set;
30
31 /**
32  * Created by ayalaben on 6/20/2017.
33  */
34 public class ItemPermissionsDaoImpl implements ItemPermissionsDao {
35   private static final NoSqlDb noSqlDb = NoSqlDbFactory.getInstance().createInterface();
36   private static ItemPermissionsAccessor accessor =
37       noSqlDb.getMappingManager().createAccessor(ItemPermissionsAccessor.class);
38
39   @Override
40   public Collection<ItemPermissionsEntity> listItemPermissions(String itemId) {
41     return accessor.getItemPermissions(itemId).all();
42   }
43
44   @Override
45   public void updateItemPermissions(String itemId, String permission, Set<String> addedUsersIds,
46                                     Set<String> removedUsersIds) {
47     addedUsersIds.forEach(userId -> accessor.addPermission(itemId, userId, permission));
48     removedUsersIds.stream()
49         .filter(userId -> getUserItemPermission(itemId, userId)
50             .map(userPermissionOnItem -> userPermissionOnItem.equals(permission))
51             .orElse(false))
52         .forEach(userId -> accessor.deletePermission(itemId, userId));
53   }
54
55   @Override
56   public Optional<String> getUserItemPermission(String itemId, String userId) {
57     ResultSet result = accessor.getUserItemPermission(itemId, userId);
58     return result.getAvailableWithoutFetching() < 1
59         ? Optional.empty()
60         : Optional.of(result.one().getString(0));
61   }
62
63   @Override
64   public void deleteItemPermissions(String itemId) {
65     accessor.deleteItemPermissions(itemId);
66   }
67
68
69   @Accessor
70   interface ItemPermissionsAccessor {
71     @Query("select * from dox.item_permissions WHERE item_id = ?")
72     Result<ItemPermissionsEntity> getItemPermissions(String itemId);
73
74     @Query("select permission from dox.item_permissions WHERE item_id = ? AND user_id=?")
75     ResultSet getUserItemPermission(String itemId, String userId);
76
77     @Query("delete from dox.item_permissions where item_id = ? and user_id = ?")
78     void deletePermission(String itemId, String userId);
79
80     @Query("insert into dox.item_permissions (item_id,user_id,permission) values (?,?,?)")
81     void addPermission(String itemId, String userId, String permission);
82
83     @Query("delete from dox.item_permissions where item_id=?")
84     void deleteItemPermissions(String itemId);
85
86   }
87 }