+ private String saveUserPermissionInfo(String payload, String requestId) throws Exception {
+ try {
+ if (requestId == null || requestId.isEmpty()) {
+ throw new DBException("requestId in saveUserPermissionInfo request is null or Blank");
+ }
+ log.info("Received Save User Permission from " + requestId + " with payload " + payload);
+ Date startTime = new Date();
+ DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+ String dbDate = dateFormat.format(startTime);
+ ObjectMapper objectMapper = new ObjectMapper();
+ JsonNode payloadObject = objectMapper.readTree(payload);
+ String vnf_type = payloadObject.get(DesignServiceConstants.VNF_TYPE).textValue();
+ String modifier = payloadObject.get(DesignServiceConstants.CREATORUSERID).textValue();
+ JsonNode users = payloadObject.get("users");
+ if (users == null || !users.isArray()) {
+ throw new DBException("Users list is not provided in the input payload");
+ }
+ for (JsonNode node : users) {
+ String userId = node.get(DesignServiceConstants.USER_ID).textValue();
+ String permission = node.get(DesignServiceConstants.PERMISSION).textValue();
+ ArrayList<String> argList = new ArrayList<>();
+ argList.add(vnf_type);
+ argList.add(userId);
+ log.info("Checking User - " + userId + " current permissions in db for this vnf type");
+ String queryString = "SELECT PERMISSION FROM DT_USER_PERMISSIONS WHERE VNF_TYPE = ? AND USER_ID = ?";
+ log.info(QUERY_STR + queryString);
+ String user_permission = null;
+ int rowCount = 0;
+ try (ResultSet data = dbservice.getDBData(queryString, argList)) {
+ while (data.next()) {
+ rowCount++;
+ user_permission = data.getString("PERMISSION");
+ if (Strings.isNullOrEmpty(permission)) {
+ log.info("Received request to delete db record for User - " + userId);
+ ArrayList<String> delArgList = new ArrayList<>();
+ delArgList.add(vnf_type);
+ delArgList.add(userId);
+ String deleteQuery = "DELETE FROM DT_USER_PERMISSIONS WHERE VNF_TYPE = ? AND USER_ID = ?";
+ log.info(QUERY_STR + deleteQuery);
+ log.info("Arguments List: " + delArgList);
+ boolean status = dbservice.updateDBData(deleteQuery, delArgList);
+ if (!status) {
+ throw new DBException("Error while deleting record from DT_USER_PERMISSIONS");
+ } else {
+ log.info("Record deleted");
+ }
+ } else if (user_permission.matches(permission)) {
+ log.info("User " + userId + " permission record found in db for same vnf_type " + vnf_type
+ + ". No update needed.");
+ } else {
+ log.info("User's permission record will be updated. New permission: " + permission
+ + " for user " + userId + " as requested by " + requestId
+ + " will be saved to database.");
+ ArrayList<String> updateArgList = new ArrayList<>();
+ updateArgList.add(permission);
+ updateArgList.add(modifier);
+ updateArgList.add(dbDate);
+ updateArgList.add(vnf_type);
+ updateArgList.add(userId);
+
+ String updateQuery =
+ "UPDATE DT_USER_PERMISSIONS SET PERMISSION = ?, MODIFIER = ?, DATE_MODIFIED = ?"
+ + " WHERE VNF_TYPE = ? AND USER_ID = ?";
+ log.info(QUERY_STR + updateQuery);
+ log.info("Arguments List: " + updateArgList);
+ boolean updateStatus = dbservice.updateDBData(updateQuery, updateArgList);
+ if (!updateStatus) {
+ throw new DBException("Error while updating User Permissions");
+ }
+ }
+ }
+ }
+ if (rowCount == 0 && !(Strings.isNullOrEmpty(permission))) {
+ log.info("User not found in database for this vnf_type. The new permission " + permission
+ + " for user " + userId + " and vnf_type " + vnf_type + " as requested by " + requestId
+ + " will be saved to database.");
+ ArrayList<String> insertArgList = new ArrayList<>();
+ insertArgList.add(vnf_type);
+ insertArgList.add(userId);
+ insertArgList.add(permission);
+ insertArgList.add(modifier);
+ String insertQuery =
+ "INSERT INTO DT_USER_PERMISSIONS (VNF_TYPE, USER_ID, PERMISSION, DATE_MODIFIED, MODIFIER)"
+ + " VALUES (?, ?, ?, sysdate(), ?)";
+ log.info(QUERY_STR + insertQuery);
+ log.info("Arguments List: " + insertArgList);
+ boolean updateStatus = dbservice.updateDBData(insertQuery, insertArgList);
+ if (!updateStatus) {
+ throw new DBException("Error while inserting record for User Permissions");
+ }
+ }
+ }
+ } catch (Exception e) {
+ log.error("An error occurred in saveUserPermissionInfo " + e.getMessage(), e);
+ throw e;
+ }
+ return SUCCESS_JSON;
+ }
+