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