private StringBuilder generateConditionSql()

in src/main/java/com/epam/digital/data/platform/liquibase/extension/sqlgenerator/core/DdmCreateAbstractViewGenerator.java [331:431]


    private StringBuilder generateConditionSql(List<DdmConditionConfig> conditions, boolean hasInternalParenthesis) {
        StringBuilder buffer = new StringBuilder();

        if (conditions == null) {
            return buffer;
        }

        boolean firstCondition = true;

        for (DdmConditionConfig condition : conditions) {
            boolean hasExternalParenthesis = ((conditions.size() > 1) && condition.getConditions() != null);

            if (condition.getLogicOperator() != null) {
                buffer.append(" ").append(condition.getLogicOperator()).append(" ");
            }

            if (hasExternalParenthesis) {
                buffer.append("(");
            }

            if (firstCondition && hasInternalParenthesis) {
                buffer.append("(");
            }
            firstCondition = false;

            buffer.append("(");

            if (condition.hasTableAlias()) {
                buffer.append(condition.getTableAlias());
                buffer.append(".");
            }

            buffer.append(condition.getColumnName());

            switch (condition.getOperator()) {
                case DdmConstants.OPERATOR_EQ:
                    buffer.append(" = ");
                    break;
                case DdmConstants.OPERATOR_NE:
                    buffer.append(" <> ");
                    break;
                case DdmConstants.OPERATOR_GT:
                    buffer.append(" > ");
                    break;
                case DdmConstants.OPERATOR_GE:
                    buffer.append(" >= ");
                    break;
                case DdmConstants.OPERATOR_LT:
                    buffer.append(" < ");
                    break;
                case DdmConstants.OPERATOR_LE:
                    buffer.append(" <= ");
                    break;
                case DdmConstants.OPERATOR_IN:
                    buffer.append(" IN (");
                    buffer.append(condition.getValue());
                    buffer.append(")");
                    break;
                case DdmConstants.OPERATOR_NOT_IN:
                    buffer.append(" NOT IN (");
                    buffer.append(condition.getValue());
                    buffer.append(")");
                    break;
                case DdmConstants.OPERATOR_IS_NULL:
                    buffer.append(" IS");

                    if (condition.getValue().equals(DdmConstants.ATTRIBUTE_FALSE)) {
                        buffer.append(" NOT");
                    }

                    buffer.append(" NULL");
                    break;
                case DdmConstants.OPERATOR_SIMILAR:
                    buffer.append(" ~ ");
                    break;
                case DdmConstants.OPERATOR_LIKE:
                    buffer.append(" LIKE ");
                    break;
            }

            if (!Arrays.asList(DdmConstants.OPERATOR_IS_NULL, DdmConstants.OPERATOR_IN, DdmConstants.OPERATOR_NOT_IN).contains(condition.getOperator())) {
                buffer.append(condition.getValue());
            }

            buffer.append(")");

            boolean needParenthesis = (condition.getConditions() != null && condition.getConditions().size() > 1);
            buffer.append(generateConditionSql(condition.getConditions(), needParenthesis));

            if (hasExternalParenthesis) {
                buffer.append(")");
            }

        }

        if (hasInternalParenthesis) {
            buffer.append(")");
        }

        return buffer;
    }