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;
+ }
}