public Set<String> getEntityNames() { return queryTree.visit(new EntitiesFinder()) .resolveEntityNames(queryTree.getModel(), queryTree.getQueryVariableContext()); }
public String getVariableNameByEntity(String entityType) { return getQueryVariableContext().getVariableNameByEntity(entityType); }
@Override public CommonTree treeToQueryPost(QueryBuilder sb, List<ErrorRec> invalidNodes) { sb.appendSpace(); sb.appendString(variableName); return this; }
@Override public String getResult() { return getTree().visit(new TreeToQuery()).getQueryString().trim(); }
@Override public CommonTree treeToQueryPost(QueryBuilder sb, List<ErrorRec> invalidNodes) { if (parent != null) { if (' ' == sb.getLast()) sb.deleteLast(); sb.appendString(") "); } return this; } }
public QueryVariableContext getContextByCaretPosition(int caretPosition) { if (!node.contains(caretPosition)) { return null; } for (QueryVariableContext child : children) { QueryVariableContext childResult = child.getContextByCaretPosition(caretPosition); if (childResult != null) return childResult; } return this; }
public QueryTree(DomainModel model, String query, boolean failOnErrors) { Preconditions.checkNotNull(query, "query is null"); String modifiedQuery = StringUtils.replaceChars(query, "\n\r\t", " "); this.model = model; this.queryString = modifiedQuery; try { this.tree = Parser.parse(modifiedQuery, failOnErrors); } catch (RecognitionException e) { throw new JPA2RecognitionException("JPA grammar recognition error", e); } this.idVarSelector = new IdVarSelector(model); new TreeVisitor().visit(tree, idVarSelector); }
/** * @return returns list of join variable nodes (JOIN entityName entityAlias ON clause) from FROM statement */ public Stream<JoinVariableNode> getAstJoinVariableNodes() { return generateChildrenByClass(getAstFromNode(), SelectionSourceNode.class) .flatMap(selectionSource -> generateChildrenByClass(selectionSource, JoinVariableNode.class)); }
public void appendChar(char c) { if (sb.length() != 0 && getLast() == ' ' && (c == ' ' || c == ')' || c == ',')) { deleteLast(); } sb.append(c); }
@Override public CommonTree treeToQueryPre(QueryBuilder sb, List<ErrorRec> invalidNodes) { sb.appendString("@enum"); sb.appendString("("); sb.appendString(enumName); sb.appendString(")"); return this; }
public DomainModel(JpqlEntityModel... initialEntities) { for (JpqlEntityModel initialEntity : initialEntities) { add(initialEntity); } }
@Override public void emitErrorMessage(String msg) { throw new JPA2RecognitionException(msg); } }
public String getQueryString() { return sb.toString(); } }
public List<ErrorRec> getInvalidIdVarNodes() { return idVarSelector.getInvalidIdVarNodes(); }
public QueryVariableContext getQueryVariableContext() { return idVarSelector.getContextTree(); }
@Override public CommonTree treeToQueryPre(QueryBuilder sb, List<ErrorRec> invalidNodes) { sb.appendSpace(); sb.appendString("in("); return this; }
/** * @return returns list of identification variable nodes (entityName entityAlias) from FROM statement */ public Stream<IdentificationVariableNode> getAstIdentificationVariableNodes() { return generateChildrenByClass(getAstFromNode(), SelectionSourceNode.class) .flatMap(selectionSource -> generateChildrenByClass(selectionSource, IdentificationVariableNode.class)); }
@Override public CommonTree treeToQueryPost(QueryBuilder sb, List<ErrorRec> invalidNodes) { sb.appendString(")"); sb.appendSpace(); sb.appendString(variableName); return this; } }
@Override public CommonTree treeToQueryPre(QueryBuilder sb, List<ErrorRec> invalidNodes) { sb.appendSpace(); sb.appendString(whereT.getText()); return this; } }
@Override public CommonTree treeToQueryPre(QueryBuilder sb, List<ErrorRec> invalidNodes) { sb.appendSpace(); sb.appendString(fromT.getText()); return this; } }