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