/*****************************************************************************
FILE:               Oracle7Adaptor.h
LANGUAGE:           Objective-C
SYSTEM:             GNUstep
USER-INTERFACE:     None
DESCRIPTION

    This class is the GNUstep/db adaptor to the Oracle7 databases.
    Its implementation is based on the OCI v7, and should be compatible
    with, both Oracle6, Oracle7 and Oracle8 databases, but won't work
    with Oracle9 and following databases.
    
    The following keys are meaningful in the connectionDictionary in a model:

        userName          the name of the user (no default)
        password          the password used to connect to the server (no default)
        connectionString  connection information.


AUTHORS
    <PJB> Pascal J. Bourguignon <pjb@imaginet.fr>
MODIFICATIONS
    1999/07/24 Creation.
BUGS
    - The name of this adaptor should probably be more specific.

LEGAL
    Written by:  Pascal J. Bourguignon <pjb@imaginet.fr>
    Funds from:  Orange Concept (http://www.orange-concept.com/)
    Date:        August 1999 - February 2000

    This file is part of the Oracle7 Adaptor, GNUstep Database Library.
    The Oracle7 Adaptor allows access to Oracle[678] databases from GDL.

    Copyright (C) 2000 Free Software Foundation, Inc.

    This  library is  free software;  you can  redistribute  it and/or
    modify it under the terms of the GNU Lesser General Public License
    as published by the Free  Software Foundation; either version 2 of
    the License, or (at your option) any later version.

    This library  is distributed in the  hope that it  will be useful,
    but  WITHOUT ANY WARRANTY;  without even  the implied  warranty of
    MERCHANTABILITY or FITNESS FOR  A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.

    You should have  received a copy of the  GNU Lesser General Public
    License  along  with this  library;  if  not,  write to  the  Free
    Software  Foundation, Inc.,  59 Temple  Place, Suite  330, Boston,
    MA 02111-1307 USA
*****************************************************************************/
#ifndef __Oracle7Adaptor_h__
#define __Oracle7Adaptor_h__

#include <eoaccess/eoaccess.h>  // Let's leave  the  compiler  handle 
                                // intelligently pre-compiled headers!




// connectionDictionary keys:
extern NSString* Oracle7Adaptor_cdUsername;         // (@"username")
extern NSString* Oracle7Adaptor_cdPassword;         // (@"password")
extern NSString* Oracle7Adaptor_cdServerId;         // (@"serverId")
extern NSString* Oracle7Adaptor_cdHostMachine;      // (@"hostMachine")

// exceptions:
extern NSString* Oracle7Adaptor_eBadInitializer;
extern NSString* Oracle7Adaptor_eInternalError;


@interface Oracle7Adaptor:EOAdaptor
{
    BOOL validatingConnectionDictionary; // very private attribute.
}


// NSObject methods:

    -(id)init;
    -(void)dealloc;


// EOAdaptor methods:

    -(id)initWithName:(NSString*)aName;
    -(void)setConnectionDictionary:(NSDictionary*)aDictionary;
    -(BOOL)hasValidConnectionDictionary;
    -(EOAdaptorContext*)createAdaptorContext;
    -(Class)expressionClass;
    -(Class)adaptorContextClass;
    -(Class)adaptorChannelClass;
    -(BOOL)isValidQualifierType:(NSString*)aTypeName;
    -(id)formatAttribute:(EOAttribute*)attribute;
    -(id)formatValue:(id)value forAttribute:(EOAttribute*)attribute;


// Oracle7Adaptor methods:

    // None. What would be the purpose of an EO adaptor layer if each and
    // every one EOAdaptor subclass  would add it's own specific methods?
    // Let the client use only the EOAdaptor API to access "portably" our
    // database.



@end // Oracle7Adaptor;


#endif /* __Oracle7Adaptor_h__ */
/*** Oracle7Adaptor.h                 -- 2000-02-21 07:11:21 -- PJB ***/
