~ubuntu-branches/ubuntu/saucy/sope/saucy

« back to all changes in this revision

Viewing changes to sope-gdl1/Oracle8/otest.m

  • Committer: Package Import Robot
  • Author(s): Jeroen Dekkers
  • Date: 2012-05-09 15:39:17 UTC
  • Revision ID: package-import@ubuntu.com-20120509153917-nr4jlm8mktma1yv3
Tags: upstream-1.3.14
ImportĀ upstreamĀ versionĀ 1.3.14

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
**  otest.m
 
3
**
 
4
**  Copyright (c) 2007  Inverse groupe conseil inc. and Ludovic Marcotte
 
5
**
 
6
**  Author: Ludovic Marcotte <ludovic@inverse.ca>
 
7
**
 
8
**  This program is free software; you can redistribute it and/or modify
 
9
**  it under the terms of the GNU General Public License as published by
 
10
**  the Free Software Foundation; either version 2 of the License, or
 
11
**  (at your option) any later version.
 
12
**
 
13
**  This program is distributed in the hope that it will be useful,
 
14
**  but WITHOUT ANY WARRANTY; without even the implied warranty of
 
15
**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
16
**  GNU General Public License for more details.
 
17
**
 
18
**  You should have received a copy of the GNU General Public License
 
19
**  along with this program; if not, write to the Free Software
 
20
**  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
21
*/
 
22
 
 
23
#import <Foundation/Foundation.h>
 
24
#import <GDLAccess/GDLAccess.h>
 
25
 
 
26
//
 
27
//
 
28
//
 
29
void evaluate(EOAdaptorChannel *c, NSString *s)
 
30
{
 
31
  NSLog(@"Evaluating:\t%@",s);
 
32
  if ([c evaluateExpression: s] && [c isFetchInProgress])
 
33
    {
 
34
      NSDictionary *record;
 
35
      NSArray *attributes;
 
36
      
 
37
      attributes = [c describeResults];
 
38
      NSLog(@"attributes = %@", [attributes description]);
 
39
      
 
40
      while ((record = [c fetchAttributes: attributes  withZone: NULL]))
 
41
        {
 
42
          NSLog(@"record = %@", record);
 
43
        }
 
44
    }
 
45
}
 
46
 
 
47
//
 
48
//
 
49
//
 
50
void insert(EOAdaptorChannel *channel, EOEntity *entity, NSMutableDictionary *row)
 
51
{
 
52
  [row setObject: @"foo"  forKey: @"c_name"];
 
53
  [row setObject: @"barrr"  forKey: @"c_content"];
 
54
  [row setObject: [NSNumber numberWithInt: 1]  forKey: @"c_creationdate"];
 
55
  [row setObject: [NSNumber numberWithInt: 2]  forKey: @"c_lastmodified"];
 
56
  [row setObject: [NSNumber numberWithInt: 0]  forKey: @"c_version"];
 
57
 
 
58
  [channel insertRow: row  forEntity: entity];
 
59
}
 
60
 
 
61
//
 
62
//
 
63
//
 
64
void update(EOAdaptorChannel *channel, EOEntity *entity, NSMutableDictionary *row)
 
65
{
 
66
  EOSQLQualifier *qualifier;
 
67
 
 
68
  qualifier = [[EOSQLQualifier alloc] initWithEntity: entity
 
69
                                      qualifierFormat: @"%A = 'foo'", @"c_name"];
 
70
                                     
 
71
  [row setObject: @"bazzzzzzzzzzz"  forKey: @"c_content"];
 
72
  [row setObject: [NSNumber numberWithInt: 2]  forKey: @"c_creationdate"];
 
73
  [row setObject: [NSNumber numberWithInt: 3]  forKey: @"c_lastmodified"];
 
74
  [row setObject: [NSNumber numberWithInt: 1]  forKey: @"c_version"];
 
75
 
 
76
  [channel updateRow: row  describedByQualifier: qualifier];
 
77
}
 
78
 
 
79
//
 
80
//
 
81
//
 
82
int main (int argc, char **argv, char **env)
 
83
{
 
84
  NSAutoreleasePool *pool;
 
85
 
 
86
  EOAdaptorChannel *channel;
 
87
  NSMutableDictionary *row;
 
88
  EOAdaptorContext *ctx;
 
89
  EOAdaptor *adaptor;
 
90
  EOEntity *entity;
 
91
  EOAttribute *attribute;
 
92
 
 
93
  pool = [[NSAutoreleasePool alloc] init];
 
94
  [NSProcessInfo initializeWithArguments: argv  count: argc  environment: env];
 
95
 
 
96
  adaptor = [EOAdaptor adaptorWithName: @"Oracle8"];
 
97
  [adaptor setConnectionDictionary: [NSDictionary dictionaryWithContentsOfFile: @"condict.plist"]];
 
98
  ctx = [adaptor createAdaptorContext];
 
99
  channel = [ctx createAdaptorChannel];
 
100
 
 
101
  [channel openChannel];
 
102
  [ctx beginTransaction];
 
103
  
 
104
  //evaluate(channel, @"SELECT * FROM all_tables");
 
105
  evaluate(channel, @"SELECT COUNT(*) FROM all_tables");
 
106
  evaluate(channel, @"SELECT 1 FROM dual");
 
107
  evaluate(channel, @"SELECT sysdate FROM dual");
 
108
  
 
109
  evaluate(channel, @"DROP table otest_demo");
 
110
  evaluate(channel, @"CREATE TABLE otest_demo (\nc_name VARCHAR2 (256) NOT NULL,\n c_content CLOB NOT NULL,\n c_creationdate INTEGER NOT NULL,\n c_lastmodified INTEGER NOT NULL,\n c_version INTEGER NOT NULL,\n c_deleted INTEGER  DEFAULT 0 NOT NULL\n)");
 
111
  
 
112
  evaluate(channel, @"DELETE FROM otest_demo where c_name = 'foo'");
 
113
 
 
114
  entity = [[EOEntity alloc] init];
 
115
  [entity setName: @"otest_demo"];
 
116
  [entity setExternalName: @"otest_demo"]; // table name
 
117
 
 
118
  attribute = AUTORELEASE([[EOAttribute alloc] init]);
 
119
  [attribute setName: @"c_name"];
 
120
  [attribute setColumnName: @"c_name"];
 
121
  [entity addAttribute: attribute];
 
122
 
 
123
  row = [[NSMutableDictionary alloc] init];
 
124
 
 
125
  insert(channel, entity, row);
 
126
  evaluate(channel, @"SELECT * FROM otest_demo where c_name = 'foo'");
 
127
  update(channel, entity, row);
 
128
  evaluate(channel, @"SELECT * FROM otest_demo where c_name = 'foo'");
 
129
 
 
130
  RELEASE(entity);
 
131
  RELEASE(row);
 
132
 
 
133
  [ctx commitTransaction];
 
134
  [channel closeChannel];
 
135
  [pool release];
 
136
  
 
137
  return 0;
 
138