]> err.no Git - sope/commitdiff
added a select..X method which doesn't raise NSExceptions,
authorhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Sun, 5 Sep 2004 22:54:57 +0000 (22:54 +0000)
committerhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Sun, 5 Sep 2004 22:54:57 +0000 (22:54 +0000)
but returns them instead

git-svn-id: http://svn.opengroupware.org/SOPE/trunk@106 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

sope-gdl1/GDLAccess/ChangeLog
sope-gdl1/GDLAccess/EOAdaptorChannel.h
sope-gdl1/GDLAccess/EOAdaptorChannel.m
sope-gdl1/GDLAccess/EORecordDictionary.m
sope-gdl1/GDLAccess/README
sope-gdl1/GDLAccess/Version
sope-gdl1/GDLAccess/common.h

index bae3a54f81f48e43bbacf25893e26b7681a726f8..f382b4ffee8c9a7642ec23f2ef2232a873a2d172 100644 (file)
@@ -1,3 +1,9 @@
+2004-09-06  Helge Hess  <helge.hess@opengroupware.org>
+
+       * EOAdaptorChannel.m: added
+         -selectAttributesX:describedByQualifier:fetchOrder:lock: for
+         selects which return, not raise, exceptions (v1.1.38)
+
 2004-08-31  Helge Hess  <helge.hess@skyrix.com>
 
        * GNUmakefile.preamble: added library search pathes for FHS install
index 751b1b84fbab9e52b1c930369ec2a34841f91c18..efce51feaf4cb2d5f10547b4ce75a313e48acbc4 100644 (file)
 - (BOOL)deleteRowsDescribedByQualifier:(EOSQLQualifier *)aQualifier;
 
 /* Fetching rows */
-- (BOOL)selectAttributes:(NSArray*)attributes
-  describedByQualifier:(EOSQLQualifier*)aQualifier
-  fetchOrder:(NSArray*)aFetchOrder
+- (BOOL)selectAttributes:(NSArray *)attributes
+  describedByQualifier:(EOSQLQualifier *)aQualifier
+  fetchOrder:(NSArray *)aFetchOrder
+  lock:(BOOL)aLockFlag;
+- (NSException *)selectAttributesX:(NSArray *)attributes
+  describedByQualifier:(EOSQLQualifier *)aQualifier
+  fetchOrder:(NSArray *)aFetchOrder
   lock:(BOOL)aLockFlag;
 - (NSArray*)describeResults;                                    // override
-- (NSMutableDictionary*)fetchAttributes:(NSArray*)attributes 
-  withZone:(NSZone*)zone;
+- (NSMutableDictionary*)fetchAttributes:(NSArray *)attributes 
+  withZone:(NSZone *)zone;
 - (BOOL)isFetchInProgress;
 - (void)cancelFetch;                                            // override
-- (NSMutableDictionary*)dictionaryWithObjects:(id*)objects 
-  forAttributes:(NSArray*)attributes zone:(NSZone*)zone;
-- (NSMutableDictionary*)primaryFetchAttributes:(NSArray*)attributes 
-  withZone:(NSZone*)zone;                                       // override
+- (NSMutableDictionary *)dictionaryWithObjects:(id *)objects 
+  forAttributes:(NSArray *)attributes zone:(NSZone *)zone;
+- (NSMutableDictionary *)primaryFetchAttributes:(NSArray *)attributes 
+  withZone:(NSZone *)zone;                                       // override
 
 /* Sending SQL to the server */
 - (BOOL)evaluateExpression:(NSString *)_anExpression;           // override
index e8af497a6b37bb25fe05acd2e2bbd1fd6360d495..df54956d8daef0aa61c06810f4c07b65268d6ba8 100644 (file)
     
   if (!isOpen)
     return [[ChannelIsNotOpenedException new] autorelease];
