4
Copyright (C) 1999 MDlink online service center GmbH and Helge Hess
6
Author: Helge Hess (helge@mdlink.de)
8
This file is part of the MySQL4 Adaptor Library
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.
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.
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.
27
#import "EOAttribute+MySQL4.h"
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";
32
@implementation EOAttribute(MySQL4AttributeAdditions)
34
- (void)loadValueClassAndTypeUsingMySQL4Type:(int)_type
36
modification:(int)_modification
37
binary:(BOOL)_isBinary
39
/* This method makes no sense with MySQL4? */
42
[self setValueClassName:@"NSData"];
47
[self setExternalType:@"bool"];
48
[self setValueClassName:@"NSNumber"];
49
[self setValueType:@"i"];
52
[self setExternalType:@"name"];
53
[self setValueClassName:@"NSString"];
56
[self setExternalType:@"textoid"];
57
[self setValueClassName:@"NSString"];
60
[self setExternalType:@"int2"];
61
[self setValueClassName:@"NSNumber"];
62
[self setValueType:@"d"];
65
[self setExternalType:@"int4"];
66
[self setValueClassName:@"NSNumber"];
67
[self setValueType:@"d"];
70
[self setExternalType:@"int8"];
71
[self setValueClassName:@"NSNumber"];
72
[self setValueType:@"d"];
76
[self setExternalType:@"char"];
77
[self setValueClassName:@"NSString"];
80
[self setExternalType:@"varchar"];
81
[self setValueClassName:@"NSString"];
84
[self setExternalType:@"numeric"];
85
[self setValueClassName:@"NSNumber"];
86
[self setValueType:@"d"];
89
[self setExternalType:@"float4"];
90
[self setValueClassName:@"NSNumber"];
91
[self setValueType:@"f"];
94
[self setExternalType:@"float8"];
95
[self setValueClassName:@"NSNumber"];
96
[self setValueType:@"f"];
100
[self setExternalType:@"datetime"];
101
[self setValueClassName:@"NSCalendarDate"];
102
[self setCalendarFormat:SQLITE3_DATETIME_FORMAT];
105
[self setExternalType:@"time"];
106
[self setValueClassName:@"NSCalendarDate"];
107
[self setCalendarFormat:SQLITE3_DATETIME_FORMAT];
110
[self setExternalType:@"timestamp"];
111
[self setValueClassName:@"NSCalendarDate"];
112
[self setCalendarFormat:SQLITE3_DATETIME_FORMAT];
115
[self setExternalType:@"timestamptz"];
116
[self setValueClassName:@"NSCalendarDate"];
117
[self setCalendarFormat:SQLITE3_DATETIME_FORMAT];
120
[self setExternalType:@"bit"];
123
NSLog(@"What is SQLITE3 Oid %i ???", _type);
129
- (void)loadValueClassForExternalMySQL4Type:(NSString *)_type {
130
if ([_type isEqualToString:@"bool"]) {
131
[self setValueClassName:@"NSNumber"];
132
[self setValueType:@"i"];
134
else if ([_type isEqualToString:@"int2"]) {
135
[self setValueClassName:@"NSNumber"];
136
[self setValueType:@"i"];
138
else if ([_type isEqualToString:@"int4"]) {
139
[self setValueClassName:@"NSNumber"];
140
[self setValueType:@"i"];
142
else if ([_type isEqualToString:@"float4"]) {
143
[self setValueClassName:@"NSNumber"];
144
[self setValueType:@"f"];
146
else if ([_type isEqualToString:@"float8"]) {
147
[self setValueClassName:@"NSNumber"];
148
[self setValueType:@"d"];
150
else if ([_type isEqualToString:@"decimal"]) {
151
[self setValueClassName:@"NSNumber"];
152
[self setValueType:@"d"];
154
else if ([_type isEqualToString:@"numeric"]) {
155
[self setValueClassName:@"NSNumber"];
156
[self setValueType:@"d"];
158
else if ([_type isEqualToString:@"name"]) {
159
[self setExternalType:@"name"];
160
[self setValueClassName:@"NSString"];
162
else if ([_type isEqualToString:@"varchar"]) {
163
[self setExternalType:@"varchar"];
164
[self setValueClassName:@"NSString"];
166
else if ([_type isEqualToString:@"char"]) {
167
[self setExternalType:@"char"];
168
[self setValueClassName:@"NSString"];
170
else if ([_type isEqualToString:@"timestamp"]) {
171
[self setValueClassName:@"NSCalendarDate"];
172
[self setCalendarFormat:SQLITE3_TIMESTAMP_FORMAT];
174
else if ([_type isEqualToString:@"timestamptz"]) {
175
[self setValueClassName:@"NSCalendarDate"];
176
[self setCalendarFormat:SQLITE3_TIMESTAMP_FORMAT];
178
else if ([_type isEqualToString:@"datetime"]) {
179
[self setValueClassName:@"NSCalendarDate"];
180
[self setCalendarFormat:SQLITE3_DATETIME_FORMAT];
182
else if ([_type isEqualToString:@"date"]) {
183
[self setValueClassName:@"NSString"];
185
else if ([_type isEqualToString:@"time"]) {
186
[self setValueClassName:@"NSString"];
188
else if ([_type isEqualToString:@"text"]) {
189
[self setValueClassName:@"NSString"];
192
NSLog(@"invalid argument %@", _type);
194
[NSException raise:@"InvalidArgumentException"
195
format:@"invalid MySQL4 type %@ passed to %s",
196
_type, __PRETTY_FUNCTION__];
200
@end /* EOAttribute(MySQL4) */
202
void __link_EOAttributeMySQL4() {
203
// used to force linking of object file
204
__link_EOAttributeMySQL4();