Return-Path:
Delivered-To: apmail-incubator-jackrabbit-commits-archive@www.apache.org
Received: (qmail 87631 invoked from network); 11 Aug 2005 18:06:39 -0000
Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199)
by minotaur.apache.org with SMTP; 11 Aug 2005 18:06:39 -0000
Received: (qmail 87982 invoked by uid 500); 11 Aug 2005 18:06:38 -0000
Mailing-List: contact jackrabbit-commits-help@incubator.apache.org;
run by ezmlm
Precedence: bulk
List-Help:
List-Unsubscribe:
List-Post:
List-Id:
Reply-To: jackrabbit-dev@incubator.apache.org
Delivered-To: mailing list jackrabbit-commits@incubator.apache.org
Received: (qmail 87739 invoked by uid 500); 11 Aug 2005 18:06:36 -0000
Delivered-To: apmail-incubator-jackrabbit-cvs@incubator.apache.org
Received: (qmail 87425 invoked by uid 99); 11 Aug 2005 18:06:33 -0000
X-ASF-Spam-Status: No, hits=-9.8 required=10.0
tests=ALL_TRUSTED,NO_REAL_NAME
X-Spam-Check-By: apache.org
Received: from [209.237.227.194] (HELO minotaur.apache.org) (209.237.227.194)
by apache.org (qpsmtpd/0.29) with SMTP; Thu, 11 Aug 2005 11:06:26 -0700
Received: (qmail 87216 invoked by uid 65534); 11 Aug 2005 18:06:25 -0000
Message-ID: <20050811180625.87215.qmail@minotaur.apache.org>
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: svn commit: r231495 [6/7] - in
/incubator/jackrabbit/trunk/contrib/jcr-commands: ./ applications/test/
applications/test/fs/ applications/test/fs/dummy folder/ benchmarking/
src/java/ src/java/org/apache/jackrabbit/chain/
src/java/org/apache/jackrabbit...
Date: Thu, 11 Aug 2005 18:06:07 -0000
To: jackrabbit-cvs@incubator.apache.org
From: edgarpoce@apache.org
X-Mailer: svnmailer-1.0.3
X-Virus-Checked: Checked by ClamAV on apache.org
X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N
Added: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/AbstractLsProperties.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/AbstractLsProperties.java?rev=231495&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/AbstractLsProperties.java (added)
+++ incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/AbstractLsProperties.java Thu Aug 11 11:04:29 2005
@@ -0,0 +1,113 @@
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.chain.command.info;
+
+import java.util.Iterator;
+
+import javax.jcr.Property;
+import javax.jcr.PropertyIterator;
+import javax.jcr.PropertyType;
+
+import org.apache.commons.chain.Context;
+import org.apache.jackrabbit.chain.CtxHelper;
+
+/**
+ * List properties superclass
+ */
+public abstract class AbstractLsProperties extends AbstractLs
+{
+ /** name width */
+ private int nameWidth = 35;
+
+ /** node type width */
+ private int typeWidth = 15;
+
+ /**
+ * @inheritDoc
+ */
+ public final boolean execute(Context ctx) throws Exception
+ {
+ int[] width = new int[]
+ {
+ 35, longWidth, longWidth, longWidth
+ };
+
+ String header[] = new String[]
+ {
+ bundle.getString("name"), bundle.getString("multiple"),
+ bundle.getString("type"), bundle.getString("length")
+ };
+
+ PrintHelper.printRow(ctx, width, header);
+ PrintHelper.printSeparatorRow(ctx, width, '-');
+
+ int index = 0;
+ Iterator iter = getProperties(ctx);
+
+ int maxItems = getMaxItems(ctx) ;
+
+ while (iter.hasNext() && index < maxItems)
+ {
+ Property p = (Property) iter.next();
+
+ long length = 0;
+
+ if (p.getDefinition().isMultiple())
+ {
+ long[] lengths = p.getLengths();
+ for (int i = 0; i < lengths.length; i++)
+ {
+ length += lengths[i];
+ }
+ } else
+ {
+ length = p.getLength();
+ }
+
+ String multiple = Boolean.toString(p.getDefinition().isMultiple());
+ if (p.getDefinition().isMultiple())
+ {
+ multiple += "[" + p.getValues().length + "]";
+ }
+
+ String[] row = new String[]
+ {
+ p.getName(), multiple,
+ PropertyType.nameFromValue(p.getType()),
+ Long.toString(length)
+ };
+ PrintHelper.printRow(ctx, width, row);
+ index++;
+ }
+
+ CtxHelper.getOutput(ctx).println();
+
+ // Write footer
+ printFooter(ctx, (PropertyIterator) iter);
+
+ return false;
+ }
+
+ /**
+ * Subclasses are responsible of collecting the properties to display
+ *
+ * @param ctx
+ * @return
+ */
+ protected abstract Iterator getProperties(Context ctx) throws Exception;
+
+}
Propchange: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/AbstractLsProperties.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/Cat.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/Cat.java?rev=231495&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/Cat.java (added)
+++ incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/Cat.java Thu Aug 11 11:04:29 2005
@@ -0,0 +1,168 @@
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.chain.command.info;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringReader;
+
+import javax.jcr.Item;
+import javax.jcr.Node;
+import javax.jcr.PathNotFoundException;
+import javax.jcr.Property;
+import javax.jcr.RepositoryException;
+import javax.jcr.Value;
+import javax.jcr.ValueFormatException;
+
+import org.apache.commons.chain.Command;
+import org.apache.commons.chain.Context;
+import org.apache.jackrabbit.chain.CtxHelper;
+import org.apache.jackrabbit.chain.JcrCommandException;
+
+/**
+ * Displays the content of a property or a node of type nt:file or nt:resource
+ */
+public class Cat implements Command
+{
+ /** property name */
+ private String path;
+
+ /** index. [optional] argument to display multivalue properties */
+ private int index;
+
+ /**
+ * @inheritDoc
+ */
+ public boolean execute(Context ctx) throws Exception
+ {
+ Item item = CtxHelper.getItem(ctx, path);
+ if (item.isNode())
+ {
+ printNode(ctx, (Node) item);
+ } else
+ {
+ printProperty(ctx, (Property) item);
+ }
+ return false;
+ }
+
+ public String getPath()
+ {
+ return path;
+ }
+
+ public void setPath(String path)
+ {
+ this.path = path;
+ }
+
+ /**
+ *
+ * @param ctx
+ * @param n
+ * @throws PathNotFoundException
+ * @throws JcrCommandException
+ * @throws RepositoryException
+ * @throws IllegalStateException
+ * @throws IOException
+ */
+ private void printNode(Context ctx, Node n) throws PathNotFoundException,
+ JcrCommandException, RepositoryException, IllegalStateException,
+ IOException
+ {
+ if (n.isNodeType("nt:file"))
+ {
+ printValue(ctx, n.getNode("jcr:content").getProperty("jcr:data")
+ .getValue());
+ } else if (n.isNodeType("nt:resource"))
+ {
+ printValue(ctx, n.getProperty("jcr:data").getValue());
+ } else
+ {
+ throw new JcrCommandException("cat.unsupported.type", new String[]
+ {
+ n.getPrimaryNodeType().getName()
+ });
+ }
+ }
+
+ /**
+ *
+ * @param ctx
+ * @param p
+ * @throws JcrCommandException
+ * @throws ValueFormatException
+ * @throws IllegalStateException
+ * @throws RepositoryException
+ * @throws IOException
+ */
+ private void printProperty(Context ctx, Property p)
+ throws JcrCommandException, ValueFormatException,
+ IllegalStateException, RepositoryException, IOException
+ {
+ if (p.getDefinition().isMultiple())
+ {
+ printValue(ctx, p.getValues()[index]);
+ } else
+ {
+ printValue(ctx, p.getValue());
+ }
+ }
+
+ /**
+ * Read the value
+ *
+ * @param ctx
+ * @param value
+ * @throws ValueFormatException
+ * @throws IllegalStateException
+ * @throws RepositoryException
+ * @throws IOException
+ */
+ private void printValue(Context ctx, Value value)
+ throws ValueFormatException, IllegalStateException,
+ RepositoryException, IOException
+ {
+ PrintWriter out = CtxHelper.getOutput(ctx);
+ out.println();
+ BufferedReader in = new BufferedReader(new StringReader(value
+ .getString()));
+ String str = null;
+ while ((str = in.readLine()) != null)
+ {
+ out.println(str);
+ }
+ }
+
+ /**
+ * @return Returns the index.
+ */
+ public int getIndex()
+ {
+ return index;
+ }
+
+ /**
+ * @param index
+ * The index to set.
+ */
+ public void setIndex(int index)
+ {
+ this.index = index;
+ }
+}
Propchange: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/Cat.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/Dump.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/Dump.java?rev=231495&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/Dump.java (added)
+++ incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/Dump.java Thu Aug 11 11:04:29 2005
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.chain.command.info;
+
+import java.io.PrintWriter;
+
+import javax.jcr.Node;
+import javax.jcr.NodeIterator;
+import javax.jcr.Property;
+import javax.jcr.PropertyIterator;
+import javax.jcr.RepositoryException;
+import javax.jcr.Value;
+
+import org.apache.commons.chain.Command;
+import org.apache.commons.chain.Context;
+import org.apache.jackrabbit.chain.CtxHelper;
+
+/**
+ * Dumps stored data from the current working node
+ */
+public class Dump implements Command
+{
+
+ public boolean execute(Context ctx) throws Exception
+ {
+ PrintWriter out = CtxHelper.getOutput(ctx) ;
+ dump(out, CtxHelper.getCurrentNode(ctx));
+ return false;
+ }
+
+ public void dump(PrintWriter out, Node n) throws RepositoryException
+ {
+ out.println(n.getPath()) ;
+ PropertyIterator pit = n.getProperties();
+ while (pit.hasNext())
+ {
+ Property p = pit.nextProperty();
+ out.print(p.getPath() + "=");
+ if (p.getDefinition().isMultiple())
+ {
+ Value[] values = p.getValues();
+ for (int i = 0; i < values.length; i++)
+ {
+ if (i > 0)
+ out.println(",");
+ out.println(values[i].getString());
+ }
+ } else
+ {
+ out.print(p.getString());
+ }
+ out.println();
+ }
+ NodeIterator nit = n.getNodes();
+ while (nit.hasNext())
+ {
+ Node cn = nit.nextNode();
+ dump(out, cn);
+ }
+ }
+}
Propchange: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/Dump.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/Help.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/Help.java?rev=231495&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/Help.java (added)
+++ incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/Help.java Thu Aug 11 11:04:29 2005
@@ -0,0 +1,223 @@
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.chain.command.info;
+
+import java.io.PrintWriter;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.apache.commons.chain.Context;
+import org.apache.commons.cli.HelpFormatter;
+import org.apache.jackrabbit.chain.CtxHelper;
+import org.apache.jackrabbit.chain.JcrCommandException;
+import org.apache.jackrabbit.chain.cli.AbstractParameter;
+import org.apache.jackrabbit.chain.cli.Argument;
+import org.apache.jackrabbit.chain.cli.CommandLine;
+import org.apache.jackrabbit.chain.cli.CommandLineFactory;
+import org.apache.jackrabbit.chain.cli.Flag;
+import org.apache.jackrabbit.chain.cli.Option;
+
+/**
+ * Help on available commands
+ */
+public class Help extends AbstractInfoCommand
+{
+ /** Command factory */
+ private CommandLineFactory factory = CommandLineFactory.getInstance();
+
+ /** Help formatter */
+ private HelpFormatter hf = new HelpFormatter();
+
+ private String command;
+
+ public boolean execute(Context ctx) throws Exception
+ {
+ PrintWriter out = CtxHelper.getOutput(ctx);
+ out.println();
+ if (command == null)
+ {
+ helpAll(ctx);
+ } else
+ {
+ helpCommand(ctx);
+ }
+ return false;
+ }
+
+ /**
+ * Writes help for all the commands
+ *
+ * @param ctx
+ * @throws JcrCommandException
+ */
+ private void helpAll(Context ctx) throws JcrCommandException
+ {
+ PrintWriter out = CtxHelper.getOutput(ctx);
+ Collection descriptors = factory.getCommandLines();
+ Iterator iter = descriptors.iterator();
+
+ // Tab position
+ int tabPos = 20;
+ while (iter.hasNext())
+ {
+ CommandLine desc = (CommandLine) iter.next();
+ if (desc.getName().length() > tabPos)
+ {
+ tabPos = desc.getName().length() + 1;
+ }
+ }
+
+ iter = descriptors.iterator();
+ while (iter.hasNext())
+ {
+ CommandLine desc = (CommandLine) iter.next();
+ StringBuffer buf = new StringBuffer(desc.getName());
+ buf.setLength(tabPos);
+ for (int i = desc.getName().length(); i < buf.length(); i++)
+ {
+ buf.setCharAt(i, ' ');
+ }
+ buf.append(desc.getLocalizedDescription());
+ hf.printWrapped(out, 74, tabPos, buf.toString());
+ }
+ }
+
+ /**
+ * Writes detailed help for the given command
+ *
+ * @param ctx
+ * @throws JcrCommandException
+ */
+ private void helpCommand(Context ctx) throws JcrCommandException
+ {
+ PrintWriter out = CtxHelper.getOutput(ctx);
+
+ CommandLine desc = factory.getCommandLine(this.command);
+
+ out.println(bundle.getString("description") + ": ");
+ out.println(desc.getLocalizedDescription());
+ out.println();
+
+ // Usage
+ out.print(bundle.getString("usage") + ":");
+ out.print(desc.getName() + " ");
+
+ // Arguments
+ Iterator iter = desc.getArguments().values().iterator();
+ while (iter.hasNext())
+ {
+ Argument arg = (Argument) iter.next();
+ out.print("<" + arg.getLocalizedArgName() + "> ");
+ }
+
+ // Options
+ iter = desc.getOptions().values().iterator();
+ while (iter.hasNext())
+ {
+ Option arg = (Option) iter.next();
+ out.print("-" + arg.getName() + " <" + arg.getLocalizedArgName()
+ + "> ");
+ }
+
+ // flags
+ iter = desc.getFlags().values().iterator();
+ while (iter.hasNext())
+ {
+ Flag arg = (Flag) iter.next();
+ out.print("-" + arg.getName() + " ");
+ }
+ out.println();
+
+
+ // Alias
+ if (desc.getAlias().size()>0) {
+ out.print(bundle.getString("alias") + ":");
+ iter = desc.getAlias().iterator();
+ while (iter.hasNext())
+ {
+ out.print((String) iter.next() + " ");
+
+ }
+ out.println();
+ }
+ out.println();
+
+ // Arguments details
+ if (desc.getArguments().size() > 0)
+ {
+ out.println("<" + bundle.getString("arguments") + ">");
+ printParam(ctx, desc.getArguments().values());
+ }
+
+ // Options details
+ if (desc.getOptions().values().size() > 0)
+ {
+ out.println();
+ out.println("<" + bundle.getString("options") + ">");
+ printParam(ctx, desc.getOptions().values());
+ }
+
+ // flag details
+ if (desc.getFlags().values().size() > 0)
+ {
+ out.println();
+ out.println("<" + bundle.getString("flags") + ">");
+ printParam(ctx, desc.getFlags().values());
+ }
+
+ }
+
+private void printParam(Context ctx, Collection params)
+ {
+ PrintWriter out = CtxHelper.getOutput(ctx);
+ int[] width = new int[]
+ {
+ 10, 10, 10, 40
+ };
+
+ String[] header = new String[]
+ {
+ bundle.getString("name"), bundle.getString("arg.name"),
+ bundle.getString("required"), bundle.getString("description")
+ };
+
+ PrintHelper.printRow(ctx, width, header);
+ PrintHelper.printSeparatorRow(ctx, width, '-');
+
+ Iterator iter = params.iterator();
+ while (iter.hasNext())
+ {
+ AbstractParameter p = (AbstractParameter) iter.next();
+ String[] item = new String[]
+ {
+ p.getName(), p.getLocalizedArgName(),
+ Boolean.toString(p.isRequired()),
+ p.getLocalizedDescription()
+ };
+ PrintHelper.printRow(ctx, width, item);
+ }
+
+ } public String getCommand()
+ {
+ return command;
+ }
+
+ public void setCommand(String command)
+ {
+ this.command = command;
+ }
+}
Propchange: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/Help.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/JcrInfoCommandException.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/JcrInfoCommandException.java?rev=231495&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/JcrInfoCommandException.java (added)
+++ incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/JcrInfoCommandException.java Thu Aug 11 11:04:29 2005
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.chain.command.info;
+
+import org.apache.jackrabbit.chain.JcrCommandException;
+
+/**
+ * Exception thrown by Info Commands
+ */
+public class JcrInfoCommandException extends JcrCommandException
+{
+ /**
+ * Comment for serialVersionUID
+ */
+ private static final long serialVersionUID = 3257854259679866933L;
+
+ /**
+ * @param message
+ */
+ public JcrInfoCommandException(String message)
+ {
+ super(message);
+ }
+
+ /**
+ * @param message
+ * @param arguments
+ */
+ public JcrInfoCommandException(String message, Object[] arguments)
+ {
+ super(message, arguments);
+ }
+
+ /**
+ * @param message
+ * @param cause
+ */
+ public JcrInfoCommandException(String message, Throwable cause)
+ {
+ super(message, cause);
+ }
+
+ /**
+ * @param message
+ * @param cause
+ * @param arguments
+ */
+ public JcrInfoCommandException(String message, Throwable cause,
+ Object[] arguments)
+ {
+ super(message, cause, arguments);
+ }
+}
Propchange: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/JcrInfoCommandException.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsCollectedItems.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsCollectedItems.java?rev=231495&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsCollectedItems.java (added)
+++ incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsCollectedItems.java Thu Aug 11 11:04:29 2005
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.chain.command.info;
+
+import java.util.Iterator;
+
+import javax.jcr.RepositoryException;
+
+import org.apache.commons.chain.Context;
+import org.apache.jackrabbit.chain.JcrCommandException;
+
+/**
+ * Lists collected nodes. This Command looks for an Iterator under the given
+ * context variable and lists its items.
+ */
+public class LsCollectedItems extends AbstractLsItems
+{
+ /** Context variable that holds the Iterator */
+ private String fromKey = "collected";
+
+ /**
+ * @return the context variable
+ */
+ public String getFromKey()
+ {
+ return fromKey;
+ }
+
+ /**
+ * Sets the context variable
+ * @param context variable name
+ */
+ public void setFromKey(String contextVariable)
+ {
+ this.fromKey = contextVariable;
+ }
+
+ /**
+ * @inheritDoc
+ */
+ protected Iterator getItems(Context ctx) throws JcrCommandException,
+ RepositoryException
+ {
+ // Always show the path
+ this.setPath(true);
+ Object o = ctx.get(this.fromKey);
+ if (o == null || !(o instanceof Iterator))
+ {
+ throw new JcrInfoCommandException(
+ "illegalargument.no.iterator.under", new String[]
+ {
+ fromKey
+ });
+ }
+ return (Iterator) o;
+ }
+}
Propchange: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsCollectedItems.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsCollectedNodes.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsCollectedNodes.java?rev=231495&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsCollectedNodes.java (added)
+++ incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsCollectedNodes.java Thu Aug 11 11:04:29 2005
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.chain.command.info;
+
+import java.util.Iterator;
+
+import javax.jcr.RepositoryException;
+
+import org.apache.commons.chain.Context;
+import org.apache.jackrabbit.chain.JcrCommandException;
+
+/**
+ * Lists collected nodes. This Command looks for an Iterator under the given
+ * context variable and lists its nodes.
+ */
+public class LsCollectedNodes extends AbstractLsNodes
+{
+ /** Context variable that holds the Iterator */
+ private String fromKey = "collected";
+
+ /**
+ * @return the context variable
+ */
+ public String getFromKey()
+ {
+ return fromKey;
+ }
+
+ /**
+ * Sets the context variable
+ * @param context variable name
+ */
+ public void setFromKey(String contextVariable)
+ {
+ this.fromKey = contextVariable;
+ }
+
+ /**
+ * @inheritDoc
+ */
+ protected Iterator getNodes(Context ctx) throws JcrCommandException,
+ RepositoryException
+ {
+ this.setPath(true);
+ Object o = ctx.get(this.fromKey);
+ if (o == null || !(o instanceof Iterator))
+ {
+ throw new JcrInfoCommandException(
+ "illegalargument.no.iterator.under", new String[]
+ {
+ fromKey
+ });
+ }
+ return (Iterator) o;
+ }
+}
Propchange: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsCollectedNodes.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsCollectedProperties.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsCollectedProperties.java?rev=231495&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsCollectedProperties.java (added)
+++ incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsCollectedProperties.java Thu Aug 11 11:04:29 2005
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.chain.command.info;
+
+import java.util.Iterator;
+
+import javax.jcr.RepositoryException;
+
+import org.apache.commons.chain.Context;
+import org.apache.jackrabbit.chain.JcrCommandException;
+
+/**
+ * Lists collected properties.
+ * This Command looks for an Iterator under the given
+ * context variable and lists its properties.
+ */
+public class LsCollectedProperties extends AbstractLsProperties
+{
+ /** Context variable that holds the Iterator */
+ private String fromKey = "collected";
+
+ /**
+ * @return the context variable
+ */
+ public String getFromKey()
+ {
+ return fromKey;
+ }
+
+ /**
+ * Sets the context variable
+ * @param context variable name
+ */
+ public void setFromKey(String contextVariable)
+ {
+ this.fromKey = contextVariable;
+ }
+
+ /**
+ * @inheritDoc
+ */
+ protected Iterator getProperties(Context ctx) throws JcrCommandException,
+ RepositoryException
+ {
+ // show the path
+ this.setPath(true);
+ Object o = ctx.get(this.fromKey);
+ if (o == null || !(o instanceof Iterator))
+ {
+ throw new JcrInfoCommandException(
+ "illegalargument.no.iterator.under", new String[]
+ {
+ fromKey
+ });
+ }
+ return (Iterator) o;
+ }
+
+}
Propchange: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsCollectedProperties.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsItems.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsItems.java?rev=231495&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsItems.java (added)
+++ incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsItems.java Thu Aug 11 11:04:29 2005
@@ -0,0 +1,94 @@
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.chain.command.info;
+
+import java.util.Iterator;
+
+import javax.jcr.RepositoryException;
+
+import org.apache.commons.chain.Context;
+import org.apache.jackrabbit.chain.CtxHelper;
+import org.apache.jackrabbit.chain.JcrCommandException;
+
+/**
+ * List items
+ *
+ *
+ *
+ * - name
+ * - type
+ * - isNode
+ * - isNew
+ * - isModified
+ *
+ *
+ */
+public class LsItems extends AbstractLsItems
+{
+
+ /** name pattern key */
+ private String patternKey;
+
+ /** name pattern */
+ private String pattern;
+
+ /**
+ * @return the name pattern
+ */
+ public String getPatternKey()
+ {
+ return patternKey;
+ }
+
+ /**
+ * Sets the name pattern
+ *
+ * @param name
+ * pattern
+ */
+ public void setPatternKey(String pattern)
+ {
+ this.patternKey = pattern;
+ }
+
+ /**
+ * @inheritDoc
+ */
+ protected Iterator getItems(Context ctx) throws JcrCommandException,
+ RepositoryException
+ {
+ String pattern = CtxHelper.getAttr(this.pattern, patternKey, "*", ctx);
+ return CtxHelper.getItems(ctx, pattern);
+ }
+
+ /**
+ * @return Returns the pattern.
+ */
+ public String getPattern()
+ {
+ return pattern;
+ }
+
+ /**
+ * @param pattern
+ * The pattern to set.
+ */
+ public void setPattern(String pattern)
+ {
+ this.pattern = pattern;
+ }
+}
Propchange: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsItems.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsNodes.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsNodes.java?rev=231495&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsNodes.java (added)
+++ incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsNodes.java Thu Aug 11 11:04:29 2005
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.chain.command.info;
+
+import java.util.Iterator;
+
+import javax.jcr.RepositoryException;
+
+import org.apache.commons.chain.Context;
+import org.apache.jackrabbit.chain.CtxHelper;
+import org.apache.jackrabbit.chain.JcrCommandException;
+
+/**
+ * Lists the nodes under the current working node that match the given pattern.
+ */
+public class LsNodes extends AbstractLsNodes
+{
+ /** name pattern */
+ private String pattern;
+
+ /** name pattern key */
+ private String patternKey;
+
+ /**
+ * @return name pattern
+ */
+ public String getPattern()
+ {
+ return pattern;
+ }
+
+ /**
+ * Sets the name pattern
+ *
+ * @param pattern
+ */
+ public void setPattern(String pattern)
+ {
+ this.pattern = pattern;
+ }
+
+ /**
+ * @inheritDoc
+ */
+ protected Iterator getNodes(Context ctx) throws JcrCommandException,
+ RepositoryException
+ {
+ String pattern = CtxHelper.getAttr(this.pattern, patternKey, "*", ctx);
+ return CtxHelper.getNodes(ctx, pattern);
+ }
+
+ /**
+ * @return Returns the patternKey.
+ */
+ public String getPatternKey()
+ {
+ return patternKey;
+ }
+
+ /**
+ * @param patternKey
+ * The patternKey to set.
+ */
+ public void setPatternKey(String patternKey)
+ {
+ this.patternKey = patternKey;
+ }
+}
Propchange: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsNodes.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsProperties.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsProperties.java?rev=231495&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsProperties.java (added)
+++ incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsProperties.java Thu Aug 11 11:04:29 2005
@@ -0,0 +1,90 @@
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.chain.command.info;
+
+import java.util.Iterator;
+
+import javax.jcr.RepositoryException;
+
+import org.apache.commons.chain.Context;
+import org.apache.jackrabbit.chain.CtxHelper;
+import org.apache.jackrabbit.chain.JcrCommandException;
+
+/**
+ *
+ * Property fields:
+ *
+ * - name
+ * - multiple
+ * - type
+ * - length
+ *
+ *
+ */
+public class LsProperties extends AbstractLsProperties
+{
+ /** property name pattern */
+ private String pattern;
+
+ /** property name pattern key */
+ private String patternKey;
+
+ /**
+ * @return name pattern
+ */
+ public String getPatternKey()
+ {
+ return patternKey;
+ }
+
+ /**
+ * Sets the name pattern
+ *
+ * @param pattern
+ */
+ public void setPatternKey(String pattern)
+ {
+ this.patternKey = pattern;
+ }
+
+ /**
+ * @inheritDoc
+ */
+ protected Iterator getProperties(Context ctx) throws JcrCommandException,
+ RepositoryException
+ {
+ String pattern = CtxHelper.getAttr(this.pattern, patternKey, "*", ctx);
+ return CtxHelper.getProperties(ctx, pattern);
+ }
+
+ /**
+ * @return Returns the pattern.
+ */
+ public String getPattern()
+ {
+ return pattern;
+ }
+
+ /**
+ * @param pattern
+ * The pattern to set.
+ */
+ public void setPattern(String pattern)
+ {
+ this.pattern = pattern;
+ }
+}
Propchange: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsProperties.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsReferences.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsReferences.java?rev=231495&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsReferences.java (added)
+++ incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsReferences.java Thu Aug 11 11:04:29 2005
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.chain.command.info;
+
+import javax.jcr.Node;
+import javax.jcr.Property;
+import javax.jcr.PropertyIterator;
+
+import org.apache.commons.chain.Context;
+import org.apache.jackrabbit.chain.CtxHelper;
+
+/**
+ * Displays references to the given Node
+ */
+public class LsReferences extends AbstractInfoCommand
+{
+ /** path to the node */
+ private String path;
+
+ /**
+ * @inheritDoc
+ */
+ public boolean execute(Context ctx) throws Exception
+ {
+ Node n = CtxHelper.getNode(ctx, path);
+
+ // header
+ int[] width = new int[]
+ {
+ 60
+ };
+ String[] header = new String[]
+ {
+ bundle.getString("path")
+ };
+
+ // print header
+ PrintHelper.printRow(ctx, width, header);
+
+ // print separator
+ PrintHelper.printSeparatorRow(ctx, width, '-');
+
+ PropertyIterator iter = n.getReferences();
+ while (iter.hasNext())
+ {
+ Property p = iter.nextProperty();
+ // print header
+ PrintHelper.printRow(ctx, width, new String[]
+ {
+ p.getPath()
+ });
+ }
+
+ CtxHelper.getOutput(ctx).println();
+ CtxHelper.getOutput(ctx).println(
+ iter.getSize() + " " + bundle.getString("references"));
+
+ return false;
+ }
+
+ /**
+ * @return Returns the path.
+ */
+ public String getPath()
+ {
+ return path;
+ }
+
+ /**
+ * @param path
+ * The path to set.
+ */
+ public void setPath(String path)
+ {
+ this.path = path;
+ }
+}
Propchange: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/LsReferences.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/PrintHelper.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/PrintHelper.java?rev=231495&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/PrintHelper.java (added)
+++ incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/PrintHelper.java Thu Aug 11 11:04:29 2005
@@ -0,0 +1,212 @@
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.chain.command.info;
+
+import java.io.PrintWriter;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.apache.commons.chain.Context;
+import org.apache.jackrabbit.chain.CtxHelper;
+import org.apache.jackrabbit.chain.JcrCommandException;
+
+/**
+ * Helper methods to print
+ */
+class PrintHelper
+{
+
+ /**
+ *
+ * @param ctx
+ * @param width
+ * @param text
+ */
+ public static void printRow(Context ctx, int[] width, String[] text)
+ {
+ if (width.length != text.length)
+ {
+ throw new IllegalArgumentException(
+ "width[] and text[] haven't the same length");
+ }
+
+ PrintWriter out = CtxHelper.getOutput(ctx);
+
+ int rows = 1;
+
+ // Calculate rows
+ for (int i = 0; i < text.length; i++)
+ {
+ int textLength = text[i].length();
+ if (textLength == 0)
+ {
+ textLength = 1;
+ }
+ int columnWidth = width[i];
+ int neededRows = (int) Math.ceil((double) textLength
+ / (double) columnWidth);
+ if (neededRows > rows)
+ {
+ rows = neededRows;
+ }
+ }
+
+ // Write table
+ for (int row = 0; row < rows; row++)
+ {
+ for (int column = 0; column < width.length; column++)
+ {
+ for (int pointer = 0; pointer < width[column]; pointer++)
+ {
+ int pos = row * width[column] + pointer;
+ if (pos < text[column].length())
+ {
+ out.print(text[column].charAt(pos));
+ } else
+ {
+ out.print(' ');
+ }
+ }
+ out.print(' ');
+ }
+ out.println();
+ }
+ }
+
+ /**
+ * @param ctx
+ * @param width
+ * @param separator
+ */
+ public static void printSeparatorRow(
+ Context ctx,
+ int[] width,
+ char separator)
+ {
+ PrintWriter out = CtxHelper.getOutput(ctx);
+ for (int i = 0; i < width.length; i++)
+ {
+ for (int j = 0; j <= width[i]; j++)
+ {
+ if (j < width[i])
+ {
+ out.print(separator);
+ } else
+ {
+ out.print(' ');
+ }
+ }
+ }
+ out.println();
+ }
+
+ /**
+ *
+ * @param ctx
+ * @param width
+ * @param texts
+ * @throws JcrCommandException
+ */
+ public static void printRow(Context ctx, int[] width, Collection texts)
+ throws JcrCommandException
+ {
+ String[] text = new String[width.length];
+ Iterator iter = texts.iterator();
+ int column = 0;
+ while (iter.hasNext())
+ {
+ Object o = iter.next();
+ if (o instanceof String)
+ {
+ text[column] = (String) o;
+ } else if (o instanceof Collection)
+ {
+ StringBuffer sb = new StringBuffer() ;
+ Iterator i = ((Collection) o).iterator();
+ while (i.hasNext())
+ {
+ String str = (String) i.next();
+ int rows = (int) Math.ceil((double) str.length()
+ / (double) width[column]);
+ if (rows == 0)
+ {
+ rows = 1;
+ }
+ sb.append(str) ;
+ for (int j = 0; j < rows * width[column] - str.length(); j++)
+ {
+ sb.append(' ') ;
+ }
+ }
+ text[column] = sb.toString() ;
+ } else
+ {
+ throw new JcrCommandException("illegalargument");
+ }
+ column++;
+ }
+ printRow(ctx, width, text);
+ }
+
+ /**
+ *
+ * @param ctx
+ * @param widths
+ * @param texts
+ * @throws JcrCommandException
+ */
+ public static void printRow(Context ctx, Collection widths, Collection texts) throws JcrCommandException {
+ printRow(ctx, convertWidth(widths), texts) ;
+ }
+
+ /**
+ *
+ * @param ctx
+ * @param widths
+ * @param texts
+ * @throws JcrCommandException
+ */
+ private static int[] convertWidth(Collection widths) throws JcrCommandException {
+ int[] width = new int[widths.size()] ;
+ int index=0 ;
+ Iterator iter = widths.iterator() ;
+ while (iter.hasNext())
+ {
+ Integer i = (Integer) iter.next();
+ width[index]= i.intValue() ;
+ index++ ;
+ }
+ return width ;
+ }
+
+ /**
+ *
+ * @param ctx
+ * @param widths
+ * @param separator
+ * @throws JcrCommandException
+ */
+ public static void printSeparatorRow(
+ Context ctx,
+ Collection widths,
+ char separator) throws JcrCommandException
+ {
+ printSeparatorRow(ctx, convertWidth(widths), separator) ;
+ }
+
+
+}
Propchange: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/PrintHelper.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/exceptions.properties
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/exceptions.properties?rev=231495&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/exceptions.properties (added)
+++ incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/exceptions.properties Thu Aug 11 11:04:29 2005
@@ -0,0 +1,3 @@
+illegalargument.no.iterator.under=Illegal argument. There is no iterator under {0}.
+missing.arguments=missing arguments. Required = {0}, received = {1}.
+unkown.arguments=unkown arguments. Known arguments = {0}, received = {1}.
\ No newline at end of file
Propchange: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/exceptions.properties
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/resources.properties
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/resources.properties?rev=231495&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/resources.properties (added)
+++ incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/resources.properties Thu Aug 11 11:04:29 2005
@@ -0,0 +1,33 @@
+alias=alias
+arguments=arguments
+arg.name=content
+default=default
+description=description
+flags=flags
+has.lock=holds lock
+isnode=node
+isnew=new
+ismodified=modified
+length=length
+listed=listed
+lockable=lockable
+locked=locked
+multiple=multiple
+modified=modified
+name=name
+new=new
+node=node
+nodes=nodes
+node=node type
+nodetype=node type
+path=path
+options=options
+property=property
+properties=properties
+referenceable=referenceable
+references=references
+required=required
+type=type
+total=total
+usage=usage
+versionable=versionable
\ No newline at end of file
Propchange: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/info/resources.properties
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/query/AbstractQuery.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/query/AbstractQuery.java?rev=231495&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/query/AbstractQuery.java (added)
+++ incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/query/AbstractQuery.java Thu Aug 11 11:04:29 2005
@@ -0,0 +1,123 @@
+/*
+ * Copyright 2002-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.jackrabbit.chain.command.query;
+
+import javax.jcr.Session;
+import javax.jcr.query.QueryResult;
+
+import org.apache.commons.chain.Command;
+import org.apache.commons.chain.Context;
+import org.apache.jackrabbit.chain.CtxHelper;
+
+/**
+ * Query the repository through either SQL or XPATH.
+ * The Command attributes are set from the specified literal values, or from the
+ * context attributes stored under the given keys.
+ */
+public abstract class AbstractQuery implements Command
+{
+ // ---------------------------- < literals >
+
+ /** query statement */
+ private String statement;
+
+ // ---------------------------- < keys >
+
+ /** query statement key */
+ private String statementKey;
+
+ /** destination key */
+ private String toKey;
+
+ /**
+ * @inheritDoc
+ */
+ public final boolean execute(Context ctx) throws Exception
+ {
+ String statement = CtxHelper.getAttr(this.statement,
+ this.statementKey, ctx);
+
+ Session session = CtxHelper.getSession(ctx);
+ javax.jcr.query.Query query = session.getWorkspace().getQueryManager()
+ .createQuery(statement, this.getLanguage());
+
+ QueryResult result = query.execute();
+
+ ctx.put(toKey, result.getNodes());
+
+ return false;
+ }
+
+ /**
+ * Query language
+ *
+ * @return
+ */
+ protected abstract String getLanguage();
+
+ /**
+ * @return the query statement
+ */
+ public String getStatement()
+ {
+ return statement;
+ }
+
+ /**
+ * Sets the query statement
+ *
+ * @param statement
+ */
+ public void setStatement(String statement)
+ {
+ this.statement = statement;
+ }
+
+ /**
+ * @return Returns the statementKey.
+ */
+ public String getStatementKey()
+ {
+ return statementKey;
+ }
+
+ /**
+ * @param statementKey
+ * Set the context attribute key for the statement attribute.
+ */
+ public void setStatementKey(String statementKey)
+ {
+ this.statementKey = statementKey;
+ }
+
+ /**
+ * @return Returns the toKey.
+ */
+ public String getToKey()
+ {
+ return toKey;
+ }
+
+ /**
+ * @param toKey
+ * Set the context attribute key for the to attribute.
+ */
+ public void setToKey(String toKey)
+ {
+ this.toKey = toKey;
+ }
+}
Propchange: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/query/AbstractQuery.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/query/SQLQuery.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/query/SQLQuery.java?rev=231495&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/query/SQLQuery.java (added)
+++ incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/query/SQLQuery.java Thu Aug 11 11:04:29 2005
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2002-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.jackrabbit.chain.command.query;
+
+
+/**
+ * SQL query
+ */
+public class SQLQuery extends AbstractQuery
+{
+
+ protected String getLanguage()
+ {
+ return javax.jcr.query.Query.SQL;
+ }
+}
Propchange: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/query/SQLQuery.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/query/XPathQuery.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/query/XPathQuery.java?rev=231495&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/query/XPathQuery.java (added)
+++ incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/query/XPathQuery.java Thu Aug 11 11:04:29 2005
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2002-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.jackrabbit.chain.command.query;
+
+
+/**
+ * XPath query
+ */
+public class XPathQuery extends AbstractQuery
+{
+
+ protected String getLanguage()
+ {
+ return javax.jcr.query.Query.XPATH;
+ }
+}
Propchange: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/query/XPathQuery.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/resources.properties
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/resources.properties?rev=231495&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/resources.properties (added)
+++ incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/resources.properties Thu Aug 11 11:04:29 2005
@@ -0,0 +1 @@
+collected.under=collected nodes are stored under
\ No newline at end of file
Propchange: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/resources.properties
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/xml/AbstractExportViewToFile.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/xml/AbstractExportViewToFile.java?rev=231495&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/xml/AbstractExportViewToFile.java (added)
+++ incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/xml/AbstractExportViewToFile.java Thu Aug 11 11:04:29 2005
@@ -0,0 +1,274 @@
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.chain.command.xml;
+
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+import org.apache.commons.chain.Command;
+import org.apache.commons.chain.Context;
+import org.apache.jackrabbit.chain.CtxHelper;
+import org.apache.jackrabbit.chain.JcrCommandException;
+
+/**
+ * Export the xml view to a file
+ * The Command attributes are set from the specified literal values, or from the
+ * context attributes stored under the given keys.
+ */
+public abstract class AbstractExportViewToFile implements Command
+{
+
+ // ---------------------------- < literals >
+ /** target file literal */
+ protected String from;
+
+ /** target file literal */
+ protected String to;
+
+ /** overwrite flag literal */
+ protected String overwrite;
+
+ /** skip binary flag literal */
+ protected String skipBinary;
+
+ /** no recurse flag literal */
+ protected String noRecurse;
+
+ // ---------------------------- < keys >
+ /** target file literal */
+ protected String fromKey;
+
+ /** target file key */
+ protected String toKey;
+
+ /** overwrite flag key */
+ protected String overwriteKey;
+
+ /** skip binary flag key */
+ protected String skipBinaryKey;
+
+ /** no recurse flag key */
+ protected String noRecurseKey;
+
+ /**
+ * @return the OutputStream for the given file
+ * @throws JcrCommandException
+ * @throws IOException
+ */
+ protected OutputStream getOutputStream(Context ctx)
+ throws JcrCommandException, IOException
+ {
+
+ String file = CtxHelper.getAttr(this.to, this.toKey, ctx);
+
+ boolean overwrite = CtxHelper.getBooleanAttr(this.overwrite,
+ this.overwriteKey, false, ctx);
+
+ File f = new File(file);
+
+ if (f.exists() && !overwrite)
+ {
+ throw new JcrCommandException("file.exists", new String[]
+ {
+ file
+ });
+ }
+
+ if (!f.exists())
+ {
+ f.createNewFile();
+ }
+
+ BufferedOutputStream out = new BufferedOutputStream(
+ new FileOutputStream(f));
+
+ return out;
+ }
+
+ /**
+ * @return Returns the noRecurse.
+ */
+ public String getNoRecurse()
+ {
+ return noRecurse;
+ }
+
+ /**
+ * @param noRecurse
+ * The noRecurse to set.
+ */
+ public void setNoRecurse(String noRecurse)
+ {
+ this.noRecurse = noRecurse;
+ }
+
+ /**
+ * @return Returns the noRecurseKey.
+ */
+ public String getNoRecurseKey()
+ {
+ return noRecurseKey;
+ }
+
+ /**
+ * @param noRecurseKey
+ * Set the context attribute key for the noRecurse attribute.
+ */
+ public void setNoRecurseKey(String noRecurseKey)
+ {
+ this.noRecurseKey = noRecurseKey;
+ }
+
+ /**
+ * @return Returns the overwrite.
+ */
+ public String getOverwrite()
+ {
+ return overwrite;
+ }
+
+ /**
+ * @param overwrite
+ * The overwrite to set.
+ */
+ public void setOverwrite(String overwrite)
+ {
+ this.overwrite = overwrite;
+ }
+
+ /**
+ * @return Returns the overwriteKey.
+ */
+ public String getOverwriteKey()
+ {
+ return overwriteKey;
+ }
+
+ /**
+ * @param overwriteKey
+ * Set the context attribute key for the overwrite attribute.
+ */
+ public void setOverwriteKey(String overwriteKey)
+ {
+ this.overwriteKey = overwriteKey;
+ }
+
+ /**
+ * @return Returns the skipBinary.
+ */
+ public String getSkipBinary()
+ {
+ return skipBinary;
+ }
+
+ /**
+ * @param skipBinary
+ * The skipBinary to set.
+ */
+ public void setSkipBinary(String skipBinary)
+ {
+ this.skipBinary = skipBinary;
+ }
+
+ /**
+ * @return Returns the skipBinaryKey.
+ */
+ public String getSkipBinaryKey()
+ {
+ return skipBinaryKey;
+ }
+
+ /**
+ * @param skipBinaryKey
+ * Set the context attribute key for the skipBinary attribute.
+ */
+ public void setSkipBinaryKey(String skipBinaryKey)
+ {
+ this.skipBinaryKey = skipBinaryKey;
+ }
+
+ /**
+ * @return Returns the from.
+ */
+ public String getFrom()
+ {
+ return from;
+ }
+
+ /**
+ * @param from
+ * The from to set.
+ */
+ public void setFrom(String from)
+ {
+ this.from = from;
+ }
+
+ /**
+ * @return Returns the fromKey.
+ */
+ public String getFromKey()
+ {
+ return fromKey;
+ }
+
+ /**
+ * @param fromKey
+ * The fromKey to set.
+ */
+ public void setFromKey(String fromKey)
+ {
+ this.fromKey = fromKey;
+ }
+
+ /**
+ * @return Returns the to.
+ */
+ public String getTo()
+ {
+ return to;
+ }
+
+ /**
+ * @param to
+ * The to to set.
+ */
+ public void setTo(String to)
+ {
+ this.to = to;
+ }
+
+ /**
+ * @return Returns the toKey.
+ */
+ public String getToKey()
+ {
+ return toKey;
+ }
+
+ /**
+ * @param toKey
+ * The toKey to set.
+ */
+ public void setToKey(String toKey)
+ {
+ this.toKey = toKey;
+ }
+}
Propchange: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/xml/AbstractExportViewToFile.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/xml/ExportDocViewToFile.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/xml/ExportDocViewToFile.java?rev=231495&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/xml/ExportDocViewToFile.java (added)
+++ incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/xml/ExportDocViewToFile.java Thu Aug 11 11:04:29 2005
@@ -0,0 +1,40 @@
+package org.apache.jackrabbit.chain.command.xml;
+
+import java.io.OutputStream;
+
+import javax.jcr.Node;
+import javax.jcr.Session;
+
+import org.apache.commons.chain.Context;
+import org.apache.jackrabbit.chain.CtxHelper;
+
+/**
+ * Serializes the node to the given file using the Document View Format
+ */
+public class ExportDocViewToFile extends AbstractExportViewToFile
+{
+
+ /**
+ * @inheritDoc
+ */
+ public boolean execute(Context ctx) throws Exception
+ {
+ boolean skipBinary = CtxHelper.getBooleanAttr(this.skipBinary,
+ this.skipBinaryKey, false, ctx);
+
+ boolean noRecurse = CtxHelper.getBooleanAttr(this.noRecurse,
+ this.noRecurseKey, false, ctx);
+
+ Session s = CtxHelper.getSession(ctx);
+ Node current = CtxHelper.getCurrentNode(ctx);
+ Node from = CtxHelper.getNode(ctx, CtxHelper.getAttr(this.from,
+ this.fromKey, current.getPath(), ctx));
+
+ OutputStream out = getOutputStream(ctx);
+ s.exportDocumentView(from.getPath(), out, skipBinary, noRecurse);
+ out.close();
+
+ return false;
+ }
+
+}
Propchange: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/xml/ExportDocViewToFile.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/xml/ExportSysViewToFile.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/xml/ExportSysViewToFile.java?rev=231495&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/xml/ExportSysViewToFile.java (added)
+++ incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/xml/ExportSysViewToFile.java Thu Aug 11 11:04:29 2005
@@ -0,0 +1,40 @@
+package org.apache.jackrabbit.chain.command.xml;
+
+import java.io.OutputStream;
+
+import javax.jcr.Node;
+import javax.jcr.Session;
+
+import org.apache.commons.chain.Context;
+import org.apache.jackrabbit.chain.CtxHelper;
+
+/**
+ * Serializes the node to the given file using the System View Format
+ */
+public class ExportSysViewToFile extends AbstractExportViewToFile
+{
+
+ /**
+ * @inheritDoc
+ */
+ public boolean execute(Context ctx) throws Exception
+ {
+ boolean skipBinary = CtxHelper.getBooleanAttr(this.skipBinary,
+ this.skipBinaryKey, false, ctx);
+
+ boolean noRecurse = CtxHelper.getBooleanAttr(this.noRecurse,
+ this.noRecurseKey, false, ctx);
+
+ Session s = CtxHelper.getSession(ctx);
+ Node current = CtxHelper.getCurrentNode(ctx);
+ Node from = CtxHelper.getNode(ctx, CtxHelper.getAttr(this.from,
+ this.fromKey, current.getPath(), ctx));
+
+ OutputStream out = getOutputStream(ctx);
+ s.exportSystemView(from.getPath(), out, skipBinary, noRecurse);
+ out.close();
+
+ return false;
+ }
+
+}
Propchange: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/xml/ExportSysViewToFile.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/xml/ImportXmlFromFile.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/xml/ImportXmlFromFile.java?rev=231495&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/xml/ImportXmlFromFile.java (added)
+++ incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/xml/ImportXmlFromFile.java Thu Aug 11 11:04:29 2005
@@ -0,0 +1,151 @@
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.chain.command.xml;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+
+import javax.jcr.ImportUUIDBehavior;
+import javax.jcr.Node;
+import javax.jcr.Session;
+
+import org.apache.commons.chain.Command;
+import org.apache.commons.chain.Context;
+import org.apache.jackrabbit.chain.CtxHelper;
+import org.apache.jackrabbit.chain.JcrCommandException;
+
+/**
+ * Imports the xml view from the given file to the current working node.
+ * The Command attributes are set from the specified literal values, or from the
+ * context attributes stored under the given keys.
+ */
+public class ImportXmlFromFile implements Command
+{
+
+ // ---------------------------- < literals >
+
+ /** doc view file */
+ private String from;
+
+ /** uuid behaviour */
+ private String uuidBehaviour;
+
+ // ---------------------------- < keys >
+
+ /** doc view file key */
+ private String fromKey;
+
+ /** uuid behaviour key */
+ private String uuidBehaviourKey;
+
+ /**
+ * @inheritDoc
+ */
+ public boolean execute(Context ctx) throws Exception
+ {
+ String file = CtxHelper.getAttr(this.from, this.fromKey, ctx);
+
+ int uuidBehaviour = CtxHelper.getIntAttr(this.uuidBehaviour,
+ this.uuidBehaviourKey, ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW,
+ ctx);
+
+ File f = new File(file);
+
+ if (!f.exists())
+ {
+ throw new JcrCommandException("file.not.found", new String[]
+ {
+ file
+ });
+ }
+ BufferedInputStream in = new BufferedInputStream(new FileInputStream(f));
+
+ Session s = CtxHelper.getSession(ctx);
+ Node n = CtxHelper.getCurrentNode(ctx);
+ s.importXML(n.getPath(), in, uuidBehaviour);
+ return false;
+ }
+
+ /**
+ * @return Returns the from.
+ */
+ public String getFrom()
+ {
+ return from;
+ }
+
+ /**
+ * @param from
+ * The from to set.
+ */
+ public void setFrom(String from)
+ {
+ this.from = from;
+ }
+
+ /**
+ * @return Returns the fromKey.
+ */
+ public String getFromKey()
+ {
+ return fromKey;
+ }
+
+ /**
+ * @param fromKey
+ * Set the context attribute key for the from attribute.
+ */
+ public void setFromKey(String fromKey)
+ {
+ this.fromKey = fromKey;
+ }
+
+ /**
+ * @return Returns the uuidBehaviour.
+ */
+ public String getUuidBehaviour()
+ {
+ return uuidBehaviour;
+ }
+
+ /**
+ * @param uuidBehaviour
+ * The uuidBehaviour to set.
+ */
+ public void setUuidBehaviour(String uuidBehaviour)
+ {
+ this.uuidBehaviour = uuidBehaviour;
+ }
+
+ /**
+ * @return Returns the uuidBehaviourKey.
+ */
+ public String getUuidBehaviourKey()
+ {
+ return uuidBehaviourKey;
+ }
+
+ /**
+ * @param uuidBehaviourKey
+ * Set the context attribute key for the uuidBehaviour attribute.
+ */
+ public void setUuidBehaviourKey(String uuidBehaviourKey)
+ {
+ this.uuidBehaviourKey = uuidBehaviourKey;
+ }
+}
Propchange: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/command/xml/ImportXmlFromFile.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/exceptions.properties
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/exceptions.properties?rev=231495&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/exceptions.properties (added)
+++ incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/exceptions.properties Thu Aug 11 11:04:29 2005
@@ -0,0 +1,14 @@
+illegalargument.not.a.command=Illegal argument. "{0}" is not a command.
+illegalargument.null=Null arguments are illegal.
+repository.not.in.context=The repository can't be found in the application context. You need to start a jcr implementation before trying to login.
+no.current.node=The current working node isn't set. Please start a jcr implementation before trying to get the current working node.
+not.ntfile={0} is not nt:file.
+fspath.is.null=The file system path is unset.
+file.flag.unset=The file flag is unset.
+file.not.found=File not found. {0}.
+file.exists=File already exists. {0}.
+not.file.or.folder=The given node is not nt:file nor nt:folder. {0}.
+file.not.created=The file was not created. {0}.
+folder.not.created=The folder was not created. {0}.
+already.logged.in=You are already logged in. Please logout.
+literal.and.key.null=Literal value and key are both null.
Propchange: incubator/jackrabbit/trunk/contrib/jcr-commands/src/java/org/apache/jackrabbit/chain/exceptions.properties
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/jackrabbit/trunk/contrib/jcr-commands/src/test/org/apache/jackrabbit/chain/test/AbstractCommandTest.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-commands/src/test/org/apache/jackrabbit/chain/test/AbstractCommandTest.java?rev=231495&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-commands/src/test/org/apache/jackrabbit/chain/test/AbstractCommandTest.java (added)
+++ incubator/jackrabbit/trunk/contrib/jcr-commands/src/test/org/apache/jackrabbit/chain/test/AbstractCommandTest.java Thu Aug 11 11:04:29 2005
@@ -0,0 +1,119 @@
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.chain.test;
+
+import javax.jcr.Node;
+import javax.jcr.PathNotFoundException;
+import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
+
+import junit.framework.TestCase;
+
+import org.apache.commons.chain.Catalog;
+import org.apache.commons.chain.Context;
+import org.apache.commons.chain.config.ConfigParser;
+import org.apache.commons.chain.impl.CatalogFactoryBase;
+import org.apache.commons.chain.impl.ContextBase;
+import org.apache.jackrabbit.chain.CtxHelper;
+import org.apache.jackrabbit.chain.JcrCommandException;
+import org.apache.jackrabbit.chain.command.ClearWorkspace;
+import org.apache.jackrabbit.chain.command.Login;
+import org.apache.jackrabbit.chain.command.Logout;
+import org.apache.jackrabbit.chain.command.StartOrGetJackrabbitSingleton;
+
+/**
+ * Commands Test superclass
+ */
+public abstract class AbstractCommandTest extends TestCase
+{
+ /** config */
+ private static String CONFIG = "applications/test/repository.xml";
+
+ /** home */
+ private static String HOME = "applications/test/repository";
+
+ static
+ {
+ try
+ {
+ ConfigParser parser = new ConfigParser();
+ parser.parse(AbstractCommandTest.class.getResource("chains.xml"));
+ } catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ /** clear workspace */
+ private ClearWorkspace cw = new ClearWorkspace();
+
+ /** Context */
+ protected Context ctx = new ContextBase();
+
+ /** catalog */
+ protected Catalog catalog = CatalogFactoryBase.getInstance().getCatalog("test");
+
+ protected void setUp() throws Exception
+ {
+ super.setUp();
+
+ // Start
+ StartOrGetJackrabbitSingleton startCmd = new StartOrGetJackrabbitSingleton();
+ startCmd.setConfig(CONFIG);
+ startCmd.setHome(HOME);
+ startCmd.execute(ctx);
+ assertTrue(CtxHelper.getRepository(ctx) instanceof Repository);
+
+ // Login
+ Login loginCmd = new Login();
+ loginCmd.setUser("user");
+ loginCmd.setPassword("password");
+ loginCmd.execute(ctx);
+ assertTrue(CtxHelper.getSession(ctx) != null);
+ assertTrue(CtxHelper.getCurrentNode(ctx).getPath().equals("/"));
+
+ // clear workspace
+ cw.execute(ctx);
+
+ }
+
+
+ protected void addTestNode() throws Exception
+ {
+ catalog.getCommand("addTestNode").execute(ctx);
+ }
+
+ protected void tearDown() throws Exception
+ {
+ super.tearDown();
+
+ cw.execute(ctx);
+
+ // Logout
+ Logout logoutCmd = new Logout();
+ logoutCmd.execute(ctx);
+
+ ctx.clear();
+ }
+
+ protected Node getRoot() throws PathNotFoundException, JcrCommandException, RepositoryException {
+ return CtxHelper.getNode(ctx, "/") ;
+ }
+
+
+
+}
Propchange: incubator/jackrabbit/trunk/contrib/jcr-commands/src/test/org/apache/jackrabbit/chain/test/AbstractCommandTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/jackrabbit/trunk/contrib/jcr-commands/src/test/org/apache/jackrabbit/chain/test/CliParserTest.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-commands/src/test/org/apache/jackrabbit/chain/test/CliParserTest.java?rev=231495&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-commands/src/test/org/apache/jackrabbit/chain/test/CliParserTest.java (added)
+++ incubator/jackrabbit/trunk/contrib/jcr-commands/src/test/org/apache/jackrabbit/chain/test/CliParserTest.java Thu Aug 11 11:04:29 2005
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.chain.test;
+
+import junit.framework.TestCase;
+
+import org.apache.commons.chain.Command;
+import org.apache.jackrabbit.chain.cli.JcrParser;
+import org.apache.jackrabbit.chain.cli.JcrParserException;
+import org.apache.jackrabbit.chain.command.CurrentNode;
+import org.apache.jackrabbit.chain.command.StartJackrabbit;
+
+/**
+ * Command line parser tests
+ */
+public class CliParserTest extends TestCase
+{
+
+ /**
+ * @throws Exception
+ */
+ public void testParse() throws Exception
+ {
+ JcrParser parser = new JcrParser();
+ String config = "repository.xml";
+ String home = "/repository";
+ parser.parse("startjackrabbit -config " + config + " -home " + home);
+ Command c = parser.getCommand();
+ assertTrue(c instanceof StartJackrabbit);
+ StartJackrabbit cmd = (StartJackrabbit) c;
+ assertTrue(cmd.getConfig().equals(config));
+ assertTrue(cmd.getHome().equals(home));
+ }
+
+ /**
+ * @throws Exception
+ */
+ public void testCliParserExceptions() throws Exception
+ {
+ JcrParser parser = new JcrParser();
+ try
+ {
+ parser.parse("startjackrabbit -config ");
+ fail();
+ } catch (JcrParserException e)
+ {
+ // Do nothing
+ }
+
+ }
+
+ /**
+ * @throws Exception
+ */
+ public void testCd() throws Exception
+ {
+ JcrParser parser = new JcrParser();
+ parser.parse("cd foo");
+ CurrentNode cmd = (CurrentNode) parser.getCommand() ;
+ assertTrue(cmd.getPath().equals("foo")) ;
+ }
+
+}
Propchange: incubator/jackrabbit/trunk/contrib/jcr-commands/src/test/org/apache/jackrabbit/chain/test/CliParserTest.java
------------------------------------------------------------------------------
svn:eol-style = native