private void writeBookForPolicyItems()

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));
    }