+++ /dev/null
-/*******************************************************************************\r
- * ============LICENSE_START====================================================\r
- * * org.onap.aaf\r
- * * ===========================================================================\r
- * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
- * * ===========================================================================\r
- * * Licensed under the Apache License, Version 2.0 (the "License");\r
- * * you may not use this file except in compliance with the License.\r
- * * You may obtain a copy of the License at\r
- * * \r
- * * http://www.apache.org/licenses/LICENSE-2.0\r
- * * \r
- * * Unless required by applicable law or agreed to in writing, software\r
- * * distributed under the License is distributed on an "AS IS" BASIS,\r
- * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * * See the License for the specific language governing permissions and\r
- * * limitations under the License.\r
- * * ============LICENSE_END====================================================\r
- * *\r
- * * ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
- * *\r
- ******************************************************************************/\r
-package com.att.dao.aaf.cached;\r
-\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-import com.att.authz.env.AuthzTrans;\r
-import com.att.authz.layer.Result;\r
-import com.att.dao.CIDAO;\r
-import com.att.dao.CachedDAO;\r
-import com.att.dao.aaf.cass.Status;\r
-import com.att.dao.aaf.cass.UserRoleDAO;\r
-import com.att.dao.aaf.cass.UserRoleDAO.Data;\r
-import com.att.inno.env.Slot;\r
-\r
-public class CachedUserRoleDAO extends CachedDAO<AuthzTrans,UserRoleDAO, UserRoleDAO.Data> {\r
- private Slot transURSlot;\r
-\r
- public CachedUserRoleDAO(UserRoleDAO dao, CIDAO<AuthzTrans> info) {\r
- super(dao, info, UserRoleDAO.CACHE_SEG);\r
- transURSlot = dao.transURSlot;\r
- }\r
-\r
- /**\r
- * Special Case. \r
- * User Roles by User are very likely to be called many times in a Transaction, to validate "May User do..."\r
- * Pull result, and make accessible by the Trans, which is always keyed by User.\r
- * @param trans\r
- * @param user\r
- * @return\r
- */\r
- public Result<List<Data>> readByUser(AuthzTrans trans, final String user) {\r
- DAOGetter getter = new DAOGetter(trans,dao()) {\r
- public Result<List<Data>> call() {\r
- // If the call is for THIS user, and it exists, get from TRANS, add to TRANS if not.\r
- if(user!=null && user.equals(trans.user())) {\r
- Result<List<Data>> transLD = trans.get(transURSlot,null);\r
- if(transLD==null ) {\r
- transLD = dao.readByUser(trans, user);\r
- }\r
- return transLD;\r
- } else {\r
- return dao.readByUser(trans, user);\r
- }\r
- }\r
- };\r
- Result<List<Data>> lurd = get(trans, user, getter);\r
- if(lurd.isOK() && lurd.isEmpty()) {\r
- return Result.err(Status.ERR_UserRoleNotFound,"UserRole not found for [%s]",user);\r
- }\r
- return lurd;\r
- }\r
-\r
- \r
- public Result<List<Data>> readByRole(AuthzTrans trans, final String role) {\r
- DAOGetter getter = new DAOGetter(trans,dao()) {\r
- public Result<List<Data>> call() {\r
- return dao.readByRole(trans, role);\r
- }\r
- };\r
- Result<List<Data>> lurd = get(trans, role, getter);\r
- if(lurd.isOK() && lurd.isEmpty()) {\r
- return Result.err(Status.ERR_UserRoleNotFound,"UserRole not found for [%s]",role);\r
- }\r
- return lurd;\r
- }\r
-\r
- public Result<List<UserRoleDAO.Data>> readUserInRole(final AuthzTrans trans, final String user, final String role) {\r
- DAOGetter getter = new DAOGetter(trans,dao()) {\r
- public Result<List<Data>> call() {\r
- if(user.equals(trans.user())) {\r
- Result<List<Data>> rrbu = readByUser(trans, user);\r
- if(rrbu.isOK()) {\r
- List<Data> ld = new ArrayList<Data>(1);\r
- for(Data d : rrbu.value) {\r
- if(d.role.equals(role)) {\r
- ld.add(d);\r
- break;\r
- }\r
- }\r
- return Result.ok(ld).emptyList(ld.isEmpty());\r
- } else {\r
- return rrbu;\r
- }\r
- }\r
- return dao.readByUserRole(trans, user, role);\r
- }\r
- };\r
- Result<List<Data>> lurd = get(trans, keyFromObjs(user,role), getter);\r
- if(lurd.isOK() && lurd.isEmpty()) {\r
- return Result.err(Status.ERR_UserRoleNotFound,"UserRole not found for role [%s] and user [%s]",role,user);\r
- }\r
- return lurd;\r
- }\r
-}\r