87a9949468fe91af67793de616ec36b8be665f42
[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.Set;
29
30 /**
31  * Created by ayalaben on 6/20/2017.
32  */
33 public class ItemPermissionsDaoImpl implements ItemPermissionsDao {
34   private static final NoSqlDb noSqlDb = NoSqlDbFactory.getInstance().createInterface();
35   private static ItemPermissionsAccessor accessor =
36       noSqlDb.getMappingManager().createAccessor(ItemPermissionsAccessor.class);
37
38   @Override
39   public Collection<ItemPermissionsEntity> listItemPermissions(String itemId) {
40     return accessor.getItemPermissions(itemId).all();
41   }
42
43   @Override
44   public void updateItemPermissions(String itemId, String permission, Set<String> addedUsersIds,
45                                     Set<String> removedUsersIds) {
46     addedUsersIds.forEach(userId ->  accessor.addPermission(itemId,userId,permission));
47     removedUsersIds.forEach(userId -> accessor.deletePermission(itemId,userId));
48   }
49
50   @Override
51   public String getUserItemPermission(String itemId, String userId) {
52
53     ResultSet result =  accessor.getUserItemPermission(itemId,userId);
54     if (result.getAvailableWithoutFetching() < 1) {
55       return null;
56     }
57     return result.one().getString(0);
58   }
59
60   @Override
61   public void deleteItemPermissions(String itemId) {
62    accessor.deleteItemPermissions(itemId);
63   }
64
65
66   @Accessor
67   interface ItemPermissionsAccessor {
68     @Query("select * from dox.item_permissions WHERE item_id = ?")
69     Result<ItemPermissionsEntity> getItemPermissions(String itemId);
70
71     @Query("select permission from dox.item_permissions WHERE item_id = ? AND user_id=?")
72     ResultSet getUserItemPermission(String itemId,String userId);
73
74     @Query("delete from dox.item_permissions where item_id = ? and user_id = ?")
75     void deletePermission(String itemId, String userId);
76
77     @Query("insert into dox.item_permissions (item_id,user_id,permission) values (?,?,?)")
78     void addPermission(String itemId,String userId, String permission);
79
80     @Query("delete from dox.item_permissions where item_id=?")
81     void deleteItemPermissions(String itemId);
82
83   }
84 }