private HqlSqlWalker getWalker() { return sqlAst.getWalker(); }
@Override public List<String> getPrimaryFromClauseTables() { return (List<String>) sqlAst.getWalker() .getFinalFromClause() .getFromElements() .stream() .map( elem -> ((FromElement) elem).getTableName() ). collect( Collectors.toList() ); }
private HqlSqlWalker getWalker() { return sqlAst.getWalker(); }
private HqlSqlWalker getWalker() { return sqlAst.getWalker(); }
/** * Creates an array of statements that generates code for the array of named parameters in the query. */ private Statement[] generateQueryParamArray() { if (logger.isDebugEnabled()) { logger.debug("Named parameters: " + query.getParameterTranslations().getNamedParameterInformationMap().keySet()); } @SuppressWarnings("unchecked") List<ParameterSpecification> parameterSpecifications = query.getSqlAST().getWalker().getParameterSpecs(); Statement generatedParamList[] = new Statement[parameterSpecifications.size()]; for (int i = 0; i < parameterSpecifications.size(); i++) { NamedParameterSpecification ps = (NamedParameterSpecification) parameterSpecifications.get(i); // invoking ErraiParameter(String name, Integer position, Class<T> type) Class<?> paramType; if (ps.getExpectedType() != null) { paramType = ps.getExpectedType().getReturnedClass(); } else { paramType = Object.class; } generatedParamList[i] = Stmt.newObject(ErraiParameter.class).withParameters( ps.getName(), Integer.valueOf(i), paramType); } return generatedParamList; }
/** * Adds the public override method {@code matches(JSONObject candidate)} to * the given class builder. The matching logic is, of course, generated based * on the JPA query this generator was created with. * * @param classBuilder * The class builder to append the generated matcher method to. */ private void appendMatchesMethod(AnonymousClassStructureBuilder classBuilder) { AstInorderTraversal traverser = new AstInorderTraversal(query.getSqlAST().getWalker().getAST()); AST whereClause = traverser.fastForwardTo(HqlSqlTokenTypes.WHERE); BlockBuilder<?> matchesMethod = classBuilder .publicOverridesMethod("matches", Parameter.of(JSONObject.class, "candidate")); Statement matchesStmt; if (whereClause != null) { matchesStmt = generateExpression(traverser, new JsonDotNodeResolver(), matchesMethod); } else { matchesStmt = Stmt.loadLiteral(true); } matchesMethod.append(Stmt.nestedCall(matchesStmt).returnValue()); matchesMethod.finish(); }
AstInorderTraversal traverser = new AstInorderTraversal(query.getSqlAST().getWalker().getAST()); final AST orderByParentNode = traverser.fastForwardTo(HqlSqlTokenTypes.ORDER);