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