You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xindice-dev@xml.apache.org by ke...@apache.org on 2003/07/10 23:41:05 UTC

cvs commit: xml-xindice/java/src/org/apache/xindice/core Database.java

kevinross    2003/07/10 14:41:05

  Modified:    java/src/org/apache/xindice/core Database.java
  Log:
  formatting, organize imports
  added log message
  
  Revision  Changes    Path
  1.19      +209 -205  xml-xindice/java/src/org/apache/xindice/core/Database.java
  
  Index: Database.java
  ===================================================================
  RCS file: /home/cvs/xml-xindice/java/src/org/apache/xindice/core/Database.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- Database.java	9 Jul 2003 16:35:12 -0000	1.18
  +++ Database.java	10 Jul 2003 21:41:05 -0000	1.19
  @@ -58,57 +58,56 @@
    *
    * $Id$
    */
  -
  -import org.apache.xindice.core.query.QueryEngine;
  -import org.apache.xindice.util.Configuration;
  -import org.apache.xindice.util.Named;
  -import org.apache.xindice.util.XindiceException;
  -import org.apache.xindice.core.meta.TimeRecord;
  -
  -import org.apache.commons.logging.Log;
  -import org.apache.commons.logging.LogFactory;
  -
  -import org.w3c.dom.*;
  -
   import java.io.File;
   import java.util.HashMap;
   import java.util.Map;
  +
   import javax.xml.parsers.DocumentBuilder;
   import javax.xml.parsers.DocumentBuilderFactory;
   
  +import org.apache.commons.logging.Log;
  +import org.apache.commons.logging.LogFactory;
  +import org.apache.xindice.core.meta.TimeRecord;
  +import org.apache.xindice.core.query.QueryEngine;
  +import org.apache.xindice.util.Configuration;
  +import org.apache.xindice.util.Named;
  +import org.apache.xindice.util.XindiceException;
  +import org.w3c.dom.Document;
  +import org.w3c.dom.Element;
  +
   /**
    * Database is the primary container for the Xindice Database Engine.
    */
   
   public final class Database extends Collection implements Named {
  -   public static final String DBROOT = "dbroot";
  -   private static final String QUERYENGINE = "queryengine";
  -   private static final String DATABASE = "database";
  -   private static final String COLKEY = "database.xml";
  -   private static final String METADATA = "use-metadata";
  -   public static final String NAME = "name";
  +	public static final String DBROOT = "dbroot";
  +	private static final String QUERYENGINE = "queryengine";
  +	private static final String DATABASE = "database";
  +	private static final String COLKEY = "database.xml";
  +	private static final String METADATA = "use-metadata";
  +	public static final String NAME = "name";
   
  -   private static Log log = LogFactory.getLog("org.apache.xindice.core");
  +	private static Log log = LogFactory.getLog("org.apache.xindice.core");
   
  -   public static final String PROP_XINDICE_HOME = "xindice.home";
  +	public static final String PROP_XINDICE_HOME = "xindice.home";
   
  -   private static final Map databases = new HashMap(); // String to Database
  +	private static final Map databases = new HashMap(); // String to Database
   
  -   private DocumentCache docCache = new DocumentCache();
  +	private DocumentCache docCache = new DocumentCache();
   
  -   private SystemCollection sysCol = null;
  +	private SystemCollection sysCol = null;
   
  -   private MetaSystemCollection metaCol = null;
  +	private MetaSystemCollection metaCol = null;
   
  -   private boolean sysInit = false;
  -   private boolean metaInit = false;
  -   private boolean metaEnabled = false;
  -   // key = canonical name, value = timerecord
  -   private Map timestamps = new HashMap();
  +	private boolean sysInit = false;
  +	private boolean metaInit = false;
  +	private boolean metaEnabled = false;
  +	// key = canonical name, value = timerecord
  +	private Map timestamps = new HashMap();
   
  -   private QueryEngine engine = new QueryEngine(this);
  +	private QueryEngine engine = new QueryEngine(this);
   
  -   public static Database getDatabase(String name) {
  +	public static Database getDatabase(String name) {
   
   		Database database = (Database) databases.get(name);
   		if (null == database) {
  @@ -148,197 +147,202 @@
   		}
   
   		return database;
  -   }
  +	}
  +
  +	public static String[] listDatabases() {
  +		return (String[]) databases.keySet().toArray(new String[0]);
  +	}
  +
  +	public void setConfig(Configuration config) {
  +		this.config = config;
  +
  +		name = config.getAttribute(NAME);
  +		setCanonicalName('/' + getName());
  +
  +		String dbroot = config.getAttribute(DBROOT);
  +		File dbrootDir = new File(dbroot);
  +		if (!dbrootDir.isAbsolute()) {
  +			dbrootDir = new File(System.getProperty(PROP_XINDICE_HOME), dbroot);
  +		}
  +		setCollectionRoot(dbrootDir);
  +		log.info("Database points to " + dbrootDir.getAbsolutePath());
  +		log.debug("Database dir exists: " + (dbrootDir == null ? false : dbrootDir.exists()));
  +
  +		try {
  +			Configuration queryCfg = config.getChild(QUERYENGINE);
  +			if (queryCfg != null)
  +				engine.setConfig(queryCfg);
  +		}
  +		catch (Exception e) {
  +			if (log.isDebugEnabled()) {
  +				log.debug("No message", e);
  +			}
  +		}
   
  -   public static String[] listDatabases() {
  -      return (String[]) databases.keySet().toArray(new String[0]);
  -   }
  -
  -   public void setConfig(Configuration config) {
  -      this.config = config;
  -
  -      name = config.getAttribute(NAME);
  -      setCanonicalName('/' + getName());
  -
  -      String dbroot = config.getAttribute(DBROOT);
  -      File dbrootDir = new File(dbroot);
  -      if (!dbrootDir.isAbsolute()) {
  -         dbrootDir = new File(System.getProperty( PROP_XINDICE_HOME ), dbroot);
  -      }
  -      setCollectionRoot(dbrootDir);
  -      if (log.isInfoEnabled()) {
  -         log.info("Database points to " + dbrootDir.getAbsolutePath());
  -      }
  -
  -      try {
  -         Configuration queryCfg = config.getChild(QUERYENGINE);
  -         if ( queryCfg != null )
  -            engine.setConfig(queryCfg);
  -		} catch (Exception e) {
  -         if (log.isDebugEnabled()) {
  -            log.debug("No message", e);
  -         }
  -      }
  -
  -      if ( !sysInit ) {
  -         sysCol = new SystemCollection(this);
  -
  -         try {
  -            sysCol.init();
  -			} catch (XindiceException e) {
  -            if (log.isDebugEnabled()) {
  -               log.debug("No message", e);
  -            }
  -         }
  -
  -         collections.put(sysCol.getName(), sysCol);
  -         sysInit = true;
  -      }
  -
  -      try {
  -         // Bootstrap from the database itself...  This is accomplished
  -         // by intercepting the setConfig call and using a Configuration
  -         // retrieved from the database instead of the standard config
  -         Document colDoc = sysCol.getCollection(SystemCollection.CONFIGS).getDocument(COLKEY);
  -         if ( colDoc == null ) {
  -            DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
  -            colDoc = db.newDocument();
  -            Element root = colDoc.createElement(DATABASE);
  -            root.setAttribute(NAME, name);
  -            colDoc.appendChild(root);
  -            sysCol.getCollection(SystemCollection.CONFIGS).setDocument(COLKEY, colDoc);
  -         }
  -
  -         super.setConfig(new Configuration(colDoc.getDocumentElement(), false));
  -		} catch (Exception e) {
  -         if (log.isDebugEnabled()) {
  -            log.debug("No message", e);
  -         }
  -      }
  +		if (!sysInit) {
  +			sysCol = new SystemCollection(this);
  +
  +			try {
  +				sysCol.init();
  +			}
  +			catch (XindiceException e) {
  +				if (log.isDebugEnabled()) {
  +					log.debug("No message", e);
  +				}
  +			}
  +
  +			collections.put(sysCol.getName(), sysCol);
  +			sysInit = true;
  +		}
   
  -      // Register the Database with the VM
  +		try {
  +			// Bootstrap from the database itself...  This is accomplished
  +			// by intercepting the setConfig call and using a Configuration
  +			// retrieved from the database instead of the standard config
  +			Document colDoc = sysCol.getCollection(SystemCollection.CONFIGS).getDocument(COLKEY);
  +			if (colDoc == null) {
  +				DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
  +				colDoc = db.newDocument();
  +				Element root = colDoc.createElement(DATABASE);
  +				root.setAttribute(NAME, name);
  +				colDoc.appendChild(root);
  +				sysCol.getCollection(SystemCollection.CONFIGS).setDocument(COLKEY, colDoc);
  +			}
  +
  +			super.setConfig(new Configuration(colDoc.getDocumentElement(), false));
  +		}
  +		catch (Exception e) {
  +			if (log.isDebugEnabled()) {
  +				log.debug("No message", e);
  +			}
  +		}
  +
  +		// Register the Database with the VM
   		// databases.put(getName(), this);
   
  -      // initialize the meta collection
  -      // but only if it's turned on in the config.
  -      String metaCfg = config.getAttribute(METADATA);
  +		// initialize the meta collection
  +		// but only if it's turned on in the config.
  +		String metaCfg = config.getAttribute(METADATA);
   		if (metaCfg.equalsIgnoreCase("on")) {
  -         metaEnabled = true;
  +			metaEnabled = true;
   			if (!metaInit) {
  -            metaCol = new MetaSystemCollection(this);
  -            try {
  -               metaCol.init();
  -				} catch (XindiceException e) {
  -               if (log.isDebugEnabled()) {
  -                  log.debug("Error initializing the meta collection", e);
  -               }
  -            }
  -            // should this attach the meta collection to the database?
  -
  -            collections.put(metaCol.getName(), metaCol);
  -            metaInit = true;
  -            if (log.isInfoEnabled()) {
  -               log.info("Meta information initialized");
  -            }
  -         }
  -      }
  -
  -      // observer
  -      DBObserver.getInstance().setDatabaseConfig(this, collections, config);
  -   }
  -
  -   public SystemCollection getSystemCollection() {
  -      return sysCol;
  -   }
  -
  -   /**
  -    * Return the MetaSystem collection for this database.
  -    * 
  -    * It will return null if metadata is not enabled on this database.
  -    * @return MetaSystemCollection
  -    */
  -   public MetaSystemCollection getMetaSystemCollection() {
  -      return metaCol;
  -   }
  -   
  -   /**
  -    * Return whether or not metadata is enabled on this database.
  -    * @return boolean
  -    */
  +				metaCol = new MetaSystemCollection(this);
  +				try {
  +					metaCol.init();
  +				}
  +				catch (XindiceException e) {
  +					if (log.isDebugEnabled()) {
  +						log.debug("Error initializing the meta collection", e);
  +					}
  +				}
  +				// should this attach the meta collection to the database?
  +
  +				collections.put(metaCol.getName(), metaCol);
  +				metaInit = true;
  +				if (log.isInfoEnabled()) {
  +					log.info("Meta information initialized");
  +				}
  +			}
  +		}
  +
  +		// observer
  +		DBObserver.getInstance().setDatabaseConfig(this, collections, config);
  +	}
  +
  +	public SystemCollection getSystemCollection() {
  +		return sysCol;
  +	}
  +
  +	/**
  +	 * Return the MetaSystem collection for this database.
  +	 * 
  +	 * It will return null if metadata is not enabled on this database.
  +	 * @return MetaSystemCollection
  +	 */
  +	public MetaSystemCollection getMetaSystemCollection() {
  +		return metaCol;
  +	}
  +
  +	/**
  +	 * Return whether or not metadata is enabled on this database.
  +	 * @return boolean
  +	 */
   	public boolean isMetaEnabled() {
  -      return metaEnabled;
  -   }
  +		return metaEnabled;
  +	}
   
  -   public Database getDatabase() {
  -      return this;
  -   }
  -
  -   /**
  -    * flushConfig ensures that the Collection configuration has been
  -    * properly flushed to disk after a modification.
  -    */
  -   public void flushConfig() {
  -      try {
  -         Document d = config.getElement().getOwnerDocument();
  -         sysCol.getCollection(SystemCollection.CONFIGS).setDocument(COLKEY, d);
  -		} catch (Exception e) {
  -         if (log.isErrorEnabled()) {
  -            log.error("Error Writing Configuration '"+name+"', for database "+getName(), e);
  -         }
  -      }
  -      // observer
  -      DBObserver.getInstance().flushDatabaseConfig(this, config);
  -   }
  +	public Database getDatabase() {
  +		return this;
  +	}
   
  -   public boolean close() throws DBException {
  -      flushConfig();
  +	/**
  +	 * flushConfig ensures that the Collection configuration has been
  +	 * properly flushed to disk after a modification.
  +	 */
  +	public void flushConfig() {
  +		try {
  +			Document d = config.getElement().getOwnerDocument();
  +			sysCol.getCollection(SystemCollection.CONFIGS).setDocument(COLKEY, d);
  +		}
  +		catch (Exception e) {
  +			if (log.isErrorEnabled()) {
  +				log.error("Error Writing Configuration '" + name + "', for database " + getName(), e);
  +			}
  +		}
  +		// observer
  +		DBObserver.getInstance().flushDatabaseConfig(this, config);
  +	}
  +
  +	public boolean close() throws DBException {
  +		flushConfig();
   
   		synchronized (databases) {
  -      databases.remove( getName() );
  +			databases.remove(getName());
   		}
   
  -      return true;
  -   }
  +		return true;
  +	}
   
  -   /**
  -    * getDocumentCache returns the Database-level Document Cache.
  -    *
  -    * @return The DocumentCache
  -    */
  -   public DocumentCache getDocumentCache() {
  -      return docCache;
  -   }
  -
  -   /**
  -    * getQueryEngine returns a reference to the Database's current
  -    * operating QueryEngine implementation.
  -    *
  -    * @return The QueryEngine instance
  -    */
  -   public QueryEngine getQueryEngine() {
  -      return engine;
  -   }
  +	/**
  +	 * getDocumentCache returns the Database-level Document Cache.
  +	 *
  +	 * @return The DocumentCache
  +	 */
  +	public DocumentCache getDocumentCache() {
  +		return docCache;
  +	}
  +
  +	/**
  +	 * getQueryEngine returns a reference to the Database's current
  +	 * operating QueryEngine implementation.
  +	 *
  +	 * @return The QueryEngine instance
  +	 */
  +	public QueryEngine getQueryEngine() {
  +		return engine;
  +	}
   
  -   // methods for recording the times when meta data is enabled.
  +	// methods for recording the times when meta data is enabled.
   	public synchronized void recordTime(String path, long created, long modified) {
  -      TimeRecord rec = (TimeRecord)timestamps.get(path);
  -      if( null == rec ) {
  -         rec = new TimeRecord(created, modified);
  -         timestamps.put(path, rec);
  -		} else {
  -         if( created > 0 )
  -            rec.setCreatedTime(created);
  -         if( modified > 0 )
  -            rec.setModifiedTime(modified);
  -      }
  -   }
  +		TimeRecord rec = (TimeRecord) timestamps.get(path);
  +		if (null == rec) {
  +			rec = new TimeRecord(created, modified);
  +			timestamps.put(path, rec);
  +		}
  +		else {
  +			if (created > 0)
  +				rec.setCreatedTime(created);
  +			if (modified > 0)
  +				rec.setModifiedTime(modified);
  +		}
  +	}
   
   	public synchronized void removeTime(String path) {
  -      timestamps.remove(path);
  -   }
  +		timestamps.remove(path);
  +	}
   
   	public synchronized TimeRecord getTime(String path) {
  -      TimeRecord rec = (TimeRecord)timestamps.get(path);
  -      return rec;
  -   }
  +		TimeRecord rec = (TimeRecord) timestamps.get(path);
  +		return rec;
  +	}
   }