package jcr; import javax.jcr.*; import javax.jcr.nodetype.PropertyDefinition; import javax.jcr.query.QueryManager; import javax.jcr.query.Query; import javax.jcr.query.QueryResult; import java.io.IOException; import java.io.BufferedReader; import java.io.InputStreamReader; public class CommandLineQuery extends Base { public CommandLineQuery() { } public static void main(String[] args) throws IOException, RepositoryException { CommandLineQuery clq=new CommandLineQuery(); clq.run(); } private void run() throws IOException, RepositoryException { Repository repository=getRepository(); Session session=getReadonlySession(repository); Workspace workspace=session.getWorkspace(); QueryManager qm=workspace.getQueryManager(); BufferedReader reader=new BufferedReader(new InputStreamReader(System.in)); for(;;) { System.out.print("JCRQL> "); String queryString=reader.readLine(); if(queryString.equals("quit")) { break; } if(queryString.length()==0 || queryString.startsWith("#")) { continue; } int resultCounter=0; try { Query query=qm.createQuery(queryString, Query.XPATH); QueryResult queryResult=query.execute(); NodeIterator nodeIterator=queryResult.getNodes(); while(nodeIterator.hasNext()) { Node node=nodeIterator.nextNode(); dump(node); resultCounter++; } } catch(Exception e) { e.printStackTrace(); } System.out.println("result count: "+resultCounter); } logout(session); } private void dump(Node node) throws RepositoryException { StringBuilder sb=new StringBuilder(); String sep=","; sb.append(node.getName()); sb.append("["+node.getPath()); PropertyIterator propIterator=node.getProperties(); while(propIterator.hasNext()) { Property prop=propIterator.nextProperty(); sb.append(sep); sb.append("@"+prop.getName()+"=\""+prop.getString()+"\""); } sb.append("]"); System.out.println(sb.toString()); } }