<?xml version="1.0" encoding="UTF-8"?>
<commands>
<!-- The Connections category -->
<category name="Connections" description="Connection related commands">
<command verb="connect" class="com.dbxml.db.client.tools.command.Connect">
   <description>Connect to a dbXML server</description>
   <usage>CONNECT [connection properties]</usage>
   <help>
Allows you to connect to a new dbXML server.  You may optionally
specify connection properties in the form (name=value).

Example:
   connect host=localhost port=7280
   </help>
</command>

<command verb="disconnect" class="com.dbxml.db.client.tools.command.Disconnect">
   <description>Disconnect from the dbXML server</description>
   <usage>DISCONNECT</usage>
   <help>
Allows you to disconnect from the current dbXML server.  You must
disconnect before connecting to a new server.
   </help>
</command>
</category>

<!-- The Collections category -->
<category name="Collections" description="Collection related commands">
<command verb="lscol" class="com.dbxml.db.client.tools.command.ListCollections">
   <description>Lists the child Collections of a Collection</description>
   <usage>LSCOL [wildcard]</usage>
   <help>
Lists the Collections that belong to the current Collection.
If a wildcard is specified, the resulting list will be filtered
based on the wildcard.
   </help>
</command>

<command verb="col" class="com.dbxml.db.client.tools.command.Collection">
   <description>Set the default Collection</description>
   <usage>COL 'collection'</usage>
   <help>
Sets the default contextual Collection to the Collection
specified by 'collection'.
   </help>
</command>

<command verb="mkcol" class="com.dbxml.db.client.tools.command.CreateCollection">
   <description>Create a new Document Collection</description>
   <usage>MKCOL 'collection name' [properties]</usage>
   <help>
Creates a new Document Collection in the current Collection
context.  You may optionally specify collection properties in
the form (name=value).

Example:
   mkcol movies class=com.dbxml.db.common.filer.MemFiler
   </help>
</command>

<command verb="rmcol" class="com.dbxml.db.client.tools.command.DropCollection">
   <description>Remove the specified child Collection from the Collection</description>
   <usage>RMCOL 'collection name'</usage>
   <help>
Removes the child Collection specified by 'collection name' from
the current Collection context.
   </help>
</command>
</category>

<!-- The Content category -->
<category name="Content" description="Content related commands">
<command verb="ls" class="com.dbxml.db.client.tools.command.ListContents">
   <description>Lists the Keys in a Collection</description>
   <usage>LS [wildcard]</usage>
   <help>
Lists the key names that belong to the current Collection.
If a wildcard is specified, the resulting list will be filtered
based on the wildcard.
   </help>
</command>

<command verb="show" class="com.dbxml.db.client.tools.command.ContentShow">
   <description>Retrieves a Document from a Collection</description>
   <usage>SHOW 'document name'</usage>
   <help>
Retrieves the specified Document from the current Collection
context, and displays its contents to the console.  This command
will only operate against Document Collections.
   </help>
</command>

<command verb="import" class="com.dbxml.db.client.tools.command.ContentImport">
   <description>Imports Content in a Collection</description>
   <usage>IMPORT 'filespec' [AS 'name'] [RECURSIVE]</usage>
   <help>
Retrieves the specified file(s) from the file system, and stores
them in the current Collection context.  If no 'name' is specified,
the filename portion of the 'filespec' will be used, unless a
wildcard is specified.
   </help>
</command>

<command verb="export" class="com.dbxml.db.client.tools.command.ContentExport">
   <description>Exports Content from a Collection</description>
   <usage>EXPORT 'filespec' [AS 'name']</usage>
   <help>
Retrieves the specified file(s) from the current Collection
and stores them in the file system at the designated path.
If no 'name' is specified, the filename portion of the 'filespec'
will be used, unless a wildcard is specified.
   </help>
</command>

<command verb="rm" class="com.dbxml.db.client.tools.command.ContentDrop">
   <description>Remove the specified Content from the Collection</description>
   <usage>RM 'filespec'</usage>
   <help>
Removes the specified file(s) from the current Collection
context.  If a wildcard is specified, all files that match the
wildcard will be deleted.
   </help>
</command>
</category>

<!-- The Indexes category -->
<category name="Indexes" description="Index related commands">
<command verb="lsidx" class="com.dbxml.db.client.tools.command.ListIndexers">
   <description>Lists the Indexers of a Collection</description>
   <usage>LSIDX [wildcard]</usage>
   <help>
Lists the Indexers that belong to the current Collection.
If a wildcard is specified, the resulting list will be filtered
based on the wildcard.
   </help>
