b783644991eef6738fce4c70ca80608a6e0294e2
[aaf/authz.git] / authz-cass / src / main / java / com / att / dao / aaf / cached / CachedRoleDAO.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.RoleDAO;\r
34 import com.att.dao.aaf.cass.RoleDAO.Data;\r
35 import com.att.dao.aaf.cass.Status;\r
36 \r
37 public class CachedRoleDAO extends CachedDAO<AuthzTrans,RoleDAO, RoleDAO.Data> {\r
38         public CachedRoleDAO(RoleDAO dao, CIDAO<AuthzTrans> info) {\r
39                 super(dao, info, RoleDAO.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.isOK() && lurd.isEmpty()) {\r
51                         return Result.err(Status.ERR_RoleNotFound,"No Role found");\r
52                 }\r
53                 return lurd;\r
54         }\r
55 \r
56         public Result<List<Data>> readName(AuthzTrans trans, final String name) {\r
57                 DAOGetter getter = new DAOGetter(trans,dao()) {\r
58                         public Result<List<Data>> call() {\r
59                                 return dao().readName(trans, name);\r
60                         }\r
61                 };\r
62                 \r
63                 Result<List<Data>> lurd = get(trans, name, getter);\r
64                 if(lurd.isOK() && lurd.isEmpty()) {\r
65                         return Result.err(Status.ERR_RoleNotFound,"No Role found");\r
66                 }\r
67                 return lurd;\r
68         }\r
69 \r
70         public Result<List<Data>> readChildren(AuthzTrans trans, final String ns, final String name) {\r
71                 // At this point, I'm thinking it's better not to try to cache "*" results\r
72                 // Data probably won't be accurate, and adding it makes every update invalidate most of the cache\r
73                 // 2/4/2014\r
74                 return dao().readChildren(trans,ns,name);\r
75         }\r
76 \r
77         public Result<Void> addPerm(AuthzTrans trans, RoleDAO.Data rd, PermDAO.Data perm) {\r
78                 Result<Void> rv = dao().addPerm(trans,rd,perm);\r
79                 if(trans.debug().isLoggable())\r
80                         trans.debug().log("Adding",perm,"to", rd, "with CachedRoleDAO.addPerm");\r
81                 invalidate(trans, rd);\r
82                 return rv;\r
83         }\r
84 \r
85         public Result<Void> delPerm(AuthzTrans trans, RoleDAO.Data rd, PermDAO.Data perm) {\r
86                 Result<Void> rv = dao().delPerm(trans,rd,perm);\r
87                 if(trans.debug().isLoggable())\r
88                         trans.debug().log("Removing",perm,"from", rd, "with CachedRoleDAO.addPerm");\r
89                 invalidate(trans, rd);\r
90                 return rv;\r
91         }\r
92         \r
93         /**\r
94          * Add description to this role\r
95          * \r
96          * @param trans\r
97          * @param ns\r
98          * @param name\r
99          * @param description\r
100          * @return\r
101          */\r
102         public Result<Void> addDescription(AuthzTrans trans, String ns, String name, String description) {\r
103                 //TODO Invalidate?\r
104                 return dao().addDescription(trans, ns, name, description);\r
105 \r
106         }\r
107 \r
108 }\r