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