</command>

<command verb="mkidx" class="com.dbxml.db.client.tools.command.CreateIndex">
   <description>Create a new Collection Index</description>
   <usage>MKIDX 'index name' [properties]</usage>
   <help>
Creates a new Index in the current Collection context.
You may optionally specify index properties in the form
(name=value).

Example:
   mkidx name pattern=elem@attr type=int
   </help>
</command>

<command verb="rmidx" class="com.dbxml.db.client.tools.command.DropIndexer">
   <description>Remove the specified Indexer from the Collection</description>
   <usage>RMIDX 'indexer name'</usage>
   <help>
Removes the Indexer specified by 'indexer name' from the
current Collection context.
   </help>
</command>
</category>

<!-- The Triggers category -->
<category name="Triggers" description="Trigger related commands">
<command verb="lstrg" class="com.dbxml.db.client.tools.command.ListTriggers">
   <description>Lists the Triggers of a Collection</description>
   <usage>LSTRG [wildcard]</usage>
   <help>
Lists the Triggers that belong to the current Collection.
If a wildcard is specified, the resulting list will be filtered
based on the wildcard.
   </help>
</command>

<command verb="mktrg" class="com.dbxml.db.client.tools.command.CreateTrigger">
   <description>Register a Collection Trigger</description>
   <usage>MKTRG 'trigger name' [properties]</usage>
   <help>
Registers a new Collection Trigger in the current Collection
context.  You must specify a class property.

Example:
   mktrg myTrigger class=com.dbxml.db.samples.SampleTrigger
   </help>
</command>

<command verb="rmtrg" class="com.dbxml.db.client.tools.command.DropTrigger">
   <description>Remove the specified Trigger from the Collection</description>
   <usage>RMTRG 'trigger name'</usage>
   <help>
Removes the Trigger specified by 'trigger name' from the
current Collection context.
   </help>
</command>
</category>

<!-- The Extensions category -->
<category name="Extensions" description="Extension related commands">
<command verb="lsext" class="com.dbxml.db.client.tools.command.ListExtensions">
   <description>Lists the Extensions of a Collection</description>
   <usage>LSEXT [wildcard]</usage>
   <help>
Lists the Extensions that belong to the current Collection.
If a wildcard is specified, the resulting list will be filtered
based on the wildcard.
   </help>
</command>

<command verb="mkext" class="com.dbxml.db.client.tools.command.CreateExtension">
   <description>Register a Collection Extension</description>
   <usage>MKEXT 'extension name' [properties]</usage>
   <help>
Registers a new Extension in the current Collection context.
You must specify a class property.

Example:
   mkext sample class=com.dbxml.db.samples.SampleExtension
   </help>
</command>

<command verb="rmext" class="com.dbxml.db.client.tools.command.DropExtension">
   <description>Remove the specified Extension from the Collection</description>
   <usage>RMEXT 'extension name'</usage>
   <help>
Removes the Extension specified by 'extension name' from the
current Collection context.
   </help>
</command>
</category>

<!-- The Security category -->
<category name="Security" description="Security related commands">
<command verb="lsuser" class="com.dbxml.db.client.tools.command.ListUsers">
   <description>Lists the available Database Users</description>
   <usage>LSUSER [wildcard]</usage>
   <help>
Lists the Users that are registered with the current Database.
If a wildcard is specified, the resulting list will be filtered
based on the wildcard.
   </help>
</command>

<command verb="adduser" class="com.dbxml.db.client.tools.command.AddUser">
   <description>Adds a new User to the Database</description>
   <usage>ADDUSER 'user id'</usage>
   <help>
Adds a new User to the Database.  When a User is initially
created, their password will not be set.  A User account
cannot be utilized until a password is set using the USER
command.
   </help>
</command>

<command verb="user" class="com.dbxml.db.client.tools.command.User">
   <description>Modifies User attributes</description>
   <usage>USER 'user id' 'action' [parameter]</usage>
   <help>
Modifies a User's attributes.  These may include passwords,
notes, full name, and Role participation.

The available actions are:

   PASSWORD 'password'   Sets the User's password to 'password'
   ADDROLE  'role id'    Adds the User to the specified Role
   RMROLE   'role id'    Removes the User from the specified Role
   LSROLE                Lists the Roles to which the User belongs

Example:
   user joe addrole dev
   </help>
</command>

<command verb="rmuser" class="com.dbxml.db.client.tools.command.RemoveUser">
   <description>Removes a User from the Database</description>
   <usage>RMUSER 'user id'</usage>
   <help>