-
-  if((row == nil) || (entity == nil)) {
+  
+  if ((row == nil) || (entity == nil)) {
     return [NSException exceptionWithName:NSInvalidArgumentException
                        reason:@"row and entity arguments for "
                          @"insertRow:forEntity: must not be the nil object"
                        userInfo:nil];
   }
     
-  if([self isFetchInProgress])
+  if ([self isFetchInProgress])
     return [AdaptorIsFetchingException exceptionWithAdaptor:self];
   
   if ([self->adaptorContext transactionNestingLevel] == 0)
 
 /* compatibility methods (DEPRECATED, use the ...X methods  */
 
+- (BOOL)selectAttributes:(NSArray *)attributes
+  describedByQualifier:(EOSQLQualifier *)qualifier
+  fetchOrder:(NSArray *)fetchOrder
+  lock:(BOOL)lockFlag
+{
+  NSException *ex;
+  
+  ex = [self selectAttributesX:attributes describedByQualifier:qualifier
+            fetchOrder:fetchOrder lock:lockFlag];
+  if (ex == nil)
+    return YES;
+  if ([self _isNoRaiseOnModificationException:ex])
+    return NO;
+  [ex raise];
+  return NO;
+}
+
 - (BOOL)insertRow:(NSDictionary *)_row forEntity:(EOEntity *)_entity {
   NSException *ex;
   
 
 /* fetch operations */
 
-- (BOOL)selectAttributes:(NSArray *)attributes
+- (NSException *)selectAttributesX:(NSArray *)attributes
   describedByQualifier:(EOSQLQualifier *)qualifier
   fetchOrder:(NSArray *)fetchOrder
   lock:(BOOL)lockFlag
 {
-    EOSQLExpression *sqlexpr = nil;
-    NSMutableArray  *mattrs  = (NSMutableArray *)attributes;
-    NSMutableArray  *mfetch  = (NSMutableArray *)fetchOrder;
-
-    if (!isOpen)
-      [[ChannelIsNotOpenedException new] raise];
-
-    if (attributes == nil) {
-      [NSException raise:NSInvalidArgumentException
-                  format:@"attributes argument for selectAttributes:"
-                  @"describedByQualifier:fetchOrder:lock: "
-                  @"must not be the nil object"];
-    }
+  NSException     *ex;
+  EOSQLExpression *sqlexpr = nil;
+  NSMutableArray  *mattrs  = (NSMutableArray *)attributes;
+  NSMutableArray  *mfetch  = (NSMutableArray *)fetchOrder;
 
-    if ([self isFetchInProgress])
-      [[AdaptorIsFetchingException exceptionWithAdaptor:self] raise];
-    
-    if ([self->adaptorContext transactionNestingLevel] == 0)
-      [[NoTransactionInProgressException exceptionWithAdaptor:self] raise];
+  if (!isOpen)
+    return [[ChannelIsNotOpenedException new] autorelease];
 
-    if(delegateRespondsTo.willSelectAttributes) {
-        EODelegateResponse response;
+  if (attributes == nil) {
+    return [NSException exceptionWithName:NSInvalidArgumentException
+                       reason:
+                         @"attributes argument for selectAttributes:"
+                         @"describedByQualifier:fetchOrder:lock: "
+                         @"must not be the nil object"
+                       userInfo:nil];
+  }
+  
+  if ([self isFetchInProgress])
+    return [AdaptorIsFetchingException exceptionWithAdaptor:self];
+  
+  if ([self->adaptorContext transactionNestingLevel] == 0)
+    return [NoTransactionInProgressException exceptionWithAdaptor:self];
+  
+  if (delegateRespondsTo.willSelectAttributes) {
+    EODelegateResponse response;
         
-        mattrs = [[attributes mutableCopy] autorelease];
-        mfetch = [[fetchOrder mutableCopy] autorelease];
-
-        response = [delegate adaptorChannel:self
-                             willSelectAttributes:mattrs
-                             describedByQualifier:qualifier
-                             fetchOrder:mfetch
-                             lock:lockFlag];
-        if (response == EODelegateRejects)
-            return NO;
-       if (response == EODelegateOverrides)
-            return YES;
+    mattrs = [[attributes mutableCopy] autorelease];
+    mfetch = [[fetchOrder mutableCopy] autorelease];
+
+    response = [delegate adaptorChannel:self
+                        willSelectAttributes:mattrs
+                        describedByQualifier:qualifier
+                        fetchOrder:mfetch
+                        lock:lockFlag];
+    if (response == EODelegateRejects) {
+      return [NSException exceptionWithName:@"EODelegateRejects"
+                         reason:@"delegate rejected select"
+                         userInfo:nil];
     }
+    if (response == EODelegateOverrides)
+      return nil;
+  }
 
 #if 0
 #warning DEBUG LOG, REMOVE!
-    [self logWithFormat:@"fetch qualifier: %@", qualifier];
+  [self logWithFormat:@"fetch qualifier: %@", qualifier];
 #endif
 
-    sqlexpr = [[[self->adaptorContext adaptor]
+  sqlexpr = [[[self->adaptorContext adaptor]
                                 expressionClass]
                                 selectExpressionForAttributes:attributes
                                 lock:lockFlag
                                 fetchOrder:fetchOrder
                                 channel:self];
     
-    if (![self evaluateExpression:[sqlexpr expressionValueForContext:nil]])
-        return NO;
-
-    if (delegateRespondsTo.didSelectAttributes) {
-        [delegate adaptorChannel:self
-                  didSelectAttributes:mattrs
-                  describedByQualifier:qualifier
-                  fetchOrder:mfetch
-                  lock:lockFlag];
-    }
-
-    return YES;
+  ex = [self evaluateExpressionX:[sqlexpr expressionValueForContext:nil]];
+  if (ex != nil)
+    return ex;
+  
+  if (delegateRespondsTo.didSelectAttributes) {
+    [delegate adaptorChannel:self
+             didSelectAttributes:mattrs
+             describedByQualifier:qualifier
+             fetchOrder:mfetch
+             lock:lockFlag];
+  }
+  return nil;
 }
 
 - (NSArray *)describeResults {
index b839b11856305721ea16854a3d11a148bf5129b1..37b289e7f5d2be2f76bd35976c6a36537d041ede 100644 (file)
@@ -23,7 +23,6 @@
    If not, write to the Free Software Foundation,
    59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */
-// $Id: EORecordDictionary.m 1 2004-08-20 10:38:46Z znek $
 
 #include <stdarg.h>
 #include <math.h>
@@ -35,7 +34,6 @@
 #import <Foundation/NSException.h>
 
 #if LIB_FOUNDATION_LIBRARY
-#  include <Foundation/exceptions/GeneralExceptions.h>
 #  include <extensions/objc-runtime.h>
 #else
 #  include <NGExtensions/NGObjectMacros.h>
index 9e54000b7fe9707056db045be0c3b5a0ab22b6c3..aee7ac7bf6250eefc4583358ec77550358a2ae8e 100644 (file)
@@ -1,21 +1,21 @@
-# $Id: README 1 2004-08-20 10:38:46Z znek $
-
-NOTE: this file is heavily outdated
+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.
+  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.
+    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
index bf873749e63714019fbda48fd1eadd96f7e5fcd1..7087ff32410f53681d82e1380c7ec57332dea764 100644 (file)
@@ -1,3 +1,3 @@
 # $Id: Version 1 2004-08-20 10:38:46Z znek $
 
-SUBMINOR_VERSION:=37
+SUBMINOR_VERSION:=38
index e9274af25972f36702e89661aaff13d1ffa1d12a..bc474eaaef6501ce33e1b080bfbe86a619e4913d 100644 (file)
@@ -23,7 +23,6 @@
    If not, write to the Free Software Foundation,
    59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */
-// $Id: common.h 1 2004-08-20 10:38:46Z znek $
 
 #ifndef __common_h__
 #define __common_h__
@@ -50,7 +49,6 @@
 #endif
 
 #if LIB_FOUNDATION_LIBRARY
-#  import <Foundation/exceptions/GeneralExceptions.h>
 #  import <extensions/objc-runtime.h>
 #else
 #  include <NGExtensions/NGObjectMacros.h>