NOTE: this file is outdated!

GNU Database Library Access Layer - MDlink patch Version

  Contained code is derived from GDL - GNU Database Library and is therefore
  LGPL license. Copyright for GDL has the Free Software Foundation.

  Changes

    There are no EOJoin's anymore (only for compability). EORelationships
    cannot be compound and store source and destination themselves.
    
    No compound primary keys are allowed.
    
    Uniquing is always enabled.

    Added "abcX" methods which do not raise exceptions but return them.

  Static Linking

    uncomment '#imports' in EOModel.m

  Intro

    The GNUstep Database Library is a hierarchy of Objective-C classes
    that provide a three-tiered architecture for developing database
    applications.
    
    The three-tier architecture is a flexible paradigm for building
    robust and scalable client/server applications; the three tiers refer
    to the database, the Application Objects, and the user interface.  The
    separation of the database from the user interface through intermediary
    Application Objects allows the data to be distributed appropriately
    across database servers and still have the user interface display data
    cohesively for the end-user.  Business logic, as implemented in the
    Application Objects, provides the mechanism for consistency and
    reusability across all your business applications.
    
    Entity-relationship modelling is used for describing the Application
    Objects and how they are mapped to database fields.  The GNUstep
    Database Library represents these models as plain ASCII text files; this
    allows external programs to be used for constructing and maintaining the
    models separate from the applications which use them.

  Differences to GNUstep gdl

    Datasource objects are missing.

  ToDo

    EOQualifier:
      `isValidQualifierType' from EOAdaptor is not used now. This method
      is supposed to verify, when a qualifier is constructed, if an
      attribute can appear inside an expression.

      Make the relationshipPaths of type GCMutableSet.

    EOSQLExpresion
      There is no support now for specifying properties for the tables
      that appear in the FROM clause; I am thinking specifically at the
      OUTER specifier required by some servers when you use outer joins.

      Optimize the generated WHERE clause when the same relationship
      appears more than one time in the entity.

      The external query from EOEntity is not used when a fetch
      operation is unrestricted, i.e. it fetches all the records from
      the table

  Class Hierachy

    NSObject
      DefaultScannerHandler
        EOInsertUpdateScannerHandler
        EOQualifierScannerHandler
        EOSelectScannerHandler
      EOAdaptor
      EOAdaptorChannel
      EOAdaptorContext
      EOAttributeOrdering
      EODatabase
      EODatabaseChannel
      EODatabaseContext
      EOFaultResolver
        EOArrayFault
        EOObjectFault
      EOGenericRecord
      EOKeySortOrdering
      EONull                    < NSCopying >
      EOObjectUniquer
      EOQualifierJoinHolder
      EOQuotedExpression        < NSCopying >
      EOSQLExpression           < EOExpressionContext >
        EODeleteSQLExpression
        EOInsertSQLExpression
        EOSelectSQLExpression
        EOUpdateSQLExpression
      NSDictionary
        EOPrimaryKeyDictionary
          EOSinglePrimaryKeyDictionary
          EOMultiplePrimaryKeyDictionary
      NSEnumerator
        EOSinglePrimaryKeyDictionaryEnumerator
      EOAttribute
      EOEntity
      EOModel
      EOQualifier
        EOSQLQualifier          < NSCopying >
      EORelationship
      EOExpressionArray

    GCObject
      GCMutableArray

    EOFault

    NSException
      EOFException
        DestinationEntityDoesntMatchDefinitionException
        EOAdaptorException
        InvalidAttributeException
        InvalidQualifierException
        ObjectNotAvailableException
        PropertyDefinitionException
        PropertyDefinitionException
          InvalidNameException
          InvalidPropertyException
          InvalidValueTypeException
          RelationshipMustBeToOneException
        EOAdaptorException
          CannotFindAdaptorBundleException
          DataTypeMappingNotSupportedException
          InvalidAdaptorBundleException
          InvalidAdaptorStateException
          InvalidAdaptorStateException
            AdaptorIsFetchingException
            AdaptorIsNotFetchingException
            ChannelIsNotOpenedException 
            NoTransactionInProgressException
          TooManyOpenedChannelsException

  Categories

    EOAdaptor+Private
    EOAdaptorContext+Private
    EOAttribute+EOAttributePrivate
    EOAttribute+ValuesConversion
    EODatabase+Private
    EODatabaseChannel+Private
    EODatabaseContext+Private
    EOEntity+EOEntityPrivate
    EOEntity+ValuesConversion
    EOJoin+EOJoinPrivate
    EOModel+EOModelPrivate
    EORelationship+EORelationshipPrivate
    NSArray+EOKeyBasedSorting
    NSData+EOCustomValues
    NSDictionary+EOKeyValueCoding
    NSMutableArray+EOKeyBasedSorting
    NSMutableDictionary+EOKeyValueCoding
    NSNumber+EOCustomValues
    NSObject+EOExpression
    NSObject+EOAdaptorChannelDelegation
    NSObject+EOAdaptorContextDelegate
    NSObject+EOAdaptorDelegate
    NSObject+EOCustomValues
    NSObject+EODatabaseChannelDelegateProtocol
    NSObject+EODatabaseChannelNotification
    NSObject+EODatabaseCustomValues
    NSObject+EOGenericRecord
    NSObject+EOKeyValueCoding
    NSObject+EOKeyValueCodingEONull
    NSObject+EOUnableToFaultToOne
    NSString+EOAttributeTypeCheck
    NSString+EOCustomValues

  Protocols

    EOExpressionContext

  Informal Protocols    

    EOClassMapping
    EOCustomValues
    EODatabaseChannelNotification
    EODatabaseCustomValues
    EOExpression
    EOKeyValueCoding
    EOKeyValueCodingEONull
    EOUnableToFaultToOne

--
Helge Hess (helge@mdlink.de)
MDlink online service center, 1998-11-01
