svn commit: r473607 - in /xml/xindice/trunk: config/ java/src/org/apache/xindice/tools/ java/src/org/apache/xindice/tools/command/

[email protected]
Newsgroups gmane.text.xml.xindice.devel
Message-ID <[email protected]>
Author: byrne
Date: Fri Nov 10 16:58:03 2006
New Revision: 473607

URL: http://svn.apache.org/viewvc?view=rev&rev=473607
Log:
Added a new HelpCommand accessable through -h or --help.

Help menu no longer prints on errors. Removed some excess printStack statements to help in debuging..

Pagecount can now be set for collections and indexes from the command line using --pagecount.

Todd Byrne



Added:
    xml/xindice/trunk/java/src/org/apache/xindice/tools/command/HelpCommand.java
Modified:
    xml/xindice/trunk/config/commands.xml
    xml/xindice/trunk/java/src/org/apache/xindice/tools/XMLTools.java
    xml/xindice/trunk/java/src/org/apache/xindice/tools/command/AddCollection.java
    xml/xindice/trunk/java/src/org/apache/xindice/tools/command/AddIndexer.java

Modified: xml/xindice/trunk/config/commands.xml
URL: http://svn.apache.org/viewvc/xml/xindice/trunk/config/commands.xml?view=diff&rev=473607&r1=473606&r2=473607
==============================================================================
--- xml/xindice/trunk/config/commands.xml (original)
+++ xml/xindice/trunk/config/commands.xml Fri Nov 10 16:58:03 2006
@@ -32,6 +32,16 @@
 
 <commands>
    <user>
+      <command switch="--help"
+               name="help screen"
+               class="org.apache.xindice.tools.command.HelpCommand"
+               helpclass=""
+               description="Prints the help screen." />
+      <command switch="-h"
+               name="help screen"
+               class="org.apache.xindice.tools.command.HelpCommand"
+               helpclass=""
+               description="Prints the help screen." />
       <command switch="ac"
                name="add_collection"
                class="org.apache.xindice.tools.command.AddCollection"

Modified: xml/xindice/trunk/java/src/org/apache/xindice/tools/XMLTools.java
URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/tools/XMLTools.java?view=diff&rev=473607&r1=473606&r2=473607
==============================================================================
--- xml/xindice/trunk/java/src/org/apache/xindice/tools/XMLTools.java (original)
+++ xml/xindice/trunk/java/src/org/apache/xindice/tools/XMLTools.java Fri Nov 10 16:58:03 2006
@@ -67,7 +67,8 @@
     public static final String AUTO_KEY = "autoKey";
     public static final String NAMESPACES = "namespaces";
     public static final String IMPL_CLASS = "implClass";
-
+    public static final String COMMAND_LIST="__command_list__";
+    public static final String PAGE_COUNT = "pagecount";
     private Hashtable table;
     protected String location = null;
     private boolean initialized = false;
@@ -167,21 +168,15 @@
         try {
             init();
             parseArguments(args);
-
-            if (!execute()) {
-                printHelp();
-            }
+            execute();
         } catch (IllegalArgumentException e) {
-            printHelp();
-            throw new XindiceException("ERROR : " + e.getMessage(), e);
+            throw new XindiceException("ERROR : " + e.getMessage() + " Try -h for help.", e);
         } catch (NoSuchElementException e) {
-            throw new NoSuchElementException("ERROR : " + e + " Switch found. Parameter missing.");
+            throw new NoSuchElementException("ERROR : " + e + " Switch found. Parameter missing. Try -h for help.");
         } catch (NullPointerException e) {
-            e.printStackTrace(System.err);
-            throw new NullPointerException("ERROR : " + e);
+            throw new NullPointerException("ERROR : " + e + " Try -h for help.");
         } catch (Exception e) {
-            e.printStackTrace(System.err);
-            throw new XindiceException("ERROR : " + e.getMessage(), e);
+            throw new XindiceException("ERROR : " + e.getMessage() + " Try -h for help.", e);
         }
     }
 
@@ -199,7 +194,8 @@
         if (!at.hasMoreTokens()) {
             throw new IllegalArgumentException("No argument found");
         }
-
+        // add the command list so that the HelpCommand and print specific help information
+        table.put(COMMAND_LIST,commandsList);
         // Action should always be the second token, if not there show help
         table.put(ACTION, at.nextToken());
 
