jl165 merging heads
[LibreOffice.git] / testautomation / dbaccess / tools / querytools.inc
blob29416dac7bf32b528cde4b066e3e65ad1b119970
1 'encoding UTF-8  Do not remove or change this line!
2 '**************************************************************************
3 ' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 ' Copyright 2000, 2010 Oracle and/or its affiliates.
7 ' OpenOffice.org - a multi-platform office productivity suite
9 ' This file is part of OpenOffice.org.
11 ' OpenOffice.org is free software: you can redistribute it and/or modify
12 ' it under the terms of the GNU Lesser General Public License version 3
13 ' only, as published by the Free Software Foundation.
15 ' OpenOffice.org 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
18 ' GNU Lesser General Public License version 3 for more details
19 ' (a copy is included in the LICENSE file that accompanied this code).
21 ' You should have received a copy of the GNU Lesser General Public License
22 ' version 3 along with OpenOffice.org.  If not, see
23 ' <http://www.openoffice.org/license.html>
24 ' for a copy of the LGPLv3 License.
26 '/************************************************************************
28 '* owner : marc.neumann@oracle.com
30 '* short description : Helper Routines for Base tests.
32 '***************************************************************************************
34 ' #1 fFindQuery
35 ' #1 fOpenNewQueryDesign
36 ' #1 fStartQueryWizard
37 ' #1 fCloseQueryDesign
39 '\***********************************************************************************
40 '-------------------------------------------------------------------------
41 function fFindQueryInBeamer(sDSName1,sQueryName1)
42     '/// select a query with the given name in the beamer 
43     '/// <u>parameter:</u>
44     '/// <b>sDSName1:</b> the name of the datasource
45     '/// <b>sQueryName1:</b> the name of the query
46     
47         dim i as integer
48         dim bfindQuery as boolean
49         dim iNoDS as integer
50     dim iNoQuery as integer
51     
52     bfindQuery = false
53         Kontext "DatabaseBeamer"
54     Kontext "DatabaseSelection"
55                 
56     iNoDS = DatabaseSelection.getItemCount      
57         for i = 1 to iNoDS
58                 DatabaseSelection.Select i
59                 if DatabaseSelection.getText = sDSName1 then
60                         i = iNoDS
61                 endif
62         next i
63         
64     wait 500
65         DatabaseSelection.TypeKeys "<ADD>" , true
66     wait 500
67         DatabaseSelection.TypeKeys "<DOWN>" , true
68     wait 500
69         DatabaseSelection.TypeKeys "<DOWN>" , true
70     wait 500
71         DatabaseSelection.TypeKeys "<ADD>" , true
72     wait 500
73         DatabaseSelection.TypeKeys "<DOWN>" , true
74     wait 500
75         
76         
77     iNoQuery = DatabaseSelection.getItemCount
78     dim ii as integer
79     ii = DatabaseSelection.GetSelIndex  
80         for i = ii to iNoQuery
81                 DatabaseSelection.Select i
82                 if DatabaseSelection.getText = sQueryName1 then
83                         i = iNoQuery
84                     sleep 1                     
85                     bfindQuery = true
86                 endif
87         next i
88         
89     fFindQuery = bfindQuery
90         
91 end function
92 '--------------------------------------------------------------------
93 function fOpenNewQueryDesign() as boolean
94     '/// open a new query design 
95     '/// <u>parameter:</u>    
96     
97     Kontext "DATABASE"    
98         Database.MouseDown(50,50)
99         Database.MouseUp(50,50)
100     
101     if ( Database.NotExists(3) ) then
102         fOpenNewQueryDesign = false
103         warnlog "The database windows doesn't exists"
104         exit function
105     end if
106     
107     sleep(1)
108     
109     printlog "open new query design"
110     
111     NewQueryDesign
112     
113     fOpenNewQueryDesign = true
114     
115 end function
116 '--------------------------------------------------------------------
117 function fOpenNewSQLQueryDesign() as boolean
118     '/// open a new query design in SQL mode 
119     '/// <u>parameter:</u>    
120     
121     Kontext "DATABASE"    
122         Database.MouseDown(50,50)
123         Database.MouseUp(50,50)
124     
125     if ( Database.NotExists(3) ) then
126         fOpenNewSQLQueryDesign = false
127         warnlog "The database windows doesn't exists"
128         exit function
129     end if
130     
131     sleep(1)
132     
133     printlog "open new sql query design"
134     
135     NewSQLQueryDesign
136     
137     fOpenNewSQLQueryDesign = true
138     
139 end function
140 '-------------------------------------------------------------------------
141 function fStartQueryWizard()
142     '/// start the query wizard 
143     '/// <u>parameter:</u>    
145     Kontext "DATABASE"    
146             if ( Database.NotExists(3) ) then
147                 fStartQueryWizard = false
148                 exit function
149             end if
151         Database.MouseDown(50,50)
152         Database.MouseUp(50,50)
153     
154     sleep(1)
155     
156     ViewQueries
157     StartQueryWizard
158     
159     sleep(2)
160     
161     fStartQueryWizard = true
162     
163 end function
164 '-------------------------------------------------------------------------
165 function fCloseQueryDesign(optional bSave)
166     '/// close the query design
167     '/// <u>parameter:</u>
168     '/// <b><i>optional</i>bSave:</b> if true the query is saved if false then the changes are lost
170     sleep(1)
172     Kontext "QueryDesignTable"
173         QueryDesignTable.UseMenu
174         ' bug file / close close the whole database
175         'hMenuSelectNr(1) ' the file menu
176         'hMenuSelectNr(4) ' the Close Window
177         
178         hMenuSelectNr(6) ' the window menu
179         hMenuSelectNr(1) ' the Close Window
180     
181     Kontext "Messagebox"
182         if Messagebox.Exists(3) then
183             if ( IsMissing( bSave ) ) then
184                 Messagebox.No
185             else
186                 if bSave then
187                     Messagebox.Yes
188                 else
189                     Messagebox.No
190                 endif
191             endif
192         end if
193         
194     sleep(1)
195         
196 end function
197 '-------------------------------------------------------------------------
198 function fOpenQueryInSQLDesign(sQueryName as String)
199     '/// open a query in sql design
200     '/// <u>parameter:</u>
201     '/// <b>bQueryName:</b> the name of the query which should be open
203     if ( fFindQuery(sQueryName) = true ) then
204         printlog "Query " + sQueryName + " found -> open in sql design"    
205         
206         Kontext "DATABASE"
207         Database.UseMenu        
208         
209         hMenuSelectNr(2)
210         hMenuSelectNr(9)
211         
212         sleep(1)
213         fOpenQueryInSQLDesign= true
214     else
215         fOpenQueryInSQLDesign = false
216     end if
217     
218     sleep(1)
220 end function
221 '-------------------------------------------------------------------------
222 function fCloseSQLQueryDesign(optional bSave)
223     '/// close the query design
224     '/// <u>parameter:</u>
225     '/// <b><i>optional</i>bSave:</b> if true the query is saved if false then the changes are lost
227     sleep(1)
229     Kontext "QueryEditWindow"
230         QueryEditWindow.UseMenu
231         ' bug file / close close the whole database
232         'hMenuSelectNr(1) ' the file menu
233         'hMenuSelectNr(4) ' the Close Window
234         
235         hMenuSelectNr(6) ' the window menu
236         hMenuSelectNr(1) ' the Close Window
237     
238     Kontext "Messagebox"
239         if Messagebox.Exists(3) then
240             if ( IsMissing( bSave ) ) then
241                 Messagebox.No
242             else
243                 if bSave then
244                     Messagebox.Yes
245                 else
246                     Messagebox.No
247                 endif
248             endif
249         end if
250         
251     sleep(1)
252         
253 end function
254 '-------------------------------------------------------------------------
255 function fSaveQueryDesign(sName as String)
256     '/// save an open Query Design 
257     '/// <u>parameter:</u> the name of query  
258     
259     sleep(1)
260     Kontext "QueryDesignTable"
261         QueryDesignTable.UseMenu
262         
263         hMenuSelectNr(1) ' the file menu
264         hMenuSelectNr(6) ' the save
265                 
266     Kontext "DatabaseTableSaveAs"
267         TableName.setText(sName)
268         DatabaseTableSaveAs.OK
269         
270     sleep(1)
271     
272     fSaveQueryDesign = true
274 end function
275 '-------------------------------------------------------------------------
276 function fSaveSQLQueryDesign(sName as String)
277     '/// save an open SQL Query Design 
278     '/// <u>parameter:</u>  the name of query   
279     
280     sleep(1)
281     Kontext "QueryEditWindow"
282         QueryEditWindow.UseMenu
283         
284         hMenuSelectNr(1) ' the file menu
285         hMenuSelectNr(6) ' the save
286                 
287     Kontext "DatabaseTableSaveAs"
288         TableName.setText(sName)
289         DatabaseTableSaveAs.OK
290         
291     sleep(1)
292     
293     fSaveSQLQueryDesign = true
295 end function
297 '-------------------------------------------------------------------------
298 function fChooseTableInAddTableDialog(sTableName as string) as boolean
299     Kontext "AddTables"
300         if ( not AddTables.exists(1) ) then
301             fChooseTableInQueryAddTableDialog = false    
302             exit function            
303         endif
304         
305     'TODO: add a test to click on the execute button, before the add table dialog is closed.
306         dim ix as integer 
307         dim i as integer
308         ix = TableName.getItemCount                
309         for i = 1 to ix
310             TableName.Select i
311             TableName.TypeKeys "<ADD>"
312             'printlog "ix = " + ix
313             'printlog "TableName.getItemCount = " + TableName.getItemCount 
314             if TableName.getItemCount > ix then
315                 ix = TableName.getItemCount
316                 'printlog "TableName.getItemCount > ix"
317             endif
318             'printlog "TableName.getSeltext = " + TableName.getSeltext
319             if TableName.getSeltext = sTableName then
320                 i = ix
321             endif
322         next
323         if TableName.getSeltext <> sTableName then
324             warnlog "Can find the table " + sTableName + "." + _
325                     "Make sure that the table exists when starting this test."
326             DatabaseClose                        
327             sleep(5)
328             Kontext "Messagebox"
329                 if Messagebox.Exists(3) then
330                     if Messagebox.getRT = 304 then
331                         Messagebox.No                        
332                     end if                        
333                 end if                
334             call hCloseDocument
335             exit function
336         endif
337         printlog "- Add " + sTableName +" table to query design"
338         '/// Add database table to Query.
339         AddTable.Click
340         sleep(2) 
341         if AddTables.exists(2) then 
342             CloseDlg.Click ' When the AddTables dialog still exists then close him
343         endif
344         sleep(1)
345         fChooseTableInAddTableDialog = true
346         
347 end function 
348 '--------------------------------------------------------------------
349 function fOpenQuery(sQueryName as string)    
350     '/// open the query with the given name
351     '/// <u>parameter:</u>
352     '/// <b>squeryName:</b> the query which shall be opened    
353     if ( fFindQuery(sQueryName) = true ) then
354         printlog "Query " + sQueryName + " found -> open"    
355         Kontext "ContainerView"
356             OpenTable ' uno-Slot .uno:DB/Open
357             sleep(1)
358         fOpenQuery = true
359     else
360         fOpenQuery = false
361     end if
362     
363 end function
364 '--------------------------------------------------------------------
365 function fFindQuery(sQueryName as string) 
366         '/// select the Query with the given name in the Query container
367     '/// <u>parameter:</u>
368     '/// <b>sQueryName:</b> the Query which shall be selected
369             
370     Dim iNumbersOfQuerys as integer
371         Dim i as integer
372         
373     Kontext "ContainerView"
374     
375         ViewQueries        
376     
377         fFindQuery = false
378     
379         if ( Not QueriesTree.exists(1) ) then
380             qaerrorlog "The Query tree doesn't exists"
381             ' May be a messagebox appear click OK to close it
382             Kontext "MessageBox"
383                 if MessageBox.exists(1) then
384                     qaerrorlog MessageBox.getText()
385                     while MessageBox.exists() ' sometimes there are more then 1 message boxe
386                         MessageBox.OK
387                     wend
388                 endif            
389             exit function
390         end if
391         
392         iNumbersOfQuerys = QueriesTree.getItemCount()
394         ' this select the first entry
395         QueriesTree.TypeKeys "<HOME>"
396         QueriesTree.TypeKeys "<UP>"
397         
398         
399         for i = 1 to iNumbersOfQuerys
400             
401             QueriesTree.TypeKeys "<ADD>"
402             'printlog "i = " + i
403             'printlog "QueryName.getItemCount = " + QueriesTree.getItemCount 
404             if QueriesTree.getItemCount >  iNumbersOfQuerys then
405                 iNumbersOfQuerys = QueriesTree.getItemCount()                    
406             endif
407             'printlog "QueryName.getSeltext = " + QueriesTree.getSeltext
408             if QueriesTree.getSeltext = sQueryName then
409                 fFindQuery = true    
410                 exit for
411             endif
412             QueriesTree.TypeKeys "<DOWN>"
413         next
414         sleep(1)        
415     
416 end function
417 '-------------------------------------------------------------------------
418 function fCloseQueryView() 
419     '/// close an open Query view
420     '/// <u>parameter:</u>
422     sleep(1)
424     Kontext "TableView"
425         TableView.UseMenu
426         ' bug file / close close the whole database
427         'hMenuSelectNr(1) ' the file menu
428         'hMenuSelectNr(4) ' the Close Window
429         
430         hMenuSelectNr(5) ' the window menu
431         hMenuSelectNr(1) ' the Close Window        
432     ' if messages box appear because of unsaved record click no in the dialog
433     Kontext "Messagebox"
434         if Messagebox.Exists(3) then
435             Messagebox.No
436         end if
437         
438     fCloseQueryView = true
439 end function