001: /*
002:
003: Derby - Class org.apache.derby.iapi.db.Database
004:
005: Licensed to the Apache Software Foundation (ASF) under one or more
006: contributor license agreements. See the NOTICE file distributed with
007: this work for additional information regarding copyright ownership.
008: The ASF licenses this file to you under the Apache License, Version 2.0
009: (the "License"); you may not use this file except in compliance with
010: the License. You may obtain a copy of the License at
011:
012: http://www.apache.org/licenses/LICENSE-2.0
013:
014: Unless required by applicable law or agreed to in writing, software
015: distributed under the License is distributed on an "AS IS" BASIS,
016: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017: See the License for the specific language governing permissions and
018: limitations under the License.
019:
020: */
021:
022: package org.apache.derby.iapi.db;
023:
024: import org.apache.derby.iapi.services.context.ContextManager;
025: import org.apache.derby.iapi.error.StandardException;
026: import org.apache.derby.iapi.sql.ResultSet;
027: import org.apache.derby.iapi.sql.conn.LanguageConnectionContext;
028: import org.apache.derby.iapi.jdbc.AuthenticationService;
029: import org.apache.derby.iapi.services.i18n.LocaleFinder;
030: import java.io.InputStream;
031: import java.io.OutputStream;
032: import java.sql.Date;
033: import java.util.Hashtable;
034: import java.util.Locale;
035:
036: /**
037: * The org.apache.derby.iapi.db.Database
038: * interface provides "internal" methods on the database which are
039: * not available to JBMS users (org.apache.derby.database.Database,
040: * which this interface extends, provides all the externally visible
041: * methods).
042: * <P>
043: * At the present moment, this file defines methods which will at
044: * some point be moved to to the external database interface.
045: *
046: * <B> There are a bunch of the unimplemninted interface that used to be in
047: * this file. They have been moved to old_Database.java. old_Database.java is
048: * checked into the codeline but is not built, it is there for reference </B>
049: *
050: * @author Jeff Lichtman
051: */
052:
053: public interface Database extends org.apache.derby.database.Database,
054: LocaleFinder {
055: // this interface gets used on a module, so we name it:
056: // Note that doers not point to this class name, but instead to
057: // the public API for this class. This ensures that the name
058: // written in service.properties is not a obfuscated one.
059:
060: /**
061: * Sets up a connection to the Database, owned by the given user.
062: *
063: * The JDBC version of getConnection takes a URL. The purpose
064: * of the URL is to tell the driver where the database system is.
065: * By the time we get here, we have found the database system
066: * (that's how we're making this method call), so the URL is not
067: * necessary to establish the connection here. The driver should
068: * remember the URL that was used to establish the connection,
069: * so it can implement the DatabaseMetaData.getURL() method.
070: *
071: * @param user The UserID of the user getting the connection
072: * @param drdaID The drda id of the connection (from network server)
073: * @param dbname The database name
074: *
075: * @return A new LanguageConnectionContext
076: *
077: * @exception StandardException thrown if unable to create the connection.
078: */
079: public LanguageConnectionContext setupConnection(ContextManager cm,
080: String user, String drdaID, String dbname)
081: throws StandardException;
082:
083: /**
084: Push a DbContext onto the provided context stack. This conext will
085: shut down the database in case of a DatabaseException being
086: cleaned up.
087: */
088: public void pushDbContext(ContextManager cm);
089:
090: /**
091: Is the database active (open).
092: */
093: public boolean isActive();
094:
095: /**
096: */
097: public int getEngineType();
098:
099: /**
100: * This method returns the authentication service handle for the
101: * database.
102: *
103: * NOTE: There is always a Authentication Service per database
104: * and at the system level.
105: *
106: * @return The authentication service handle for the database
107: */
108: public AuthenticationService getAuthenticationService();
109:
110: /**
111: * Get a Resource Adapter - only used by XA system. There is one and only
112: * one resource adapter per cloudscape database.
113: *
114: * @return the resource Adapter for the database, null if no resource
115: * adapter is available for this database. Returned as an Object
116: * so that non-XA aggressive JVMs such as Chai don't get ClassNotFound.
117: * caller must cast result to ResourceAdapter.
118: *
119: */
120: public Object getResourceAdapter();
121:
122: /** Set the Locale that is returned by this LocaleFinder */
123: public void setLocale(Locale locale);
124: }
|