~ubuntu-branches/ubuntu/edgy/sope/edgy

« back to all changes in this revision

Viewing changes to sope-gdl1/MySQL/EOAttribute+MySQL4.m

  • Committer: Bazaar Package Importer
  • Author(s): Sebastian Ley
  • Date: 2005-08-19 16:53:31 UTC
  • Revision ID: james.westby@ubuntu.com-20050819165331-hs683wz1osm708pw
Tags: upstream-4.4rc.2
ImportĀ upstreamĀ versionĀ 4.4rc.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* 
 
2
   EOAttribute+MySQL4.m
 
3
 
 
4
   Copyright (C) 1999 MDlink online service center GmbH and Helge Hess
 
5
 
 
6
   Author: Helge Hess (helge@mdlink.de)
 
7
 
 
8
   This file is part of the MySQL4 Adaptor Library
 
9
 
 
10
   This library is free software; you can redistribute it and/or
 
11
   modify it under the terms of the GNU Library General Public
 
12
   License as published by the Free Software Foundation; either
 
13
   version 2 of the License, or (at your option) any later version.
 
14
 
 
15
   This library is distributed in the hope that it will be useful,
 
16
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
17
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
18
   Library General Public License for more details.
 
19
 
 
20
   You should have received a copy of the GNU Library General Public
 
21
   License along with this library; see the file COPYING.LIB.
 
22
   If not, write to the Free Software Foundation,
 
23
   59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
24
*/
 
25
 
 
26
#include "common.h"
 
27
#import "EOAttribute+MySQL4.h"
 
28
 
 
29
static NSString *SQLITE3_DATETIME_FORMAT  = @"%b %d %Y %I:%M:%S:000%p";
 
30
static NSString *SQLITE3_TIMESTAMP_FORMAT = @"%Y-%m-%d %H:%M:%S%z";
 
31
 
 
32
@implementation EOAttribute(MySQL4AttributeAdditions)
 
33
 
 
34
- (void)loadValueClassAndTypeUsingMySQL4Type:(int)_type
 
35
  size:(int)_size
 
36
  modification:(int)_modification
 
37
  binary:(BOOL)_isBinary
 
38
{
 
39
  /* This method makes no sense with MySQL4? */
 
40
  
 
41
  if (_isBinary)
 
42
    [self setValueClassName:@"NSData"];
 
43
 
 
44
#if 0
 
45
  switch (_type) {
 
46
  case BOOLOID:
 
47
      [self setExternalType:@"bool"];
 
48
      [self setValueClassName:@"NSNumber"];
 
49
      [self setValueType:@"i"];
 
50
      return;
 
51
  case NAMEOID:
 
52
      [self setExternalType:@"name"];
 
53
      [self setValueClassName:@"NSString"];
 
54
      return;
 
55
  case TEXTOID:
 
56
      [self setExternalType:@"textoid"];
 
57
      [self setValueClassName:@"NSString"];
 
58
      return;
 
59
  case INT2OID:
 
60
      [self setExternalType:@"int2"];
 
61
      [self setValueClassName:@"NSNumber"];
 
62
      [self setValueType:@"d"];
 
63
      return;
 
64
  case INT4OID:
 
65
      [self setExternalType:@"int4"];
 
66
      [self setValueClassName:@"NSNumber"];
 
67
      [self setValueType:@"d"];
 
68
      return;
 
69
  case INT8OID:
 
70
      [self setExternalType:@"int8"];
 
71
      [self setValueClassName:@"NSNumber"];
 
72
      [self setValueType:@"d"];
 
73
      return;
 
74
      
 
75
    case CHAROID:
 
76
      [self setExternalType:@"char"];
 
77
      [self setValueClassName:@"NSString"];
 
78
      break;
 
79
    case VARCHAROID:
 
80
      [self setExternalType:@"varchar"];
 
81
      [self setValueClassName:@"NSString"];
 
82
      break;
 
83
    case NUMERICOID:
 
84
      [self setExternalType:@"numeric"];
 
85
      [self setValueClassName:@"NSNumber"];
 
86
      [self setValueType:@"d"];
 
87
      break;
 
88
    case FLOAT4OID:
 
89
      [self setExternalType:@"float4"];
 
90
      [self setValueClassName:@"NSNumber"];
 
91
      [self setValueType:@"f"];
 
92
      break;
 
93
    case FLOAT8OID:
 
94
      [self setExternalType:@"float8"];
 
95
      [self setValueClassName:@"NSNumber"];
 
96
      [self setValueType:@"f"];
 
97
      break;
 
98
 
 
99
    case DATEOID:
 
100
      [self setExternalType:@"datetime"];
 
101
      [self setValueClassName:@"NSCalendarDate"];
 
102
      [self setCalendarFormat:SQLITE3_DATETIME_FORMAT];
 
103
      break;
 
104
    case TIMEOID:
 
105
      [self setExternalType:@"time"];
 
106
      [self setValueClassName:@"NSCalendarDate"];
 
107
      [self setCalendarFormat:SQLITE3_DATETIME_FORMAT];
 
108
      break;
 
109
    case TIMESTAMPOID:
 
110
      [self setExternalType:@"timestamp"];
 
111
      [self setValueClassName:@"NSCalendarDate"];
 
112
      [self setCalendarFormat:SQLITE3_DATETIME_FORMAT];
 
113
      break;
 
114
    case TIMESTAMPTZOID:
 
115
      [self setExternalType:@"timestamptz"];
 
116
      [self setValueClassName:@"NSCalendarDate"];
 
117
      [self setCalendarFormat:SQLITE3_DATETIME_FORMAT];
 
118
      break;
 
119
    case BITOID:
 
120
      [self setExternalType:@"bit"];
 
121
      break;
 
122
    default:
 
123
    NSLog(@"What is SQLITE3 Oid %i ???", _type);
 
124
    break;
 
125
  }
 
126
#endif
 
127
}
 
