summaryrefslogtreecommitdiff
path: root/testautomation/framework/tools/includes/javatools.inc
blob: d5ac6fd36148a1c3ca674b32f1523d6f2008283a (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
'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 : joerg.Skottke@Sun.Com
'*
'*  short description : Tools to ease working with files including Java
'*
'\******************************************************************************

function hBatchLoadJavaFiles( aFileList() , cIdent as string )

    '///<h3>Load and close a list of files with recovery on error</h3>
    '///<u>Input</u>: A list containing files to load<br>
    '///<u>Returns</u>: No returnvalue
    '///<ul>
    
    const CFN = "hBatchLoadJavaFiles::"
    
    dim iSourceFiles as integer
        iSourceFiles = listcount( aFileList() )
        
    dim iCurrentFile as integer
    dim cCurrentFile as string 
    dim brc as boolean 
    
    '///+<li>Loop through the list, starting at index 2</li>
    for iCurrentFile = 2 to iSourceFiles
    
        cCurrentFile = aFileList( iCurrentFile )
    
        printlog( "" )
        printlog( "Processing file: "  & cCurrentFile )
    
        '///+<li>Load a file, verify</li>
        brc = hFileOpen( aFileList( iCurrentFile ) )
        if ( not brc ) then
            warnlog( "Error while loading: " & cCurrentFile ) 
        endif
        
        '///+<li>close the file, verify</li>
        brc = hDestroyDocument()
        if ( not brc ) then
            warnlog( "Error while closing: " & cCurrentFile ) 
        endif
        
        '///+<li>There should be one document left: The first doc</li>
        if ( getDocumentCount() = 1 ) then
            brc = hIdentifyWriterDoc( cIdent , false )
            if ( not brc ) then
                 warnlog( "Document <" & cIdent & "> is missing, restarting" )
                 call ExitRestartTheOffice()
            endif
            
        elseif ( getDocumentCount() <> 1 ) then
            warnlog( "The number of open documents is incorrect, restarting" )
            call ExitRestartTheOffice()
            
        endif
        
        '///+<li>Check for hs_err_pidXXXX.log files (Java Exceptions)</li>
        brc = hFindCopyRemoveJavaLogs( aFileList( 1 ) )
        if ( not brc ) then
            warnlog( "Java Exceptions were created." )
            printlog( "Find the files in your local OOo-work directory." )
        endif
        
    next iCurrentFile
    '///</ul>
    
end function

'*******************************************************************************

function hFindCopyRemoveJavaLogs( cSourcePath as string ) as boolean

    '///<h3>Search/move hs_err_pidXXXX.log files within a directory recursively</h3>
    '///<u>Input</u>: Start directory<br>
    '///<u>Returns</u>: TRUE if no errors were found
    '///<ul>
    
    ' Reason 1: The files are createn in the CVS tree and must be removed
    ' Reason 2: The files have to be analyzed so the bugs can be fixed
    ' Reason 3: The files must be moved away after each error so they can be
    '           assigned to the correct documents
    
    const CFN = "hFindCopyRemoveJavaLogs::"

    dim aSourceFiles( 1000 ) as string
    dim iSourceFiles as integer
    dim aTargetPath as string
        aTargetPath = hGetWorkPath()
        
    dim iCurrentFile as integer
    dim brc as boolean
        brc = true
        
    dim iSPLen as integer ' length of the source-path string + "/" + next letter
        iSPLen = len( cSourcePath ) + 2

    '///+<li>Look for leftover hs_err_pidXXXX.log files</li>
    iSourceFiles = GetAllFileList( cSourcePath, "hs_err*.log", aSourceFiles() )    
    if ( iSourceFiles > 1 ) then
    
        '///+<li>Print the list to the log</li>
        hListPrint( aSourceFiles(), "New hs_err_pidXXXX.log files exist" )
        brc = false
        
        '///+<li>Copy the hs_err...log files to the local work directory</li>
        for iCurrentFile = 2 to listcount( aSourceFiles() )
        
            ' Create the name of the file we want to copy the hs_err...log to 
            aTargetPath = aTargetPath & mid( aSourceFiles( iCurrentFile ) , iSPLen )
            FileCopy( aSourceFiles( iCurrentFile ) , aTargetPath )
            
            '///+<li>Delete the original log file(s)</li>
            hDeleteFile( aSourceFiles( iCurrentFile ) ) 
            
        next iCurrentFile
        
    else
        Printlog( CFN & "No hs_err_pidXXXX.log file(s) found. Good."        
    endif
    '///</ul>
    
    hFindCopyRemoveJavaLogs() = brc 
    
end function