kevinross    2003/07/10 14:42:48

  Modified:    java/src/org/apache/xindice/client/xmldb/embed
                        DatabaseImpl.java
  Log:
  formatting, organize imports
  
  Revision  Changes    Path
  1.10      +159 -156  
xml-xindice/java/src/org/apache/xindice/client/xmldb/embed/DatabaseImpl.java
  
  Index: DatabaseImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xindice/java/src/org/apache/xindice/client/xmldb/embed/DatabaseImpl.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- DatabaseImpl.java 9 Jul 2003 16:35:12 -0000       1.9
  +++ DatabaseImpl.java 10 Jul 2003 21:42:48 -0000      1.10
  @@ -88,181 +88,184 @@
    */
   public class DatabaseImpl extends CommonConfigurable implements 
org.xmldb.api.base.Database {
   
  -   private static Log log = 
LogFactory.getLog("org.apache.xindice.client.embed");
  +     private static Log log = 
LogFactory.getLog("org.apache.xindice.client.embed");
   
  -    /* prefix used to denote XML:DB URI's that should use this driver */
  -    static String DRIVER_NAME = "xindice-embed";
  -    
  -    /* XML:DB conformance level of this driver */
  -    private String CONFORMANCE_LEVEL = "0";
  -
  -    protected Database db;
  -
  -   /**
  -    * Creates new <code>DatabaseImpl</code> instance. The configuration is
  -    * loaded from the file defined in the PROP_XINDICE_CONFIGURATION system
  -    * variable.
  -    *
  -    * This is only a temporarly solution since the question of a new init
  -    * method is raised in the xmldb:api group. Another solution could be to
  -    * use the Configurable interface and only create the database when the
  -    * getCollection method is called.
  -    */
  -     public DatabaseImpl() throws FileNotFoundException, XindiceException {
  -      Configuration config;
  -             config = loadConfiguration();
  +     /* prefix used to denote XML:DB URI's that should use this driver */
  +     static String DRIVER_NAME = "xindice-embed";
  +
  +     /* XML:DB conformance level of this driver */
  +     private String CONFORMANCE_LEVEL = "0";
   
  +     protected Database db;
  +
  +     /**
  +      * Creates new <code>DatabaseImpl</code> instance. The configuration is
  +      * loaded from the file defined in the PROP_XINDICE_CONFIGURATION system
  +      * variable.
  +      *
  +      * This is only a temporarly solution since the question of a new init
  +      * method is raised in the xmldb:api group. Another solution could be to
  +      * use the Configurable interface and only create the database when the
  +      * getCollection method is called.
  +      */
  +     public DatabaseImpl() throws FileNotFoundException, XindiceException {
  +             
  +             Configuration config = loadConfiguration();
                this.db = Database.getDatabase(config);
   
                if (null == this.db) {
                        log.fatal("Unable to configure database");
   
                        throw new XindiceException("Unable to configure 
database");
  -             } else if (log.isInfoEnabled()) {
  +             }
  +             else if (log.isInfoEnabled()) {
                        log.info("Database name: '" + this.db.getName() + "'");
                }
        }
   
        protected Configuration loadConfiguration() throws 
FileNotFoundException, XindiceException, ReadOnlyException {
                Configuration config;
  -      String configFile = 
System.getProperty(Xindice.PROP_XINDICE_CONFIGURATION);
  -      if (configFile != null && !configFile.equals("")) {
  -         if (log.isInfoEnabled()) {
  -            log.info("Specified configuration file: '" + configFile + "'");
  -         }
  -         FileInputStream configXMLFile = new FileInputStream(new 
File(configFile));
  -
  -         config = new Configuration(DOMParser.toDocument(configXMLFile), 
false);
  -             } else {
  -         if (log.isInfoEnabled()) {
  -            log.info("No configuration file specified, going with the 
default configuration");
  -         }
  -         config = new 
Configuration(DOMParser.toDocument(Xindice.DEFAULT_CONFIGURATION), false);
  -      }
  +             String configFile = 
System.getProperty(Xindice.PROP_XINDICE_CONFIGURATION);
  +             if (configFile != null && !configFile.equals("")) {
  +                     if (log.isInfoEnabled()) {
  +                             log.info("Specified configuration file: '" + 
configFile + "'");
  +                     }
  +                     FileInputStream configXMLFile = new FileInputStream(new 
File(configFile));
  +
  +                     config = new 
Configuration(DOMParser.toDocument(configXMLFile), false);
  +             }
  +             else {
  +                     if (log.isInfoEnabled()) {
  +                             log.info("No configuration file specified, 
going with the default configuration");
  +                     }
  +                     config = new 
Configuration(DOMParser.toDocument(Xindice.DEFAULT_CONFIGURATION), false);
  +             }
   
  -      config = config.getChild("root-collection", false);
  +             config = config.getChild("root-collection", false);
                return config;
  -   }
  +     }
  +
  +     /**
  +      * Determines whether this <code>Database</code> implementation  can 
handle
  +      * the URI. It should return true if the Database instance knows how to
  +      * handle the URI and false otherwise.
  +      *
  +      * @param uri the URI to check for.
  +      * @return true if the URI can be handled, false otherwise.
  +      * @exception XMLDBException with expected error codes.<br />
  +      *  <code>ErrorCodes.VENDOR_ERROR</code> for any vendor
  +      *  specific errors that occur.<br />
  +      *  <code>ErrroCodes.INVALID_URI</code> If the URI is not in a valid 
format. <br />
  +      */
  +     public boolean acceptsURI(String uri) throws XMLDBException {
   
  -   /**
  -    * Determines whether this <code>Database</code> implementation  can 
handle
  -    * the URI. It should return true if the Database instance knows how to
  -    * handle the URI and false otherwise.
  -    *
  -    * @param uri the URI to check for.
  -    * @return true if the URI can be handled, false otherwise.
  -    * @exception XMLDBException with expected error codes.<br />
  -    *  <code>ErrorCodes.VENDOR_ERROR</code> for any vendor
  -    *  specific errors that occur.<br />
  -    *  <code>ErrroCodes.INVALID_URI</code> If the URI is not in a valid 
format. <br />
  -    */
  -    public boolean acceptsURI(String uri) throws XMLDBException {
  -
  -        return ((uri != null) && uri.startsWith(getName() + "://"));
  -    }
  -    
  -   /**
  -    * Retrieves a <code>Collection</code> instance based on the URI provided
  -    * in the <code>uri</code> parameter. The format of the URI is defined in 
the
  -    * documentation for DatabaseManager.getCollection().<p/>
  -    *
  -    * Authentication is handled via username and password however it is not
  -    * required that the database support authentication. Databases that do 
not
  -    * support authentication MUST ignore the
  -    * <code>username</code> and <code>password</code> if those provided are 
not
  -    * null.
  -    *
  -    * @param uri the URI to use to locate the collection.
  -    * @param password The password to use for authentication to the database 
or
  -    *    null if the database does not support authentication.
  -    * @return A <code>Collection</code> instance for the requested 
collection or
  -    *  null if the collection could not be found.
  -    * @return The <code>Collection</code> instance
  -    * @exception XMLDBException with expected error codes.<br />
  -    *  <code>ErrorCodes.VENDOR_ERROR</code> for any vendor
  -    *  specific errors that occur.<br />
  -    *  <code>ErrroCodes.INVALID_URI</code> If the URI is not in a valid 
format. <br />
  -    *  <code>ErrroCodes.PERMISSION_DENIED</code> If the <code>username</code>
  -    *    and <code>password</code> were not accepted by the database.
  -    */
  +             return ((uri != null) && uri.startsWith(getName() + "://"));
  +     }
  +
  +     /**
  +      * Retrieves a <code>Collection</code> instance based on the URI 
provided
  +      * in the <code>uri</code> parameter. The format of the URI is defined 
in the
  +      * documentation for DatabaseManager.getCollection().<p/>
  +      *
  +      * Authentication is handled via username and password however it is not
  +      * required that the database support authentication. Databases that do 
not
  +      * support authentication MUST ignore the
  +      * <code>username</code> and <code>password</code> if those provided 
are not
  +      * null.
  +      *
  +      * @param uri the URI to use to locate the collection.
  +      * @param password The password to use for authentication to the 
database or
  +      *    null if the database does not support authentication.
  +      * @return A <code>Collection</code> instance for the requested 
collection or
  +      *  null if the collection could not be found.
  +      * @return The <code>Collection</code> instance
  +      * @exception XMLDBException with expected error codes.<br />
  +      *  <code>ErrorCodes.VENDOR_ERROR</code> for any vendor
  +      *  specific errors that occur.<br />
  +      *  <code>ErrroCodes.INVALID_URI</code> If the URI is not in a valid 
format. <br />
  +      *  <code>ErrroCodes.PERMISSION_DENIED</code> If the 
<code>username</code>
  +      *    and <code>password</code> were not accepted by the database.
  +      */
        public Collection getCollection(String uri, String userName, String 
password) throws XMLDBException {
  -        /* TODO: introduce authentication some day */
  -                
  -        if (!acceptsURI(uri)) {
  +             /* TODO: introduce authentication some day */
  +
  +             if (!acceptsURI(uri)) {
                        throw new XMLDBException(ErrorCodes.INVALID_URI, 
"Invalid URL: " + uri);
  -        }
  +             }
  +
  +             /* Chop off driver prefix, and '://' */
  +             uri = uri.substring(getName().length() + 3);
  +
  +             /* Extract host name & port, if present */
  +             int firstSlash = uri.indexOf('/');
  +             if (firstSlash == -1) {
  +                     throw new XMLDBException(ErrorCodes.INVALID_URI);
  +             }
  +
  +             String collPath = uri.substring(firstSlash);
   
  -        /* Chop off driver prefix, and '://' */
  -        uri = uri.substring(getName().length() + 3);
  -        
  -        /* Extract host name & port, if present */
  -        int firstSlash = uri.indexOf('/');
  -        if (firstSlash == -1) {         
  -            throw new XMLDBException(ErrorCodes.INVALID_URI);
  -        }
  -        
  -        String collPath = uri.substring(firstSlash);
  -        
  -        // The path must start with a /
  -        if ( collPath.startsWith( "/" ) ) {
  -           // find the database name. We just skip the first slash
  -           int colIndex = collPath.indexOf( '/', 1 );
  -
  -           // We assume there's no collection specified
  -           String dbName =  collPath.substring( 1 );
  -           String colName = "/";
  -
  -           // if colIndex isn't -1 then we need to pick out the db and 
collection
  -           if ( colIndex != -1 ) {
  -              dbName = collPath.substring( 1, colIndex );
  -
  -              // The rest of the name locates the collection
  -              colName = collPath.substring( colIndex );
  -           }
  -
  -           if ( colName.equals("") ) {
  -              colName = "/";
  -           }
  -           
  -                try {
  -           return new CollectionImpl(db, colName);
  -                     } catch (XMLDBException e) {
  -              if(e.errorCode == ErrorCodes.NO_SUCH_COLLECTION) {
  -                 // per getCollection contract, return null if not found
  -                 return null;
  -              }
  -                       throw e;
  -                }
  -             } else {
  +             // The path must start with a /
  +             if (collPath.startsWith("/")) {
  +                     // find the database name. We just skip the first slash
  +                     int colIndex = collPath.indexOf('/', 1);
  +
  +                     // We assume there's no collection specified
  +                     String dbName = collPath.substring(1);
  +                     String colName = "/";
  +
  +                     // if colIndex isn't -1 then we need to pick out the db 
and collection
  +                     if (colIndex != -1) {
  +                             dbName = collPath.substring(1, colIndex);
  +
  +                             // The rest of the name locates the collection
  +                             colName = collPath.substring(colIndex);
  +                     }
  +
  +                     if (colName.equals("")) {
  +                             colName = "/";
  +                     }
  +
  +                     try {
  +                             return new CollectionImpl(db, colName);
  +                     }
  +                     catch (XMLDBException e) {
  +                             if (e.errorCode == 
ErrorCodes.NO_SUCH_COLLECTION) {
  +                                     // per getCollection contract, return 
null if not found
  +                                     return null;
  +                             }
  +                             throw e;
  +                     }
  +             }
  +             else {
                        throw new XMLDBException(ErrorCodes.INVALID_URI, 
"Collection name must begin with a '/'");
  -        }
  -    }
  +             }
  +     }
  +
  +     /**
  +      * Returns the prefix used in XML:DB to denote URI's that this driver 
can
  +      * handle.
  +      *
  +      * @return the prefix driver name
  +      * @exception XMLDBException with expected error codes.<br />
  +      *  <code>ErrorCodes.VENDOR_ERROR</code> for any vendor
  +      *  specific errors that occur.<br />
  +      */
  +     public String getName() throws XMLDBException {
  +             return DRIVER_NAME;
  +     }
  +
  +     /**
  +      * Returns the XML:DB API Conformance level for the implementation. 
This can
  +      * be used by client programs to determine what functionality is 
available to
  +      * them.
  +      *
  +      * @return the XML:DB API conformance level for this implementation.
  +      * @exception XMLDBException with expected error codes.<br />
  +      *  <code>ErrorCodes.VENDOR_ERROR</code> for any vendor
  +      *  specific errors that occur.<br />
  +      */
  +     public String getConformanceLevel() throws XMLDBException {
  +             return CONFORMANCE_LEVEL;
  +     }
   
  -   /**
  -    * Returns the prefix used in XML:DB to denote URI's that this driver can
  -    * handle.
  -    *
  -    * @return the prefix driver name
  -    * @exception XMLDBException with expected error codes.<br />
  -    *  <code>ErrorCodes.VENDOR_ERROR</code> for any vendor
  -    *  specific errors that occur.<br />
  -    */
  -    public String getName() throws XMLDBException {
  -        return DRIVER_NAME;
  -    }
  -        
  -   /**
  -    * Returns the XML:DB API Conformance level for the implementation. This 
can
  -    * be used by client programs to determine what functionality is 
available to
  -    * them.
  -    *
  -    * @return the XML:DB API conformance level for this implementation.
  -    * @exception XMLDBException with expected error codes.<br />
  -    *  <code>ErrorCodes.VENDOR_ERROR</code> for any vendor
  -    *  specific errors that occur.<br />
  -    */
  -    public String getConformanceLevel() throws XMLDBException {
  -        return CONFORMANCE_LEVEL;
  -    }
  -    
   }
  
  
  

Reply via email to