001/*
002 * (C) Copyright 2006-2010 Nuxeo SAS (http://nuxeo.com/) and contributors.
003 *
004 * All rights reserved. This program and the accompanying materials
005 * are made available under the terms of the GNU Lesser General Public License
006 * (LGPL) version 2.1 which accompanies this distribution, and is available at
007 * http://www.gnu.org/licenses/lgpl.html
008 *
009 * This library is distributed in the hope that it will be useful,
010 * but WITHOUT ANY WARRANTY; without even the implied warranty of
011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
012 * Lesser General Public License for more details.
013 *
014 * Contributors:
015 *     bstefanescu
016 */
017package org.nuxeo.shell.automation.cmds;
018
019import org.nuxeo.ecm.automation.client.model.Document;
020import org.nuxeo.ecm.automation.client.model.Documents;
021import org.nuxeo.shell.Argument;
022import org.nuxeo.shell.Command;
023import org.nuxeo.shell.Context;
024import org.nuxeo.shell.Parameter;
025import org.nuxeo.shell.ShellConsole;
026import org.nuxeo.shell.ShellException;
027import org.nuxeo.shell.automation.DocRefCompletor;
028import org.nuxeo.shell.automation.DocumentHelper;
029import org.nuxeo.shell.automation.RemoteContext;
030
031/**
032 * @author <a href="mailto:bs@nuxeo.com">Bogdan Stefanescu</a>
033 */
034@Command(name = "query", help = "Query documents")
035public class Query implements Runnable {
036
037    @Context
038    protected RemoteContext ctx;
039
040    @Parameter(name = "-uid", hasValue = false, help = "If used the matching documents will be printed using the document UID.")
041    protected boolean uid = false;
042
043    @Argument(name = "query", index = 1, required = false, completor = DocRefCompletor.class, help = "The document path")
044    protected String query;
045
046    public void run() {
047        try {
048            Documents docs = ctx.getDocumentService().query(query);
049            ShellConsole console = ctx.getShell().getConsole();
050            for (Document doc : docs) {
051                if (uid) {
052                    console.println(doc.getId());
053                } else {
054                    DocumentHelper.printPath(console, doc);
055                }
056            }
057        } catch (Exception e) {
058            throw new ShellException(e);
059        }
060    }
061}