001: /**
002: * com.mckoi.database.DatabaseQueryContext 25 Mar 2002
003: *
004: * Mckoi SQL Database ( http://www.mckoi.com/database )
005: * Copyright (C) 2000, 2001, 2002 Diehl and Associates, Inc.
006: *
007: * This program is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License
009: * Version 2 as published by the Free Software Foundation.
010: *
011: * This program is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
014: * GNU General Public License Version 2 for more details.
015: *
016: * You should have received a copy of the GNU General Public License
017: * Version 2 along with this program; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
019: *
020: * Change Log:
021: *
022: *
023: */package com.mckoi.database;
024:
025: /**
026: * An implementation of a QueryContext based on a DatabaseConnection object.
027: *
028: * @author Tobias Downer
029: */
030:
031: public class DatabaseQueryContext extends AbstractQueryContext {
032:
033: /**
034: * The DatabaseConnection.
035: */
036: private DatabaseConnection database;
037:
038: /**
039: * Constructs the QueryContext.
040: */
041: public DatabaseQueryContext(DatabaseConnection database) {
042: this .database = database;
043: }
044:
045: /**
046: * Returns the Database object that this context is a child of.
047: */
048: public Database getDatabase() {
049: return database.getDatabase();
050: }
051:
052: /**
053: * Returns a TransactionSystem object that is used to determine information
054: * about the transactional system.
055: */
056: public TransactionSystem getSystem() {
057: return getDatabase().getSystem();
058: }
059:
060: /**
061: * Returns the system FunctionLookup object.
062: */
063: public FunctionLookup getFunctionLookup() {
064: return getSystem().getFunctionLookup();
065: }
066:
067: /**
068: * Returns the GrantManager object that is used to determine grant information
069: * for the database.
070: */
071: public GrantManager getGrantManager() {
072: return database.getGrantManager();
073: }
074:
075: /**
076: * Returns a DataTable from the database with the given table name.
077: */
078: public DataTable getTable(TableName name) {
079: database.addSelectedFromTable(name);
080: return database.getTable(name);
081: }
082:
083: /**
084: * Returns a DataTableDef for the given table name.
085: */
086: public DataTableDef getDataTableDef(TableName name) {
087: return database.getDataTableDef(name);
088: }
089:
090: /**
091: * Creates a QueryPlanNode for the view with the given name.
092: */
093: public QueryPlanNode createViewQueryPlanNode(TableName name) {
094: return database.createViewQueryPlanNode(name);
095: }
096:
097: /**
098: * Increments the sequence generator and returns the next unique key.
099: */
100: public long nextSequenceValue(String name) {
101: return database.nextSequenceValue(name);
102: }
103:
104: /**
105: * Returns the current sequence value returned for the given sequence
106: * generator within the connection defined by this context. If a value was
107: * not returned for this connection then a statement exception is generated.
108: */
109: public long currentSequenceValue(String name) {
110: return database.lastSequenceValue(name);
111: }
112:
113: /**
114: * Sets the current sequence value for the given sequence generator.
115: */
116: public void setSequenceValue(String name, long value) {
117: database.setSequenceValue(name, value);
118: }
119:
120: /**
121: * Returns the user name of the connection.
122: */
123: public String getUserName() {
124: return database.getUser().getUserName();
125: }
126:
127: }
|