@@ -218,8 +214,6 @@
                 table.put(EXTENSION, at.nextSwitchToken());
             } else if (token.equalsIgnoreCase("-f") || token.equalsIgnoreCase("--filepath")) {
                 table.put(FILE_PATH, at.nextSwitchToken());
-            } else if (token.equalsIgnoreCase("-h") || token.equalsIgnoreCase("--help")) {
-                table.put(ACTION, "help");
             } else if (token.equalsIgnoreCase("-n") || token.equalsIgnoreCase("--nameOf")) {
                 table.put(NAME_OF, at.nextSwitchToken());
             } else if (token.equalsIgnoreCase("-p") || token.equalsIgnoreCase("--pattern")) {
@@ -256,11 +250,12 @@
                 table.put(PAGE_SIZE, at.nextSwitchToken());
             } else if (token.equalsIgnoreCase("--maxkeysize")) {
                 table.put(MAX_KEY_SIZE, at.nextSwitchToken());
+            } else if (token.equalsIgnoreCase("--pagecount")) {
+                table.put(PAGE_COUNT, at.nextSwitchToken());
             }
         } // End of while loop
     }
-
-
+    
     /**
      * This method is to carry out execution, after instance variables being setup by process( args )
      */
@@ -283,21 +278,16 @@
         }
 
         if (commandClass != null) {
-            try {
+        	Command command;
+        	try {
                 // Register Xindice Database with xml:db
                 DatabaseImpl db = new DatabaseImpl();
                 DatabaseManager.registerDatabase(db);
 
                 // Execute command class
-                Command command = (Command) Class.forName(commandClass).newInstance();
+                command = (Command) Class.forName(commandClass).newInstance();
                 command.execute(table);
 
-                // Close Database
-                if ("true".equals(table.get(LOCAL))) {
-                    command = new org.apache.xindice.tools.command.Shutdown();
-                    command.execute(table);
-                }
-
                 return true;
             } catch (XMLDBException e) {
                 System.err.println("XMLDB Exception " + e.errorCode + ": " + e.getMessage());
@@ -312,12 +302,20 @@
                 }
                 return false;
             }
+            finally {
+            	  // Close Database
+                if ("true".equals(table.get(LOCAL))) {
+                    command = new org.apache.xindice.tools.command.Shutdown();
+                    command.execute(table);
+                }
+            }
+        }
+        else 
+        {
+        	 throw new IllegalArgumentException("\"" + action +  "\" not recognized.");
         }
-
-        return false;
     }
-
-
+    
     public boolean handleOption(String option, ArgTokenizer at) {
         return false;
     }
@@ -578,84 +576,5 @@
      */
     public String getPassword() {
         return (String) table.get(PASSWORD);
-    }
-
-
-    public void printHelp() {
-        NodeList list = getCommands();
-
-        // This method relies on two things to format the output for help
-        //    Method isAdmin() - Tells us if this is an admin instance, used to hide certain output
-        //    XML file Commands.xml attribute "helpclass" - used to order output
-
-        String helpClass;  // Holds the helpclass for the current <command> node
-        String desc;       // Holds the description for the current <command> node
-        String cmdswitch;  // Holds the switch for the current <command> node
-
-
-        // Show the header and switch commands
-        System.out.println();
-        System.out.println("Xindice Command Tools v" + Xindice.Version);
-        System.out.println();
-        System.out.println("Format: xindice action [switch] [parameter]");
-        System.out.println();
-        System.out.println("Switches:");
-        System.out.println("    -c           Collection context (must always be specified),");
-        System.out.println("                 can be either canonical name of the collection");
-        System.out.println("                 or complete xmldb URL");
-        System.out.println("    -e           File extension for multiple documents");
-        System.out.println("    -f           File path for document retrieval and storage");
-        System.out.println("    -n           Name");
-        System.out.println("    -p           Index pattern");
-        System.out.println("    -q           Query string");
-        System.out.println("    -s           Semi-colon delimited list of namespaces for query in ");
-        System.out.println("                 the form prefix=namespace-uri");
-        System.out.println("    -l           Use a local database rather then going over the network.");
-        System.out.println("                 Should be combined with -d to specify the configuration to use.");
-        System.out.println("    -d           Path to the database configuration to use for the local ");
-        System.out.println("                 database. Only applies if -l is specified.");
-        System.out.println("    -t           Specify the data type in collection index");
-        System.out.println("    -v           Verbose");
-        System.out.println("    --pagesize   Page size for file pages (default: 4096)");
-        System.out.println("    --maxkeysize The maximum size for file keys (default: 0=none)");
-        System.out.println();
-
-        System.out.println("Actions:");
-
-        // Show all elements with helpclass=document
-        // Loop over the commands, printing test from description attribute
-        for (int i = 0; i < list.getLength(); i++) {
-            helpClass = ((Element) list.item(i)).getAttribute("helpclass");
-
-            if (helpClass.equals("document")) {
-                desc = ((Element) list.item(i)).getAttribute("description");
-                cmdswitch = ((Element) list.item(i)).getAttribute("switch");
-                System.out.println("    " + StringUtilities.leftJustify(cmdswitch, 13) + desc);
-            }
-        }
-
-        // Loop over the commands, printing text from description attribute
-        for (int i = 0; i < list.getLength(); i++) {
-            helpClass = ((Element) list.item(i)).getAttribute("helpclass");
-
-            if (helpClass.equals("security")) {
-                desc = ((Element) list.item(i)).getAttribute("description");
-                cmdswitch = ((Element) list.item(i)).getAttribute("switch");
-                System.out.println("    " + StringUtilities.leftJustify(cmdswitch, 13) + desc);
-            }
-        }
-
-        System.out.println();
-        System.out.println("Examples:");
-        System.out.println("    xindice ad -c /db/test -f /tmp/xmldocument -n myxmldocument");
-        System.out.println("    xindice dd -c /db/test -n myxmldocument");
-        System.out.println("    xindice rd -c /db/test/ocs -f a:\\file.xml -n file.xml");
-        System.out.println("    xindice xpath -c /db/test/ocs -q test");
-        System.out.println("    xindice xpath -c /db/test -s a=http://somedomain.com/schema.xsd -q /a:foo");
-        System.out.println("    xindice xupdate -c /db/test -f /path/to/xupdate.xml");
-        System.out.println("    xindice xupdate -c /db/test -n document-to-update.xml -f /path/to/xupdate.xml");
-        System.out.println();
-        System.out.println("For more information, please read the Xindice - Tools Reference Guide");
-        System.out.println();
     }
 }