Removes a User from the Database.
   </help>
</command>

<command verb="lsrole" class="com.dbxml.db.client.tools.command.ListRoles">
   <description>Lists the available Database Roles</description>
   <usage>LSROLE [wildcard]</usage>
   <help>
Lists the Roles that are registered with the current Database.
If a wildcard is specified, the resulting list will be filtered
based on the wildcard.
   </help>
</command>

<command verb="addrole" class="com.dbxml.db.client.tools.command.AddRole">
   <description>Adds a new Role to the Database</description>
   <usage>ADDROLE 'role id'</usage>
   <help>
Adds a new Role to the Database.
   </help>
</command>

<command verb="role" class="com.dbxml.db.client.tools.command.Role">
   <description>Modifies Role attributes</description>
   <usage>ROLE 'role id' 'action' [parameter]</usage>
   <help>
Modifies a Role's attributes.

The available actions are:

   ADDUSER 'user id'   Adds the specified User to the Role
   RMUSER  'user id'   Removes the specified User from the Role
   LSUSER              Lists the Users that participate in this Role

Example:
   role dev lsuser
   </help>
</command>

<command verb="rmrole" class="com.dbxml.db.client.tools.command.RemoveRole">
   <description>Removes a Role from the Database</description>
   <usage>RMROLE 'role id'</usage>
   <help>
Removes a Role from the Database.
   </help>
</command>

<command verb="access" class="com.dbxml.db.client.tools.command.AccessControlList">
   <description>Displays the Collection's Access Control List</description>
   <usage>ACCESS [role id]</usage>
   <help>
Displays the Access Control List for the current Collection context.
The Access Control List consists of the Role IDs who participate in
the Collection, and the specified access modes that they are entitled
to.  If a Role ID is specified, only the permissions for that Role
will be displayed.
   </help>
</command>

<command verb="grant" class="com.dbxml.db.client.tools.command.Grant">
   <description>Grants permissions to a Role</description>
   <usage>GRANT 'role id' [READ] [WRITE] [EXECUTE] [CREATE] [ALL] [RECURSIVE]</usage>
   <help>
Grants permissions to the specified Role ID on the current
Collection context.  The permissions can be any or all of the
following:

   READ        Permission to retrieve (read) Documents
   WRITE       Permission to store (write) Documents
   EXECUTE     Permission to execute methods of an Extension
   CREATE      Permission to create child objects (Indexes, Collections)
   ALL         The combination of all permissions
   RECURSIVE   Recursively grants the permissions to all children
   </help>
</command>

<command verb="revoke" class="com.dbxml.db.client.tools.command.Revoke">
   <description>Revokes permissions from a Role</description>
   <usage>REVOKE 'role id' [READ] [WRITE] [EXECUTE] [CREATE] [ALL] [RECURSIVE]</usage>
   <help>
Revokes permissions to the specified Role ID on the current
Collection context.  The permissions can be any or all of the
following:

   READ        Permission to retrieve (read) Documents
   WRITE       Permission to store (write) Documents
   EXECUTE     Permission to execute methods of an Extension
   CREATE      Permission to create child objects (Indexes, Collections)
   ALL         The combination of all permissions
   RECURSIVE   Recursively revokes the permissions from all children
   </help>
</command>

</category>

<!-- The Options category -->
<category name="Options" description="Various other options">
<command verb="set" class="com.dbxml.db.client.tools.command.Set">
   <description>Set or display interactive mode properties</description>
   <usage>SET ['prop name' [value]]</usage>
   <help>
If no property value is specified, the current value of the
property is displayed.  If no property name or value are
specified, the entire set of properties and values is displayed.
   </help>
</command>

<command verb="version" class="com.dbxml.db.client.tools.command.Version">
   <description>Displays the server and client versions</description>
   <usage>VERSION</usage>
   <help>
Displays version information for the currently connected
dbXML server and the current dbXML client library.
   </help>
</command>

<command verb="shutdown" class="com.dbxml.db.client.tools.command.Shutdown">
   <description>Shuts down the server</description>
   <usage>SHUTDOWN [exit code]</usage>
   <help>
Shuts down the dbXML server with an optional exit code.
   </help>
</command>

<command verb="exit" class="com.dbxml.db.client.tools.command.Exit">
   <description>Exit interactive mode</description>
   <usage>EXIT [exit code]</usage>
   <help>
Exits the dbXML Interactive Mode command line with an optional
exit code.
   </help>
</command>
</category>
</commands>
