AT&T 2.0.19 Code drop, stage 4
[aaf/authz.git] / authz-cass / src / main / java / org / onap / aaf / dao / aaf / cached / CachedPermDAO.java
1 /*******************************************************************************\r
2  * ============LICENSE_START====================================================\r
3  * * org.onap.aaf\r
4  * * ===========================================================================\r
5  * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
6  * * ===========================================================================\r
7  * * Licensed under the Apache License, Version 2.0 (the "License");\r
8  * * you may not use this file except in compliance with the License.\r
9  * * You may obtain a copy of the License at\r
10  * * \r
11  *  *      http://www.apache.org/licenses/LICENSE-2.0\r
12  * * \r
13  *  * Unless required by applicable law or agreed to in writing, software\r
14  * * distributed under the License is distributed on an "AS IS" BASIS,\r
15  * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16  * * See the License for the specific language governing permissions and\r
17  * * limitations under the License.\r
18  * * ============LICENSE_END====================================================\r
19  * *\r
20  * * ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
21  * *\r
22  ******************************************************************************/\r
23 package org.onap.aaf.dao.aaf.cached;\r
24 \r
25 import java.util.List;\r
26 \r
27 import org.onap.aaf.authz.env.AuthzTrans;\r
28 import org.onap.aaf.authz.layer.Result;\r
29 import org.onap.aaf.dao.CIDAO;\r
30 import org.onap.aaf.dao.CachedDAO;\r
31 import org.onap.aaf.dao.aaf.cass.PermDAO;\r
32 import org.onap.aaf.dao.aaf.cass.RoleDAO;\r
33 import org.onap.aaf.dao.aaf.cass.Status;\r
34 import org.onap.aaf.dao.aaf.cass.PermDAO.Data;\r
35 \r
36 public class CachedPermDAO extends CachedDAO<AuthzTrans,PermDAO, PermDAO.Data> {\r
37 \r
38         public CachedPermDAO(PermDAO dao, CIDAO<AuthzTrans> info) {\r
39                 super(dao, info, PermDAO.CACHE_SEG);\r
40         }\r
41 \r
42         public Result<List<Data>> readNS(AuthzTrans trans, final String ns) {\r
43                 DAOGetter getter = new DAOGetter(trans,dao()) {\r
44                         public Result<List<Data>> call() {\r
45                                 return dao.readNS(trans, ns);\r
46                         }\r
47                 };\r
48                 \r
49                 Result<List<Data>> lurd = get(trans, ns, getter);\r
50                 if(lurd.isOKhasData()) {\r
51                         return lurd;\r
52                 } else {\r
53                         \r
54                 }\r
55 //              if(getter.result==null) {\r
56 //                      if(lurd==null) {\r
57                                 return Result.err(Status.ERR_PermissionNotFound,"No Permission found - " + lurd.details);\r
58 //                      } else {\r
59 //                              return Result.ok(lurd);\r
60 //                      }\r
61 //              }\r
62 //              return getter.result;\r
63         }\r
64 \r
65         public Result<List<Data>> readChildren(AuthzTrans trans, final String ns, final String type) {\r
66                 return dao().readChildren(trans,ns,type);\r
67         }\r
68 \r
69         /**\r
70          * \r
71          * @param trans\r
72          * @param ns\r
73          * @param type\r
74          * @return\r
75          */\r
76         public Result<List<Data>> readByType(AuthzTrans trans, final String ns, final String type) {\r
77                 DAOGetter getter = new DAOGetter(trans,dao()) {\r
78                         public Result<List<Data>> call() {\r
79                                 return dao.readByType(trans, ns, type);\r
80                         }\r
81                 };\r
82                 \r
83                 // Note: Can reuse index1 here, because there is no name collision versus response\r
84                 Result<List<Data>> lurd = get(trans, ns+'|'+type, getter);\r
85                 if(lurd.isOK() && lurd.isEmpty()) {\r
86                         return Result.err(Status.ERR_PermissionNotFound,"No Permission found");\r
87                 }\r
88                 return lurd;\r
89         }\r
90         \r
91         /**\r
92          * Add desciption to this permission\r
93          * \r
94          * @param trans\r
95          * @param ns\r
96          * @param type\r
97          * @param instance\r
98          * @param action\r
99          * @param description\r
100          * @return\r
101          */\r
102         public Result<Void> addDescription(AuthzTrans trans, String ns, String type, \r
103                         String instance, String action, String description) {\r
104                 //TODO Invalidate?\r
105                 return dao().addDescription(trans, ns, type, instance, action, description);\r
106         }\r
107         \r
108         public Result<Void> addRole(AuthzTrans trans, PermDAO.Data perm, RoleDAO.Data role) {\r
109                 Result<Void> rv = dao().addRole(trans,perm,role.encode());\r
110                 if(trans.debug().isLoggable())\r
111                         trans.debug().log("Adding",role.encode(),"to", perm, "with CachedPermDAO.addRole");\r
112                 invalidate(trans,perm);\r
113                 return rv;\r
114         }\r
115 \r
116         public Result<Void> delRole(AuthzTrans trans, Data perm, RoleDAO.Data role) {\r
117                 Result<Void> rv = dao().delRole(trans,perm,role.encode());\r
118                 if(trans.debug().isLoggable())\r
119                         trans.debug().log("Removing",role.encode(),"from", perm, "with CachedPermDAO.delRole");\r
120                 invalidate(trans,perm);\r
121                 return rv;\r
122         }\r
123 \r
124 \r
125 }\r