Modified: xml/xindice/trunk/java/src/org/apache/xindice/tools/command/AddCollection.java
URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/tools/command/AddCollection.java?view=diff&rev=473607&r1=473606&r2=473607
==============================================================================
--- xml/xindice/trunk/java/src/org/apache/xindice/tools/command/AddCollection.java (original)
+++ xml/xindice/trunk/java/src/org/apache/xindice/tools/command/AddCollection.java Fri Nov 10 16:58:03 2006
@@ -90,11 +90,13 @@
                 Element filEle = doc.createElement("filer");
                 filEle.setAttribute("class", "org.apache.xindice.core.filer.BTreeFiler");
                 if (table.containsKey(XMLTools.PAGE_SIZE)) {
-                    filEle.setAttribute("pagesize", (String) table.get(XMLTools.PAGE_SIZE));
+                    filEle.setAttribute(XMLTools.PAGE_SIZE, (String) table.get(XMLTools.PAGE_SIZE));
                 }
-
                 if (table.containsKey(XMLTools.MAX_KEY_SIZE)) {
-                    filEle.setAttribute("maxkeysize", (String) table.get(XMLTools.MAX_KEY_SIZE));
+                    filEle.setAttribute(XMLTools.MAX_KEY_SIZE, (String) table.get(XMLTools.MAX_KEY_SIZE));
+                }
+                if (table.containsKey(XMLTools.PAGE_COUNT)) {
+                	filEle.setAttribute(XMLTools.PAGE_COUNT, (String) table.get(XMLTools.PAGE_COUNT));
                 }
 
                 colEle.appendChild(filEle);

Modified: xml/xindice/trunk/java/src/org/apache/xindice/tools/command/AddIndexer.java
URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/tools/command/AddIndexer.java?view=diff&rev=473607&r1=473606&r2=473607
==============================================================================
--- xml/xindice/trunk/java/src/org/apache/xindice/tools/command/AddIndexer.java (original)
+++ xml/xindice/trunk/java/src/org/apache/xindice/tools/command/AddIndexer.java Fri Nov 10 16:58:03 2006
@@ -79,12 +79,15 @@
                     }
 
                     if (table.containsKey(XMLTools.PAGE_SIZE)) {
-                        idxEle.setAttribute("pagesize", (String) table.get(XMLTools.PAGE_SIZE));
+                        idxEle.setAttribute(XMLTools.PAGE_SIZE, (String) table.get(XMLTools.PAGE_SIZE));
                     }
-
                     if (table.containsKey(XMLTools.MAX_KEY_SIZE)) {
-                        idxEle.setAttribute("maxkeysize", (String) table.get(XMLTools.MAX_KEY_SIZE));
+                        idxEle.setAttribute(XMLTools.MAX_KEY_SIZE, (String) table.get(XMLTools.MAX_KEY_SIZE));
+                    }
+                    if (table.containsKey(XMLTools.PAGE_COUNT)) {
+                    	idxEle.setAttribute(XMLTools.PAGE_COUNT, (String) table.get(XMLTools.PAGE_COUNT));
                     }
+
 
                     // Add Element to the document
                     doc.appendChild(idxEle);

