]> err.no Git - sope/blob - sope-gdl1/GDLAccess/EOOrQualifier+SQL.m
renamed PostgreSQL72 to PostgreSQL, install in Library/GDLAdaptors-1.1
[sope] / sope-gdl1 / GDLAccess / EOOrQualifier+SQL.m
1 /* 
2    EOAdaptorChannel.m
3
4    Copyright (C) 1996 Free Software Foundation, Inc.
5
6    Author: Ovidiu Predescu <ovidiu@bx.logicnet.ro>
7    Date: October 1996
8
9    This file is part of the GNUstep Database Library.
10
11    This library is free software; you can redistribute it and/or
12    modify it under the terms of the GNU Library General Public
13    License as published by the Free Software Foundation; either
14    version 2 of the License, or (at your option) any later version.
15
16    This library is distributed in the hope that it will be useful,
17    but WITHOUT ANY WARRANTY; without even the implied warranty of
18    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19    Library General Public License for more details.
20
21    You should have received a copy of the GNU Library General Public
22    License along with this library; see the file COPYING.LIB.
23    If not, write to the Free Software Foundation,
24    59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
25 */
26 // $Id: EOOrQualifier+SQL.m 1 2004-08-20 10:38:46Z znek $
27
28 #import "EOSQLQualifier.h"
29 #include "common.h"
30
31 @implementation EOOrQualifier(SQLQualifier)
32
33 /* SQL qualifier generation */
34
35 - (EOSQLQualifier *)sqlQualifierForEntity:(EOEntity *)_entity {
36   unsigned cc = [self->qualifiers count];
37
38   if (cc == 0)
39     return nil;
40   else if (cc == 1)
41     return [[self->qualifiers objectAtIndex:0] sqlQualifierForEntity:_entity];
42   else if (cc == 2) {
43     id left;
44     id right;
45
46     left  = [[self->qualifiers objectAtIndex:0] sqlQualifierForEntity:_entity];
47     right = [[self->qualifiers objectAtIndex:1] sqlQualifierForEntity:_entity];
48     [left disjoinWithQualifier:right];
49     return left;
50   }
51   else {
52     EOSQLQualifier *masterQ;
53     unsigned i;
54
55     for (i = 0, masterQ = nil; i < cc; i++) {
56       EOSQLQualifier *q;
57
58       q = [[self->qualifiers objectAtIndex:i]
59                              sqlQualifierForEntity:_entity];
60       if (masterQ == nil)
61         masterQ = q;
62       else
63         [masterQ disjoinWithQualifier:q];
64     }
65     return masterQ;
66   }
67 }
68
69 @end /* EOOrQualifier */