summaryrefslogtreecommitdiff
path: root/testautomation/dbaccess/optional/includes/db_Relations.inc
blob: 3d10a132d43ab65a6e3698c4dcd655411c8332da (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
'encoding UTF-8  Do not remove or change this line!
'**************************************************************************
' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
'
' Copyright 2000, 2010 Oracle and/or its affiliates.
'
' OpenOffice.org - a multi-platform office productivity suite
'
' This file is part of OpenOffice.org.
'
' OpenOffice.org is free software: you can redistribute it and/or modify
' it under the terms of the GNU Lesser General Public License version 3
' only, as published by the Free Software Foundation.
'
' OpenOffice.org is distributed in the hope that it will be useful,
' but WITHOUT ANY WARRANTY; without even the implied warranty of
' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
' GNU Lesser General Public License version 3 for more details
' (a copy is included in the LICENSE file that accompanied this code).
'
' You should have received a copy of the GNU Lesser General Public License
' version 3 along with OpenOffice.org.  If not, see
' <http://www.openoffice.org/license.html>
' for a copy of the LGPLv3 License.
'
'/************************************************************************
'*
'* owner : marc.neumann@sun.com
'*
'* short description : Base Level 1 Create Relations between Test Tables
'*
'\***********************************************************************
function tRelation( sFileName, sPWD, sRelTable1, sRelTable2 )
	'/// create an 1:1 and 1:n relation between two test tables
    Dim i, j, ix as integer			    'counter
	Dim iNoDS as integer                'number of data source in listbox
    Dim iNoTab as integer               'number of tables in grid
    Dim DSOK as boolean                 'datasource present check      
    
    call fOpenDatabase(sFileName, sPWD)
    
    call fOpenRelationDesign
    
    '/// searching and adding of the two needed testtables    
        
    bDelete_Container() 'delete all disturbing table container
    sleep(1)
        
    '/// insert add tables dialog if not present    
    Kontext "AddTables"
        if (AddTables.exists(1) = false) then
            printlog "open add table dialog"
            Kontext "RelationDesign"
            sleep(1)
            RelationDesign.UseMenu
            sleep(1)
            hMenuSelectNr (4)
            sleep(1)
            hMenuSelectNr (2)
            sleep(1)
        endif
        sleep(1)
    'call fChooseTableInAddTableDialog(sRelTable1)
        
        '/// searching and adding the two needed testtables
    Kontext "AddTables"
        dim sRelTable as string         'buffer variable
        dim breltablefound as integer   'control if both needed table are found
        breltablefound = 0
        
        for j = 1 to 2
            if j = 1 then 
                sRelTable = sRelTable1 'first table
            else 
                sRelTable = sRelTable2  'second table
            endif
            ix = TableName.getItemCount                
            for i = 1 to ix
                TableName.Select i
                TableName.TypeKeys "<ADD>"  'adding test table
                if TableName.getItemCount > ix then
                    ix = TableName.getItemCount
                endif
                if TableName.getSeltext = sRelTable then
                    printlog "table found: " + sRelTable
                    breltablefound = breltablefound +1
                    i = ix
                endif
            next i
                sleep(1)
                AddTable.Click
                sleep(1)                        
        next j
        CloseDlg.Click
        
        if breltablefound <> 2 then     'two needed tables not found if variable <> 2
            warnlog "proper tables: " + sRelTable1 + " and/or " + sRelTable2 + " not found - test abort"
            call fCloseRelationDesign
            call fCloseDatabase
            exit function
        else
            printlog "both needed tables found and added"
        endif
        sleep(1)
        
    Kontext "RelationDesign"        
   '/// open relation property menue
        sleep(1)
        RelationDesign.UseMenu
        sleep(1)
        hMenuSelectNr (4)
        sleep(1)
        hMenuSelectNr (1)
        sleep(1)
    Kontext "RelationProperties"
    '/// create 1:1 relation: open relation design and choose the ID fields from each table/listbox
        sleep(1)
        printlog "open relation design and choose the ID fields from each table/listbox"
        RelationProperties.TypeKeys "<TAB>",TRUE
        RelationProperties.TypeKeys "<TAB>",TRUE
        RelationProperties.TypeKeys "<MOD2 DOWN>",TRUE
        sleep(1)
        RelationProperties.TypeKeys "<DOWN>",TRUE
       ' RelationProperties.TypeKeys "<RETURN>",TRUE
        sleep(1)
        RelationProperties.TypeKeys "<TAB>",TRUE
        RelationProperties.TypeKeys "<MOD2 DOWN>",TRUE
        sleep(1)
        RelationProperties.TypeKeys "<DOWN>",TRUE
       ' RelationProperties.TypeKeys "<RETURN>",TRUE
        sleep(1)
        RelationProperties.OK
        printlog "1:1 relation between test tables created"
        sleep(1)
        
    Kontext "RelationDesign"
    '/// delete relation connector
        dim k as integer    'injurance that routine do not loop
        dim l as integer    'buffer for hMenuItemGetCount
        k = 0
        Do
           '/// checkout wich kontext has two entries (only relation connector has)
            Kontext "RelationDesign"
                 RelationDesign.TypeKeys "<TAB>",TRUE
                 sleep(1)
                 RelationDesign.TypeKeys "<SHIFT F10>",TRUE
                 sleep(1)
                 try
                 	l = hMenuItemGetCount
                 catch
                 endcatch	
                 MenuSelect 0
                 sleep(1)
                 k = k + 1
                 'printlog "k = " + k
                 'printlog "hMenuItemGetCount = " + l
        Loop Until k = 10 or l = 2
        if k = 10 then
           warnlog "abort deleting relation: searching for relation connector went wrong"
        endif
        printlog "relation connector deleted"
        RelationDesign.TypeKeys "<SHIFT F10>",TRUE
        hMenuSelectNr (1)
        sleep(1)
        
        '/// create 1:n relation 
        Kontext "RelationDesign"
        '/// open relation property menue
            printlog "open relation property menue for 1:n relation"
            sleep(1)
            RelationDesign.UseMenu
            sleep(1)
            hMenuSelectNr (4)
            sleep(1)
            hMenuSelectNr (1)
            sleep(1)
        Kontext "RelationProperties"
            '/// open relation design and change listbox content
            printlog "open relation design and choose proper fields from table/listbox"
            RelationProperties.TypeKeys "<TAB>",TRUE
            RelationProperties.TypeKeys "<TAB>",TRUE
            RelationProperties.TypeKeys "<MOD2 DOWN>",TRUE
            sleep(1)
            RelationProperties.TypeKeys "<DOWN>",TRUE
            RelationProperties.TypeKeys "<DOWN>",TRUE
            sleep(1)
            RelationProperties.TypeKeys "<TAB>",TRUE
            RelationProperties.TypeKeys "<MOD2 DOWN>",TRUE
            sleep(1)
            RelationProperties.TypeKeys "<DOWN>",TRUE
            RelationProperties.TypeKeys "<RETURN>",TRUE
            sleep(1)
            RelationProperties.OK
            printlog "1:n relation between test tables created"
            sleep (1)
            
            bDelete_Container() 'delete all table container to leave place clear
            sleep (1)
              
        fCloseRelationDesign(true)'close relation design and save it"
            

        call fCloseDatabase
end function
'-------------------------------------------------------------------------
function tDoubleRelation( sFileName, sPWD, sRelTable1, sRelTable2, sRelTable3 )
	'/// create an 1:1 relation, close and save relation dialog,
    '/// reopen the dialog and add an 1:n relation with third test table
    Dim i, j, ix as integer			    'counter
	Dim iNoDS as integer                'number of data source in listbox
    Dim iNoTab as integer               'number of tables in grid
    Dim DSOK as boolean                 'datasource present check      
    
    
    call fOpenDatabase(sFileName, sPWD)
    
    call fOpenRelationDesign
        
    '/// searching and adding of the two needed testtables    
        
    bDelete_Container() 'init
        
    '/// insert add tables dialog if not present    
    Kontext "AddTables"
        if (AddTables.exists(1) = false) then
            '/// open add table dialog
            printlog "open add table dialog"
            Kontext "RelationDesign"
            sleep(1)
            RelationDesign.UseMenu
            sleep(1)
            hMenuSelectNr (4)
            sleep(1)            
            hMenuSelectNr (2)
            sleep(1)
        endif
        sleep(1)
        
    '/// add the needed testtables
    Kontext "AddTables"
        dim sRelTable as string         'buffer for tablenames
        dim breltablefound as integer   'control if both needed table are found
        breltablefound = 0
        for j = 1 to 2
            if j = 1 then 
                sRelTable = sRelTable1 'first table
            else 
                sRelTable = sRelTable2  'second table
            endif
            ix = TableName.getItemCount                
            for i = 1 to ix
                TableName.Select i
                TableName.TypeKeys "<ADD>"
                if TableName.getItemCount > ix then
                    ix = TableName.getItemCount
                endif
                if TableName.getSeltext = sRelTable then
                    printlog "table found: " + sRelTable
                    breltablefound = breltablefound +1
                    i = ix
                endif
            next i
            sleep(1)
            AddTable.Click
            sleep(1)
        next j
        CloseDlg.Click
        
        if breltablefound <> 2 then     'two needed tables not found if variable <> 2
            warnlog "proper tables: " + sRelTable1 + " and/or " + sRelTable2 + " not found - test abort"
            call fCloseRelationDesign
            call fCloseDatabase
            exit function
        else
            printlog "both tables found and added"
        endif
        sleep(1)
    
    '/// create 1:1 relation
    Kontext "RelationDesign"
    '/// open relation property menue
        printlog "open relation property menue"
        sleep(1)
        RelationDesign.UseMenu
        sleep(1)
        hMenuSelectNr (4)
        sleep(1)
        hMenuSelectNr (1)
        sleep(1)
    Kontext "RelationProperties"
        '/// open relation design and choose proper fields from table/listbox
        printlog "open relation design and choose proper fields from table/listbox"
        RelationProperties.TypeKeys "<TAB>",TRUE
        RelationProperties.TypeKeys "<TAB>",TRUE
        RelationProperties.TypeKeys "<MOD1 DOWN>",TRUE
        sleep(1)        
        RelationProperties.TypeKeys "<TAB>",TRUE
        RelationProperties.TypeKeys "<MOD1 DOWN>",TRUE        
        sleep(1)
        RelationProperties.OK
        printlog "1:1 relation between test tables created"
        
    '/// close and save relation design and save design
    call fCloseRelationDesign(true)
        
'/// Second Part: adding 1:n relation  
        printlog ""
        printlog "Second Part: adding 1:n relation"
    
    call fOpenRelationDesign
        
    '/// insert add tables dialog if not present    
    Kontext "AddTables"
        if (AddTables.exists(1) = false) then
            '/// open add table dialog
            printlog "open add table dialog"
            Kontext "RelationDesign"
            sleep(1)
            RelationDesign.UseMenu
            sleep(1)
            hMenuSelectNr (4)
            sleep(1)
            hMenuSelectNr (2)
            sleep(1)
        endif
        sleep(1)
    
    '/// searching and adding proper table
    Kontext "AddTables"
        breltablefound = 0
        for j = 1 to 1
            sRelTable = sRelTable3 'third table
            ix = TableName.getItemCount                
            for i = 1 to ix
                TableName.Select i
                TableName.TypeKeys "<ADD>"
                if TableName.getItemCount > ix then
                    ix = TableName.getItemCount
                endif
                if TableName.getSeltext = sRelTable then
                    printlog "table found: " + sRelTable
                    breltablefound = breltablefound +1
                    i = ix
                endif
            next i
            sleep(1)
            AddTable.Click
            sleep(1)
        next j
        CloseDlg.Click
        
        if breltablefound <> 1 then     'needed table not found if variable <> 1
            warnlog "proper table: " + sRelTable3 + " not found - test abort"
            call fCloseRealtionDesign
            call fCloseDatabase
            exit function
        else
            printlog "third table found and added"
        endif
        sleep(1)
    
    
    '/// add 1:n relation
    Kontext "RelationDesign"
    '/// open relation property menue
        printlog "open relation property menue"
        sleep(1)
        RelationDesign.UseMenu
        sleep(1)
        hMenuSelectNr (4)
        sleep(1)
        hMenuSelectNr (1)        
        sleep(1)
    Kontext "RelationProperties"
    '/// open relation design and choose the proper fields from table/listbox
        printlog "open relation design and choose the proper fields from table/listbox"
        RelationProperties.TypeKeys "<TAB>",TRUE
        RelationProperties.TypeKeys "<MOD1 DOWN>",TRUE
        RelationProperties.TypeKeys "<MOD1 DOWN>",TRUE        
        sleep(1)
        RelationProperties.TypeKeys "<TAB>",TRUE
        RelationProperties.TypeKeys "<MOD1 DOWN>",TRUE
        RelationProperties.TypeKeys "<MOD1 DOWN>",TRUE        
        sleep(1)
        RelationProperties.TypeKeys "<TAB>",TRUE
        RelationProperties.TypeKeys "<MOD1 DOWN>",TRUE        
        sleep(1)
        RelationProperties.OK
        
        Kontext "MessageBox"
        	if MessageBox.exists(1) then
        		MessageBox.OK
        		Kontext "RelationProperties"
        		RelationProperties.OK
        	endif
        printlog "1:n relation between test tables created" 
        sleep(1)
        
        bDelete_Container() 'delete all table container to leave place clear
        sleep (1)

    
    call fCloseRelationDesign   'close relation design and save init design"
        
    call fCloseDatabase
            
end function


function bDelete_Container() as boolean
    dim bcontainer_exist as boolean
    bcontainer_exist = true
    '/// delete container if present
    Do
        sleep(2)
        Kontext "RelationDesign"
        RelationDesign.MouseDown(2,2)
        RelationDesign.MouseUp(2,2)
        sleep(1)
        RelationDesign.TypeKeys "<DELETE>",TRUE
        sleep(2)
        Kontext "MessageBox"
            '/// container present if opening context menue possible
            if MessageBox.exists(2) then
                MessageBox.Yes
            else
                bcontainer_exist = false
            endif
    Loop Until bcontainer_exist = false
    printlog "deleted container to init relation design"
end function