Added: xml/xindice/trunk/java/src/org/apache/xindice/tools/command/HelpCommand.java
URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/tools/command/HelpCommand.java?view=auto&rev=473607
==============================================================================
--- xml/xindice/trunk/java/src/org/apache/xindice/tools/command/HelpCommand.java (added)
+++ xml/xindice/trunk/java/src/org/apache/xindice/tools/command/HelpCommand.java Fri Nov 10 16:58:03 2006
@@ -0,0 +1,110 @@
+/*
+ * Copyright 1999-2006 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.
+ *
+ * @author <a href="mailto:[email protected]">Todd Byrne</a>
+ */
+package org.apache.xindice.tools.command;
+
+import java.util.Hashtable;
+
+import org.apache.xindice.server.Xindice;
+import org.apache.xindice.util.StringUtilities;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+import org.apache.xindice.tools.XMLTools;
+
+public class HelpCommand extends Command {
+	
+	public boolean execute(Hashtable table) throws Exception {
+		NodeList list = (NodeList)table.get(XMLTools.COMMAND_LIST);
+
+		// This method relies on two things to format the output for help
+		//    Method isAdmin() - Tells us if this is an admin instance, used to hide certain output
+		//    XML file Commands.xml attribute "helpclass" - used to order output
+
+		String helpClass;  // Holds the helpclass for the current <command> node
+		String desc;       // Holds the description for the current <command> node
+		String cmdswitch;  // Holds the switch for the current <command> node
+
+
+		// Show the header and switch commands
+		System.out.println();
+		System.out.println("Xindice Command Tools v" + Xindice.Version);
+		System.out.println();
+		System.out.println("Format: xindice action [switch] [parameter]");
+		System.out.println();
+		System.out.println("Switches:");
+		System.out.println("    -c           Collection context (must always be specified),");
+		System.out.println("                 can be either canonical name of the collection");
+		System.out.println("                 or complete xmldb URL");
+		System.out.println("    -e           File extension for multiple documents");
+		System.out.println("    -f           File path for document retrieval and storage");
+		System.out.println("    -n           Name");
+		System.out.println("    -p           Index pattern");
+		System.out.println("    -q           Query string");
+		System.out.println("    -s           Semi-colon delimited list of namespaces for query in ");
+		System.out.println("                 the form prefix=namespace-uri");
+		System.out.println("    -l           Use a local database rather then going over the network.");
+		System.out.println("                 Should be combined with -d to specify the configuration to use.");
+		System.out.println("    -d           Path to the database configuration to use for the local ");
+		System.out.println("                 database. Only applies if -l is specified.");
+		System.out.println("    -t           Specify the data type in collection index");
+		System.out.println("    -v           Verbose");
+		System.out.println("    --pagesize   Page size for file pages (default: 4096)");
+		System.out.println("    --maxkeysize The maximum size for file keys (default: 0=none)");
+		System.out.println("    --pagecount  Number of pages in the primary storage (default: 1024)");
+		System.out.println();
+
+		System.out.println("Actions:");
+
+		// Show all elements with helpclass=document
+		// Loop over the commands, printing test from description attribute
+		for (int i = 0; i < list.getLength(); i++) {
+			helpClass = ((Element) list.item(i)).getAttribute("helpclass");
+
+			if (helpClass.equals("document")) {
+				desc = ((Element) list.item(i)).getAttribute("description");
+				cmdswitch = ((Element) list.item(i)).getAttribute("switch");
+				System.out.println("    " + StringUtilities.leftJustify(cmdswitch, 13) + desc);
+			}
+		}
+
+		// Loop over the commands, printing text from description attribute
+		for (int i = 0; i < list.getLength(); i++) {
+			helpClass = ((Element) list.item(i)).getAttribute("helpclass");
+
+			if (helpClass.equals("security")) {
+				desc = ((Element) list.item(i)).getAttribute("description");
+				cmdswitch = ((Element) list.item(i)).getAttribute("switch");
+				System.out.println("    " + StringUtilities.leftJustify(cmdswitch, 13) + desc);
+			}
+		}
+
+		System.out.println();
+		System.out.println("Examples:");
+		System.out.println("    xindice ad -c /db/test -f /tmp/xmldocument -n myxmldocument");
+		System.out.println("    xindice dd -c /db/test -n myxmldocument");
+		System.out.println("    xindice rd -c /db/test/ocs -f a:\\file.xml -n file.xml");
+		System.out.println("    xindice xpath -c /db/test/ocs -q test");
+		System.out.println("    xindice xpath -c /db/test -s a=http://somedomain.com/schema.xsd -q /a:foo");
+		System.out.println("    xindice xupdate -c /db/test -f /path/to/xupdate.xml");
+		System.out.println("    xindice xupdate -c /db/test -n document-to-update.xml -f /path/to/xupdate.xml");
+		System.out.println();
+		System.out.println("For more information, please read the Xindice - Tools Reference Guide");
+		System.out.println();
+		return true;
+	}
+
+}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.