in security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java [5063:5264]
private void writeBookForPolicyItems(Map<String, String> svcNameToSvcType, RangerPolicy policy, RangerPolicyItem policyItem, RangerDataMaskPolicyItem dataMaskPolicyItem, RangerRowFilterPolicyItem rowFilterPolicyItem, Row row, String policyConditionType) {
LOG.debug("policyConditionType:[{}]", policyConditionType);
List<String> groups = new ArrayList<>();
List<String> users = new ArrayList<>();
List<String> roles = new ArrayList<>();
String roleNames = "";
String groupNames = "";
String policyConditionTypeValue = "";
String userNames = "";
String policyLabelNames = "";
String accessType = "";
Boolean delegateAdmin = false;
String isRecursive;
String isExcludes;
Boolean isAuditEnabled = policy.getIsAuditEnabled();
String isExcludesValue = "";
List<RangerPolicyItemAccess> accesses = new ArrayList<>();
List<RangerPolicyItemCondition> conditionsList = new ArrayList<>();
String conditionKeyValue = "";
List<String> policyLabels;
String resValue;
String resourceKeyVal = "";
String isRecursiveValue = "";
String resKey;
StringBuilder sb = new StringBuilder();
StringBuilder sbIsRecursive = new StringBuilder();
StringBuilder sbIsExcludes = new StringBuilder();
Map<String, RangerPolicyResource> resources = policy.getResources();
RangerPolicy.RangerPolicyItemDataMaskInfo dataMaskInfo;
RangerPolicy.RangerPolicyItemRowFilterInfo filterInfo;
row.createCell(0).setCellValue(policy.getId());
row.createCell(1).setCellValue(sanitizeCell(policy.getName()));
if (resources != null) {
for (Entry<String, RangerPolicyResource> resource : resources.entrySet()) {
resKey = resource.getKey();
RangerPolicyResource policyResource = resource.getValue();
List<String> resvalueList = policyResource.getValues();
isExcludes = policyResource.getIsExcludes().toString();
isRecursive = policyResource.getIsRecursive().toString();
resValue = resvalueList.toString();
sb.append(resourceKeyVal).append("; ").append(resKey).append("=").append(resValue);
sbIsExcludes.append(resourceKeyVal).append("; ").append(resKey).append("=[").append(isExcludes).append("]");
sbIsRecursive.append(resourceKeyVal).append("; ").append(resKey).append("=[").append(isRecursive).append("]");
}
isExcludesValue = sbIsExcludes.toString();
isExcludesValue = isExcludesValue.substring(1);
isRecursiveValue = sbIsRecursive.toString();
isRecursiveValue = isRecursiveValue.substring(1);
resourceKeyVal = sb.toString();
resourceKeyVal = resourceKeyVal.substring(1);
row.createCell(2).setCellValue(sanitizeCell(resourceKeyVal));
if (policyItem != null && dataMaskPolicyItem == null && rowFilterPolicyItem == null) {
roles = policyItem.getRoles();
groups = policyItem.getGroups();
users = policyItem.getUsers();
accesses = policyItem.getAccesses();
delegateAdmin = policyItem.getDelegateAdmin();
conditionsList = policyItem.getConditions();
} else if (dataMaskPolicyItem != null && policyItem == null && rowFilterPolicyItem == null) {
roles = dataMaskPolicyItem.getRoles();
groups = dataMaskPolicyItem.getGroups();
users = dataMaskPolicyItem.getUsers();
accesses = dataMaskPolicyItem.getAccesses();
delegateAdmin = dataMaskPolicyItem.getDelegateAdmin();
conditionsList = dataMaskPolicyItem.getConditions();
dataMaskInfo = dataMaskPolicyItem.getDataMaskInfo();
String dataMaskType = dataMaskInfo.getDataMaskType();
String conditionExpr = dataMaskInfo.getConditionExpr();
String valueExpr = dataMaskInfo.getValueExpr();
String maskingInfo = "dataMasktype=[" + dataMaskType + "]";
if (conditionExpr != null && !conditionExpr.isEmpty() && valueExpr != null && !valueExpr.isEmpty()) {
maskingInfo = maskingInfo + "; conditionExpr=[" + conditionExpr + "]";
}
row.createCell(18).setCellValue(sanitizeCell(maskingInfo));
} else if (rowFilterPolicyItem != null && policyItem == null && dataMaskPolicyItem == null) {
roles = rowFilterPolicyItem.getRoles();
groups = rowFilterPolicyItem.getGroups();
users = rowFilterPolicyItem.getUsers();
accesses = rowFilterPolicyItem.getAccesses();
delegateAdmin = rowFilterPolicyItem.getDelegateAdmin();
conditionsList = rowFilterPolicyItem.getConditions();
filterInfo = rowFilterPolicyItem.getRowFilterInfo();
String filterExpr = filterInfo.getFilterExpr();
row.createCell(19).setCellValue(sanitizeCell(filterExpr));
}
if (CollectionUtils.isNotEmpty(accesses)) {
for (RangerPolicyItemAccess access : accesses) {
accessType = accessType + access.getType();
accessType = accessType + " ,";
}
accessType = accessType.substring(0, accessType.lastIndexOf(","));
}
if (CollectionUtils.isNotEmpty(roles)) {
roleNames = roleNames + roles;
StringTokenizer roleToken = new StringTokenizer(roleNames, "[]");
while (roleToken.hasMoreTokens()) {
roleNames = roleToken.nextToken();
}
}
if (CollectionUtils.isNotEmpty(groups)) {
groupNames = groupNames + groups;
StringTokenizer groupToken = new StringTokenizer(groupNames, "[]");
while (groupToken.hasMoreTokens()) {
groupNames = groupToken.nextToken();
}
}
if (CollectionUtils.isNotEmpty(users)) {
userNames = userNames + users;
StringTokenizer userToken = new StringTokenizer(userNames, "[]");
while (userToken.hasMoreTokens()) {
userNames = userToken.nextToken();
}
}
String conditionValue = "";
for (RangerPolicyItemCondition conditions : conditionsList) {
String conditionType = conditions.getType();
List<String> conditionList = conditions.getValues();
conditionValue = conditionList.toString();
conditionKeyValue = conditionType + "=" + conditionValue;
}
row.createCell(3).setCellValue(sanitizeCell(roleNames));
row.createCell(4).setCellValue(sanitizeCell(groupNames));
row.createCell(5).setCellValue(sanitizeCell(userNames));
row.createCell(6).setCellValue(accessType.trim());
String serviceType = policy.getServiceType();
if (StringUtils.isBlank(serviceType)) {
serviceType = svcNameToSvcType.get(policy.getService());
if (serviceType == null) {
serviceType = "";
}
}
if (policyConditionType != null) {
policyConditionTypeValue = policyConditionType;
}
if (policyConditionType == null && serviceType.equalsIgnoreCase("tag")) {
policyConditionTypeValue = POLICY_ALLOW_INCLUDE;
} else if (policyConditionType == null) {
policyConditionTypeValue = "";
}
row.createCell(7).setCellValue(sanitizeCell(serviceType));
}
row.createCell(8).setCellValue(policy.getIsEnabled() ? "Enabled" : "Disabled");
row.createCell(9).setCellValue(getPolicyTypeString(policy.getPolicyType()));
row.createCell(10).setCellValue(delegateAdmin.toString().toUpperCase());
row.createCell(11).setCellValue(isRecursiveValue);
row.createCell(12).setCellValue(isExcludesValue);
row.createCell(13).setCellValue(sanitizeCell(policy.getService()));
row.createCell(14).setCellValue(sanitizeCell(policy.getDescription()));
row.createCell(15).setCellValue(isAuditEnabled.toString().toUpperCase());
row.createCell(16).setCellValue(sanitizeCell(conditionKeyValue.trim()));
row.createCell(17).setCellValue(sanitizeCell(policyConditionTypeValue));
policyLabels = policy.getPolicyLabels();
if (CollectionUtils.isNotEmpty(policyLabels)) {
policyLabelNames = policyLabelNames + policyLabels;
StringTokenizer policyLabelToken = new StringTokenizer(policyLabelNames, "[]");
while (policyLabelToken.hasMoreTokens()) {
policyLabelNames = policyLabelToken.nextToken();
}
}
row.createCell(20).setCellValue(sanitizeCell(policyLabelNames));
}