128
 
 
129
- (void)loadValueClassForExternalMySQL4Type:(NSString *)_type {
 
130
  if ([_type isEqualToString:@"bool"]) {
 
131
    [self setValueClassName:@"NSNumber"];
 
132
    [self setValueType:@"i"];
 
133
  }
 
134
  else if ([_type isEqualToString:@"int2"]) {
 
135
    [self setValueClassName:@"NSNumber"];
 
136
    [self setValueType:@"i"];
 
137
  }
 
138
  else if ([_type isEqualToString:@"int4"]) {
 
139
    [self setValueClassName:@"NSNumber"];
 
140
    [self setValueType:@"i"];
 
141
  }
 
142
  else if ([_type isEqualToString:@"float4"]) {
 
143
    [self setValueClassName:@"NSNumber"];
 
144
    [self setValueType:@"f"];
 
145
  }
 
146
  else if ([_type isEqualToString:@"float8"]) {
 
147
    [self setValueClassName:@"NSNumber"];
 
148
    [self setValueType:@"d"];
 
149
  }
 
150
  else if ([_type isEqualToString:@"decimal"]) {
 
151
    [self setValueClassName:@"NSNumber"];
 
152
    [self setValueType:@"d"];
 
153
  }
 
154
  else if ([_type isEqualToString:@"numeric"]) {
 
155
    [self setValueClassName:@"NSNumber"];
 
156
    [self setValueType:@"d"];
 
157
  }
 
158
  else if ([_type isEqualToString:@"name"]) {
 
159
    [self setExternalType:@"name"];
 
160
    [self setValueClassName:@"NSString"];
 
161
  }
 
162
  else if ([_type isEqualToString:@"varchar"]) {
 
163
    [self setExternalType:@"varchar"];
 
164
    [self setValueClassName:@"NSString"];
 
165
  }
 
166
  else if ([_type isEqualToString:@"char"]) {
 
167
    [self setExternalType:@"char"];
 
168
    [self setValueClassName:@"NSString"];
 
169
  }
 
170
  else if ([_type isEqualToString:@"timestamp"]) {
 
171
    [self setValueClassName:@"NSCalendarDate"];
 
172
    [self setCalendarFormat:SQLITE3_TIMESTAMP_FORMAT];
 
173
  }
 
174
  else if ([_type isEqualToString:@"timestamptz"]) {
 
175
    [self setValueClassName:@"NSCalendarDate"];
 
176
    [self setCalendarFormat:SQLITE3_TIMESTAMP_FORMAT];
 
177
  }
 
178
  else if ([_type isEqualToString:@"datetime"]) {
 
179
    [self setValueClassName:@"NSCalendarDate"];
 
180
    [self setCalendarFormat:SQLITE3_DATETIME_FORMAT];
 
181
  }
 
182
  else if ([_type isEqualToString:@"date"]) {
 
183
    [self setValueClassName:@"NSString"];
 
184
  }
 
185
  else if ([_type isEqualToString:@"time"]) {
 
186
    [self setValueClassName:@"NSString"];
 
187
  }
 
188
  else if ([_type isEqualToString:@"text"]) {
 
189
    [self setValueClassName:@"NSString"];
 
190
  }
 
191
  else {
 
192
    NSLog(@"invalid argument %@", _type);
 
193
    
 
194
    [NSException raise:@"InvalidArgumentException"
 
195
                 format:@"invalid MySQL4 type %@ passed to %s",
 
196
                   _type, __PRETTY_FUNCTION__];
 
197
  }
 
198
}
 
199
 
 
200
@end /* EOAttribute(MySQL4) */
 
201
 
 
202
void __link_EOAttributeMySQL4() {
 
203
  // used to force linking of object file
 
204
  __link_EOAttributeMySQL4();
 
205
}