package org.dbxml.examples;

/*
 * dbXML Core - Example Code
 *
 * Copyright (c) 1999-2001 The dbXML Group
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy 
 * of this software and associated documentation files (the "Software"), to 
 * deal in the Software without restriction, including without limitation the
 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 
 * sell copies of the Software, and to permit persons to whom the Software is 
 * furnished to do so, subject to the following conditions:
 *
 *    The above copyright notice and this permission notice shall be included 
 *       in all copies of substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 
 * IN THE SOFTWARE.
 *
 * $Id: CreateCollection.java,v 1.3 2001/09/06 18:32:56 kstaken Exp $
 */

import org.xmldb.api.base.*;
import org.xmldb.api.modules.*;
import org.xmldb.api.*;

// For the dbXML specific CollectionManager service
import org.dbxml.client.xmldb.services.*;

import org.dbxml.xml.dom.*;

/**
 * Simple XML:DB API example to create a collection.
 */
public class CreateCollection {
   public static void main(String[] args) throws Exception {
      Collection col = null;
      try {
         String driver = "org.dbxml.client.xmldb.DatabaseImpl";
         Class c = Class.forName(driver);
         
         Database database = (Database) c.newInstance();
         DatabaseManager.registerDatabase(database);
         col =
            DatabaseManager.getCollection("xmldb:dbxml:///db/");
   
         String collectionName = "addressbook";
         CollectionManager service =
            (CollectionManager) col.getService("CollectionManager", "1.0");
         
         // Build up the Collection XML configuration.
         String collectionConfig = 
            "<collection compressed=\"true\" name=\"" + collectionName + "\">" + 
            "   <filer class=\"org.dbxml.core.filer.BTreeFiler\" gzip=\"true\"/>" +
            "</collection>";
            
         service.createCollection(collectionName, 
               DOMParser.toDocument(collectionConfig));
               
         System.out.println("Collection " + collectionName + " created.");         
      }
      catch (XMLDBException e) {
         System.err.println("XML:DB Exception occured " + e.errorCode + " " + 
            e.getMessage());
      }
      finally {
         if (col != null) {
            col.close();
         }
      }
   }
}
