2010-04-22 3 views
5

J'ai une requête HQL:Parse HQL Structure AST et convertir AST Retour à HQL

query = select item.itemNumber from items item where item.stock>0 and item.price<100.00 

j'aime analyser cette requête et le convertir en une structure arborescente:

AST queryTree = parse(query); 

que i comme à itérer les nœuds, modifier certaines valeurs, et convertir l'arbre en une chaîne represenation:

Iterator<ASTNode> it = queryTree.nodeIterator(); 
while(it.hasNext()) 
{ 
    ASTNode node = it.next(); 
    System.out.println(node.text() + "->" + node.value()); 
} 
query = queryTree.toString(); 

ce serait bien si t La méthode parse jetterait des exceptions au cas où le grammaire HQL serait violé, mais ce n'est pas nécessaire. Quelqu'un at-il une idée de comment cela peut être accompli? Existe-t-il des méthodes d'API offertes par hibernate pour accomplir cette tâche?

Merci,

Répondre