public static IgniteQuery generateSql()

in modules/spring-data-ext/spring-data/src/main/java/org/apache/ignite/springdata/repository/query/IgniteQueryGenerator.java [46:114]


    public static IgniteQuery generateSql(Method mtd, RepositoryMetadata metadata) {
        PartTree parts;

        try {
            parts = new PartTree(mtd.getName(), metadata.getDomainType());
        }
        catch (PropertyReferenceException e) {
            parts = new PartTree(mtd.getName(), metadata.getIdType());
        }

        boolean isCntOrFieldQry = parts.isCountProjection();

        StringBuilder sql = new StringBuilder();

        if (parts.isDelete()) {
            sql.append("DELETE ");

            // For the DML queries aside from SELECT *, they should run over SqlFieldQuery
            isCntOrFieldQry = true;
        }
        else {
            sql.append("SELECT ");

            if (parts.isDistinct())
                throw new UnsupportedOperationException("DISTINCT clause in not supported.");

            if (isCntOrFieldQry)
                sql.append("COUNT(1) ");
            else
                sql.append("* ");
        }

        sql.append("FROM ").append(metadata.getDomainType().getSimpleName());

        if (parts.iterator().hasNext()) {
            sql.append(" WHERE ");

            for (PartTree.OrPart orPart : parts) {
                sql.append("(");

                for (Part part : orPart) {
                    handleQueryPart(sql, part, metadata.getDomainType());
                    sql.append(" AND ");
                }

                sql.delete(sql.length() - 5, sql.length());

                sql.append(") OR ");
            }

            sql.delete(sql.length() - 4, sql.length());
        }

        addSorting(sql, parts.getSort());

        if (parts.isLimiting()) {
            sql.append(" LIMIT ");
            sql.append(parts.getMaxResults().intValue());
        }

        return new IgniteQuery(
            sql.toString(),
            isCntOrFieldQry,
            false,
            true,
            isParametersDependent(parts),
            getOptions(mtd)
        );
    }