private Node getQueryPlan(Explain node, ExplainType.Type planType, ExplainFormat.Type planFormat)
throws IllegalArgumentException
{
PreparedQuery preparedQuery = queryPreparer.prepareQuery(session, node.getStatement());
if (planType == VALIDATE) {
queryExplainer.get().analyze(session, preparedQuery.getStatement(), preparedQuery.getParameters(), warningCollector);
return singleValueQuery("Valid", true);
}
String plan;
switch (planFormat) {
case GRAPHVIZ:
plan = queryExplainer.get().getGraphvizPlan(session, preparedQuery.getStatement(), planType, preparedQuery.getParameters(), warningCollector);
break;
case JSON:
plan = queryExplainer.get().getJsonPlan(session, preparedQuery.getStatement(), planType, preparedQuery.getParameters(), warningCollector);
break;
case TEXT:
plan = queryExplainer.get().getPlan(session, preparedQuery.getStatement(), planType, preparedQuery.getParameters(), warningCollector);
break;
default:
throw new IllegalArgumentException("Invalid Explain Format: " + planFormat.toString());
}
return singleValueQuery("Query Plan", plan);
}