update dev300-m58
[ooovba.git] / testautomation / dbaccess / tools / reporttools.inc
blobc4d4d55640c500d1a22e65696748083031c113e3
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: reporttools.inc,v $
11 '* $Revision: 1.2 $
13 '* last change: $Author: jsk $ $Date: 2008-06-20 08:03:51 $
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 : Report Helper Routines for Base tests.
38 '***************************************************************************************
40 '* #1 fOpenNewReoprtDesign
41 '* #1 fCloseReportDesign
42 '* #1 fCloseReportView
43 '* #1 fSaveReport
44 '* #1 fOpenReport
45 '* #1 fFindREport
46 '* #1 fOpenReportNavigator
47 '* #1 fCloseReportNavigator
48 '* #1 fSwitchPageheader
49 '* #1 fExecutereport
50 '* #1 fCloseAddFieldDialog
51 '* #1 tools_reporttools_InstallExtension
53 '\***********************************************************************************
54 '-------------------------------------------------------------------------
55 function fOpenNewReportDesign()
56     '/// open a a new report design from an open database
57     '/// <u>parameter:</u>
58           
59     Kontext "DATABASE"    
60             if ( Database.NotExists(3) ) then
61                 fOpenNewReportDesign = false
62                 exit function
63             end if
65         Database.MouseDown(50,50)
66         Database.MouseUp(50,50)
67     
68     sleep(1)
69     
70     ViewReports
71     NewReportDesign
72     
73     sleep(5)
74     
75    ' Kontext "ReportDesign"
76    '     ReportDesign.MouseDown(50,50)
77    '     ReportDesign.MouseUp(50,50)
78     
79    ' sleep(1)
80         
81     fOpenNewReportDesign = true
82     
83 end function
84 '--------------------------------------------------------------------
85 function fCloseReportDesign( optional bSave )    
86     '/// close an open Report 
87     '/// <u>parameter:</u>
88     '/// <b><i>optional</i> bSave:</b> if true the Report shall be saved, if false the changes are lost
89     
90     sleep(1)
92     Kontext "ReportDesign"
93         ReportDesign.UseMenu
94         hMenuSelectNr(1) ' the file menu
95         hMenuSelectNr(5) ' the Close Window
96     
97     'when issue 30401 is fixed this has to be changed            
98     Kontext "Messagebox"        
99         if Messagebox.Exists(3) then
100             if ( IsMissing( bSave ) ) then
101                 Messagebox.No
102             else
103                 if bSave then
104                     Messagebox.Yes
105                 else
106                     Messagebox.No
107                 endif
108             endif
109         end if        
110     
111     sleep(1)
112     
113     fCloseReportDesign = true
115 end function
116 '--------------------------------------------------------------------
117 function fCloseReportView()    
118     '/// close an open Report View 
119     '/// <u>parameter:</u>    
120     
121     sleep(1)
123     Kontext "DocumentWriter"
124         DocumentWriter.UseMenu
125         hMenuSelectNr(1) ' the file menu
126         hMenuSelectNr(5) ' the Close Window
127         
128     sleep(1)
129     
130     fCloseReportView = true
132 end function
133 '--------------------------------------------------------------------
134 function fSaveReport( sReportName as string, optional bCloseReport as boolean )    
135     '/// save an open Report with the given name 
136     '/// <u>parameter:</u>    
137     '/// <b>sReportName:</b> the name under which the Report shall be saved. If the file allready exists, then the file will be overwritten
138     '/// <b><i>optional</i> bCloseReport:</b> if true the Report shall be closed after saving, if false Report stay open
139     sleep(1)
141     Kontext "DocumentWriter"
142         DocumentWriter.UseMenu
143         hMenuSelectNr(1) ' the file menu
144         hMenuSelectNr(6) ' the Save
146     Kontext "ReportSaveDialog"
147         if ReportSaveDialog.exists(3) then
148             ReportName.setText(sReportName)
149             SaveBtn.Click
150             'click yes in the overwrite messages box
151             Kontext "MessageBox"
152                 if MessageBox.exists(1) then
153                     MessageBox.Yes
154                 endif
155             fSaveReport = true    
156         else
157             fSaveFrom = false
158         end if
159      
160      if ( IsMissing( bCloseReport ) ) then
161         ' nothing
162      else
163         call fCloseReport()
164      end if
165      
166 end function
167 '--------------------------------------------------------------------
168 function fOpenReport(sReportName as string)    
169     '/// open a Report with the given name
170     '/// <u>parameter:</u>
171     '/// <b>sReportName:</b> the name of the Report which shall be open
173     if ( fFindReport(sReportName) = true ) then
174         printlog "Report found -> open"    
175         Kontext "ContainerView"
176             OpenReport ' uno-Slot .uno:DB/Open
177             sleep(1)
178         fOpenReport = true
179     else
180         printlog "Report not found."
181         fOpenReport = false
182     end if
183     
184 end function
185 '--------------------------------------------------------------------
186 function fOpenReportInDesign(sReportName as string)    
187     '/// open a Report with the given name in the design mode
188     '/// <u>parameter:</u>
189     '/// <b>sReportName:</b> the name of the Report which shall be open
191     if ( fFindReport(sReportName) = true ) then
192         printlog "Report found -> open"    
193         Kontext "ContainerView"
194             EditReport ' uno-Slot .uno:DB/Edit
195             sleep(1)
196         fOpenReportInDesign = true
197     else
198         printlog "Report not found."
199         fOpenReportInDesign = false
200     end if
201     
202 end function
203 '--------------------------------------------------------------------
204 function fFindReport(sReportName as string)    
205     '/// select a Report with the given name
206     '/// <u>parameter:</u>
207     '/// <b>sReportName:</b> the name of the Report which shall be selected
208     
209     Dim iNumbersOfReports as integer
210         Dim i as integer
211         
212     Kontext "DATABASE"
213     
214         ViewReports        
215     
216         fFindReport = false
217     
218         if ( Not DatabaseReportsView.exists(1) ) then
219             warnlog "The Report tree doesn't exists"            
220             exit function
221         end if
222         
223         iNumbersOfReports = DatabaseReportsView.getItemCount()
225         ' this select the first entry
226         DatabaseReportsView.TypeKeys "<HOME>"
227         DatabaseReportsView.TypeKeys "<UP>"
228         
229         
230         for i = 1 to iNumbersOfReports
231             
232             DatabaseReportsView.TypeKeys "<ADD>"
233             'printlog "i = " + i
234             'printlog "ReportName.getItemCount = " + ReportTree.getItemCount 
235             if DatabaseReportsView.getItemCount >  iNumbersOfReports then
236                 iNumbersOfReports = DatabaseReportsView.getItemCount()                    
237             endif
238             'printlog "ReportName.getSeltext = " + ReportTree.getSeltext
239             if DatabaseReportsView.getSeltext = sReportName then
240                 fFindReport = true    
241                 exit for
242             endif
243             DatabaseReportsView.TypeKeys "<DOWN>"
244         next
245         sleep(1)        
246     
247 end function
248 '--------------------------------------------------------------------
249 function fOpenReportNavigator     
250     '/// open the report navigator
251     '/// <u>parameter:</u>
252     printlog "open report navigator"    
253     Kontext "ReportDesign"     
254         ReportDesign.UseMenu
255         hMenuSelectNr(3)
256         if (hMenuItemIsChecked(5) = false) then
257             hMenuSelectNr(5)
258         else
259             'nothing
260         endif
261         
262     sleep(1)        
263         
264 end function
265 '--------------------------------------------------------------------
266 function fCloseReportNavigator     
267     '/// open the report navigator
268     '/// <u>parameter:</u>
269     printlog "open report navigator"    
270     Kontext "ReportDesign"     
271         ReportDesign.UseMenu
272         hMenuSelectNr(3)
273         if (hMenuItemIsChecked(5) = true) then
274             hMenuSelectNr(5)
275         else
276             'nothing
277         endif
278         
279     sleep(1)        
280         
281 end function
282 '--------------------------------------------------------------------
283 function fExecuteReport     
284     '/// execute the report via the menu
285     '/// <u>parameter:</u>
286     
287     Kontext "ReportDesign"     
288         ReportDesign.UseMenu
289         hMenuSelectNr(2)
290         hMenuSelectNr(14)
291         
292 end function
293 '--------------------------------------------------------------------
294 function fSwitchPageHeader     
295     '/// delete or insert the Page Header via the menu
296     '/// <u>parameter:</u>
298     Kontext "ReportDesign"     
299         ReportDesign.UseMenu
300         hMenuSelectNr(2)
301         hMenuSelectNr(8)
302     
303 end function    
304 '--------------------------------------------------------------------
305 function fCloseAddFieldDialog   
306     '/// close the Add Field Dialog via the slot or menu
307     '/// <u>parameter:</u>
308     
309     Kontext "ReportAddField"
310         if (ReportAddField.exists(3)) then            
311             ReportAddField.close
312         else
313             ' check if the dialog is really not there
314             ' sometimes the focus is wrong. So I try a second way to disable the dialog
315             Kontext "ReportDesign"
316                 ReportDesign.UseMenu
317                 hMenuSelectNr(3)
318                 if (hMenuItemIsChecked(3)) then
319                     hMenuSelectNr(3)
320                 else
321                     warnlog "there should be the Add field dialog. But there is none."
322                 endif
323         endif
324 end function
325 '--------------------------------------------------------------------
326 function fOpenAddFieldDialog   
327     '/// open the Add Field Dialog via the slot or menu
328     '/// <u>parameter:</u>
329     
330     Kontext "ReportAddField"
331         if (ReportAddField.exists(3)) then            
332             ' do nothing
333         else
334             Kontext "ReportDesign"
335                 ReportDesign.UseMenu
336                 hMenuSelectNr(3)
337                 if (hMenuItemIsChecked(3)) then
338                     hMenuSelectNr(3)
339                     ReportDesign.UseMenu
340                         hMenuSelectNr(3)    
341                     hMenuSelectNr(3)
342                     printlog "1"
343                 else
344                     hMenuSelectNr(4)
345                     printlog "2"
346                 endif
347             Kontext "ReportAddField"
348             ReportAddField
349             if (ReportAddField.exists(3)) then            
350                 ' do nothing
351             else
352                 warnlog "there should be the Add field dialog. But there is none."
353             endif
354         endif
355         
356 end function
357 '--------------------------------------------------------------------
358 function tools_reporttools_InstallExtension
359     '/// install the report designer extension
360     '/// <u>parameter:</u>
361     '/// <u>Return Value:</u><br>
363     '/// <ol>
364     '/// +<li>Errorcode (Integer)</li>
365     '/// <ul>
366     '/// <li>0 = No errors, extension was added correctly</li>
367     '/// <li> not 0 = an error occure see hExtensionAddGUI for more info </li>
368     '/// </ul>
369     '/// </ol>
370     
371     dim i as integer
372     use "global/tools/includes/optional/t_extension_manager_tools.inc"
373     if (not hIsExtensionAlreadyInstalled("Report Builder")) then
374         i = hExtensionAddGUI( gTesttoolPath + "dbaccess/required/input/sun-report-builder.oxt", "AcceptLicense,InstallForUser" )
375         if (i > 0) then    
376             tools_reporttools_InstallExtension = 0
377         else
378             if (i = -5) then
379                 warnlog "Report extension was not installed due to unsatisfied dependencies."
380                 tools_reporttools_InstallExtension = 5
381             else
382                 warnlog "Report extension was not installed. Error Code = " + i
383                 tools_reporttools_InstallExtension = i
384             endif
385         endif
386     else
387         tools_reporttools_InstallExtension = 0    
388     endif
389     
390     ' restart the office
391     call ExitRestartTheOffice
392     
393 end function