'encoding UTF-8 Do not remove or change this line! '************************************************************** ' ' Licensed to the Apache Software Foundation (ASF) under one ' or more contributor license agreements. See the NOTICE file ' distributed with this work for additional information ' regarding copyright ownership. The ASF licenses this file ' to you under the Apache License, Version 2.0 (the ' "License"); you may not use this file except in compliance ' with the License. You may obtain a copy of the License at ' ' http://www.apache.org/licenses/LICENSE-2.0 ' ' Unless required by applicable law or agreed to in writing, ' software distributed under the License is distributed on an ' "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY ' KIND, either express or implied. See the License for the ' specific language governing permissions and limitations ' under the License. ' '************************************************************** '* '* short description : Library with function for creating all possible databases '* '*************************************************************************************** '* ' #1 fCreateMySQL_ODBC_Datasource ' #1 fCreateMySQL_JDBC_Datasource ' #1 fCreateAdabasDatasource ' #1 fCreateLocalAdabasDatasource ' #1 fCreateJDBCDatasource ' #1 fCreateODBCDatasource ' #1 fCreateDbaseDatasource ' #1 fCreateADODatasource ' #1 fCreateTextDatasource ' #1 fCreateSpreadsheetDatasource ' #1 fCreateLDAPAddressbookDatasource ' #1 fCreateEvolutionAddressbookDatasource ' #1 fCreateWindowsAddressbookDatasource ' #1 fCreateOutlookAddressbookDatasource ' #1 fCreateMozillaAddressbookDatasource ' #1 fRegisterDatabaseFile ' #1 fDeRegisterDatabaseFile ' #1 fSetJDBCDriverFiles ' #1 getIdForDatabaseType '* '\*********************************************************************************** private const VERBOSE = true function fCreateMySQL_ODBC_Datasource(sFileName, sOdbcDSN, sUser,optional sRegister) as boolean '/// create a new MySQL database via ODBC file with the given filename '///+ and the given URL '/// parameter: '/// sFileName: the file name for the database file '/// sOdbcDSN: the name of the odbc datasource '/// sUser: the user for the connection '/// sPassword: the password for the connection '/// optional sRegister: the name under which the database is be registered dim bOK as boolean bOK = FALSE ' delete the file if ( app.Dir( ConvertPath(sFileName) ) ) <> "" then app.kill(ConvertPath(sFileName)) endif Kontext "DocumentWriter" if (DocumentWriter.exists(1)) then DocumentWriter.UseMenu else Kontext "DocumentBackground" DocumentBackground.UseMenu endif hMenuSelectNr(1) hMenuSelectNr(1) hMenuSelectNr(5) sleep(4) Kontext "DatabaseWizard" ConnectToDatabase.Check sleep(1) DatabaseType.select( hGetDatabaseDisplayName( "sdbc:mysql:odbc:*" ) ) sleep(1) NextBtn.Click sleep(1) MySQLODBC.Check NextBtn.Click Kontext "DatabaseWizard" '/// add the URL printlog "add the URL" MySQLODBCDSName.setText "sdbc:mysql:odbc:" + sOdbcDSN Kontext "DatabaseWizard" NextBtn.Click Kontext "DatabaseWizard" '/// add the user name printlog "add the user name" UserName.setText sUser '/// check the password required checkbox printlog "check the password required checkbox" PasswordRequired.Check Kontext "DatabaseWizard" NextBtn.Click Kontext "DatabaseWizard" FinishBtn.Click Kontext "SpeichernDlg" Dateiname.setText ConvertPath(sFileName) Speichern.click sleep(5) if ( IsMissing(sRegister) ) then printlog "don't register datasource" else printlog "register datasource with name " + sRegister call fRegisterDatabaseFile(ConvertPath(sFilename),sRegister) end if bOK = true if bOK = true then printlog "--- End of function - *** Succeed ***" else warnlog "--- End of function - *** Failed *** Data source was not created" endif call fCloseDatabase(true) fCreateMySQL_ODBC_Datasource = bOK end function '------------------------------------------------------------------------- function fCreateMySQL_JDBC_Datasource(sFileName,sDatabaseName,sHost,sPort,sUser,optional sRegister) as boolean '/// create a new MySQL database via JDBC file with the given filename '///+ and the given URL '/// parameter: '/// sFielName: the file name for the database file '/// sDatabaseName: the name of the mysql database '/// sHost: the host where the mysql database is running '/// sPort: the port where the mysql database is running '/// sUser: the user for the connection '/// optional sRegister: the name under which the database is be registered dim bOK as boolean bOK = FALSE dim sEntry as string ' delete the file if ( app.Dir( ConvertPath(sFileName) ) ) <> "" then app.kill(ConvertPath(sFileName)) endif Kontext "DocumentWriter" if (DocumentWriter.exists(1)) then DocumentWriter.UseMenu else Kontext "DocumentBackground" DocumentBackground.UseMenu endif hMenuSelectNr(1) hMenuSelectNr(1) hMenuSelectNr(5) sleep(4) Kontext "DatabaseWizard" ConnectToDatabase.Check sleep(1) sEntry = hGetDatabaseDisplayName( "sdbc:mysql:jdbc:*" ) 'cut off the (JDBC) string sEntry = Mid( sEntry , 1, len(sEntry) - Instr(sEntry,"(") ) printlog "entry = " + sEntry DatabaseType.select( sEntry ) sleep(1) NextBtn.Click sleep(1) MySQLJDBC.Check NextBtn.Click sleep(1) MySQLDatabaseName.setText(sDatabaseName) MySQLHostName.setText(sHost) MySQLPort.setText(sPort) NextBtn.Click sleep(1) '/// add the user name printlog "add the user name" UserName.setText sUser '/// check the password required checkbox printlog "check the password required checkbox" PasswordRequired.Check NextBtn.Click FinishBtn.Click Kontext "SpeichernDlg" Dateiname.setText ConvertPath(sFileName) Speichern.click sleep(5) if ( IsMissing(sRegister) ) then printlog "don't register datasource" else printlog "register datasource with name " + sRegister call fRegisterDatabaseFile(ConvertPath(sFilename),sRegister) end if bOK = true if bOK = true then printlog "--- End of function - *** Succeed ***" else warnlog "--- End of function - *** Failed *** Data source was not created" endif fCreateMySQL_JDBC_Datasource = bOK sleep(1) call fCloseDatabase(true) end function '------------------------------------------------------------------------- function fCreateMySQL_native_Datasource(sFileName,sDatabaseName,sHost,sPort,sUser,optional sRegister) as boolean '/// create a new MySQL database via JDBC file with the given filename '///+ and the given URL '/// parameter: '/// sFielName: the file name for the database file '/// sDatabaseName: the name of the mysql database '/// sHost: the host where the mysql database is running '/// sPort: the port where the mysql database is running '/// sUser: the user for the connection '/// optional sRegister: the name under which the database is be registered dim bOK as boolean bOK = FALSE dim sEntry as string ' delete the file if ( app.Dir( ConvertPath(sFileName) ) ) <> "" then app.kill(ConvertPath(sFileName)) endif Kontext "DocumentWriter" if (DocumentWriter.exists(1)) then DocumentWriter.UseMenu else Kontext "DocumentBackground" DocumentBackground.UseMenu endif hMenuSelectNr(1) hMenuSelectNr(1) hMenuSelectNr(5) sleep(4) Kontext "DatabaseWizard" ConnectToDatabase.Check sleep(1) sEntry = hGetDatabaseDisplayName( "sdbc:mysqlc:*" ) 'cut off the (JDBC) string sEntry = Left( sEntry , Instr(sEntry,"(") - 2 ) printlog "entry = " + sEntry DatabaseType.select( sEntry ) sleep(1) NextBtn.Click sleep(1) MySQLnative.Check NextBtn.Click sleep(1) DatabaseWizard.typeKeys("",true) DatabaseWizard.typeKeys(sDatabaseName,true) DatabaseWizard.typeKeys("",true) DatabaseWizard.typeKeys("",true) DatabaseWizard.typeKeys(sHost,true) 'MySQLDatabaseName.setText(sDatabaseName) 'MySQLHostName.setText(sHost) 'MySQLPort.setText(sPort) NextBtn.Click sleep(1) '/// add the user name printlog "add the user name" UserName.setText sUser '/// check the password required checkbox printlog "check the password required checkbox" PasswordRequired.Check NextBtn.Click FinishBtn.Click Kontext "SpeichernDlg" Dateiname.setText ConvertPath(sFileName) Speichern.click sleep(5) if ( IsMissing(sRegister) ) then printlog "don't register datasource" else printlog "register datasource with name " + sRegister call fRegisterDatabaseFile(ConvertPath(sFilename),sRegister) end if bOK = true if bOK = true then printlog "--- End of function - *** Succeed ***" else warnlog "--- End of function - *** Failed *** Data source was not created" endif fCreateMySQL_native_Datasource = bOK sleep(1) call fCloseDatabase(true) end function '------------------------------------------------------------------------- function fCreateAdabasDatasource(sFileName,sURL,sUser, optional sRegister) as boolean '/// create a new adabas database file with the given filename '///+ and the given URL '/// parameter: '/// sFielName: the file name for the database file '/// sURL: the URL for the adabas database '/// sUser: the user for connect '/// optional sRegister: the name under which the database is registered dim bOK as boolean bOK = FALSE try ' delete the file if ( app.Dir( ConvertPath(sFileName) ) ) <> "" then app.kill(ConvertPath(sFileName)) endif Kontext "DocumentWriter" if (DocumentWriter.exists(1)) then DocumentWriter.UseMenu else Kontext "DocumentBackground" DocumentBackground.UseMenu endif hMenuSelectNr(1) hMenuSelectNr(1) hMenuSelectNr(5) sleep(4) Kontext "DatabaseWizard" ConnectToDatabase.Check sleep(1) DatabaseType.select ( hGetDatabaseDisplayName( "sdbc:adabas:*" ) ) sleep(1) NextBtn.Click sleep(1) '/// insert the adabas database name printlog "insert the adabas database name" AdabasDBName.setText("sdbc:adabas:" + sURL) sleep(1) '/// click Next printlog "click Next" NextBtn.Click sleep(1) '/// insert the user printlog "insert the user" UserName.setText sUser PasswordRequired.Check sleep(1) '/// click Next printlog "click Next" NextBtn.Click sleep(1) '/// click finish printlog "click finish" FinishBtn.Click sleep(1) Kontext "SpeichernDlg" Dateiname.setText ConvertPath(sFileName) Speichern.click sleep(1) Kontext "MessageBox" if MessageBox.exists then MessageBox.yes end if sleep(2) ' register the database if ( IsMissing(sRegister) ) then printlog "don't register datasource" else printlog "register datasource with name " + sRegister call fRegisterDatabaseFile(ConvertPath(sFilename),sRegister) end if bOK = true printlog "*** Succeed *** Data source was created" fCreateAdabasDatasource = bOK sleep(1) call fCloseDatabase(true) catch bOk = false warnlog "*** Failed *** Data source was not created" endcatch end function '------------------------------------------------------------------------- function fCreateLocalAdabasDatasource(sFileName,sDatabaseName,sSuperUser,sSuperPassword, optional sRegister) as boolean '/// create a new adabas database file with the given filename '///+ and the given URL '/// parameter: '/// sFielName: the file name for the database file '/// sURL: the URL for the adabas database '/// sUser: the user for connect '/// sPassword: the password for connect '/// optional sRegister: the name under which the database is registered dim bOK as boolean bOK = FALSE ' delete the file if ( app.Dir( ConvertPath(sFileName) ) ) <> "" then app.kill(ConvertPath(sFileName)) endif 'try '/// --- Create new Adabas data source --- printlog "--- Create new adabas data source ---" Kontext "DocumentWriter" if (DocumentWriter.exists(1)) then DocumentWriter.UseMenu else Kontext "DocumentBackground" DocumentBackground.UseMenu endif hMenuSelectNr(1) hMenuSelectNr(1) hMenuSelectNr(5) sleep(4) Kontext "DatabaseWizard" ConnectToDatabase.Check sleep(1) DatabaseType.select ( hGetDatabaseDisplayName( "sdbc:adabas:*" ) ) sleep(1) NextBtn.Click sleep(1) Kontext "DatabaseWizard" AdabasBrowse.Click sleep(1) Kontext "DataSourceSelection" Create.Click sleep(1) Kontext "CreateNewAdabasDatabase" DatabaseName.setText sDatabaseName Administrator.setText sSuperUser AdminPasswordBtn.Click sleep(1) Kontext "PasswordDLG" Password.setText sSuperPassword PasswordConfirm.setText sSuperPassword PasswordDLG.OK Kontext "CreateNewAdabasDatabase" CreateNewAdabasDatabase.OK sleep(10) Kontext "DataSourceSelection" DataSourceSelection.OK Kontext "DatabaseWizard" '/// click Next printlog "click Next" NextBtn.Click sleep(1) '/// click Next printlog "click Next" NextBtn.Click sleep(1) '/// click finish printlog "click finish" FinishBtn.Click sleep(1) Kontext "SpeichernDlg" Dateiname.setText ConvertPath(sFileName) Speichern.click sleep(2) ' register the database if ( IsMissing(sRegister) ) then printlog "don't register datasource" else printlog "register datasource with name " + sRegister call fRegisterDatabaseFile(ConvertPath(sFilename),sRegister) end if bOK = true printlog "*** Succeed *** Data source was created" 'catch bOk = false warnlog "*** Failed *** Data source was not created" 'endcatch fCreateLocalAdabasDatasource = bOK sleep(1) call fCloseDatabase(true) end function '------------------------------------------------------------------------- function fCreateHSQLDatasource(sFileName, optional sRegister) as boolean '/// create a new hsql database file with the given filename '/// parameter: '/// sFielName: the file name for the database file '/// optional sRegister: the name under which the database is registered dim bOK as boolean bOK = FALSE ' delete the file if ( app.Dir( ConvertPath(sFileName) ) ) <> "" then app.kill(ConvertPath(sFileName)) endif try Kontext "DocumentWriter" if (DocumentWriter.exists(1)) then DocumentWriter.UseMenu else Kontext "DocumentBackground" DocumentBackground.UseMenu endif hMenuSelectNr(1) hMenuSelectNr(1) hMenuSelectNr(5) sleep(10) Kontext "DatabaseWizard" CreateNewDatabase.Check sleep(1) NextBtn.Click sleep(1) FinishBtn.Click sleep(1) Kontext "SpeichernDlg" Dateiname.setText ConvertPath(sFileName) Speichern.click sleep(10) Kontext "MessageBox" if MessageBox.exists then MessageBox.yes end if sleep(5) if ( IsMissing(sRegister) ) then printlog "don't register datasource" else printlog "register datasource with name " + sRegister call fRegisterDatabaseFile(ConvertPath(sFilename),sRegister) end if call fCloseDatabase(true) bOK = true catch bOK = false endcatch if bOK = true then printlog "--- End of function - *** Succeed ***" else warnlog "--- End of function - *** Failed *** Data source was not created" endif fCreateHSQLDatasource = bOK sleep(1) end function '------------------------------------------------------------------------- function fCreateJDBCDatasource(sFileName,sDriverClass,sURL,sClassPath,sUserName, optional sRegister) as boolean 'TODO: 'ExitRestartTheOffice ' because the change the classpath wich is only used after a restart 'Printlog "restart the office to make the classpath work" '/// create a new JDBC database file with the given filename '///+ and the given URL '/// parameter: '/// sFileName: the file name for the database file '/// sDatabaseName: the name of the mysql database '/// sHost: the host where the mysql database is running '/// sPort: the port where the mysql database is running '/// sUser: the user for the connection '/// optional sRegister: the name under which the database is be registered dim bOK as boolean bOK = FALSE call fSetJDBCDriverFiles(sClassPath) ' delete the file if ( app.Dir( ConvertPath(sFileName) ) ) <> "" then app.kill(ConvertPath(sFileName)) endif FileOpen "FileName", "private:factory/sdatabase?Interactive" , "FrameName", "_blank" , "SynchronMode" ,True Kontext "SpeichernDlg" Dateiname.setText ConvertPath(sFileName) Speichern.click sleep(1) Kontext "MessageBox" if MessageBox.exists then MessageBox.yes end if sleep(5) Kontext "TabGeneral" DatabaseType.Select "JDBC" sleep(1) Kontext "ConnectionType" NextBtn.Click Kontext "TabConnection" '/// add the URL printlog "add the URL" ConnectURL.setText "jdbc:" + sURL '/// add the user name printlog "add the user name" UserName.setText sUserName '/// check the password required checkbox printlog "check the password required checkbox" PasswordRequired.Check JDBCDriverClass.setText sDriverClass Kontext "ConnectionType" CreateBtn.Click sleep(5) if ( IsMissing(sRegister) ) then printlog "don't register datasource" else printlog "register datasource with name " + sRegister call fRegisterDatabaseFile(ConvertPath(sFilename),sRegister) end if bOK = true if bOK = true then printlog "--- End of function - *** Succeed ***" else warnlog "--- End of function - *** Failed *** Data source was not created" endif fCreateJDBCDatasource = bOK sleep(1) call fCloseDatabase(true) end function '------------------------------------------------------------------------- function fCreateODBCDatasource(sDSName,sUser,sPassword) as boolean qaerrorlog "not implemented yet" fCreateODBCDatasource = false end function '------------------------------------------------------------------------- function fCreateDbaseDatasource(sFileName,sURL, optional sRegister) as boolean '/// create a new dbase database file with the given filename '///+ and the given URL as dbase path '/// parameter: '/// sFielName: the file name for the database file '/// sURL: the dbase path for the database '/// optional bRegister: if true the register the database with the name tt_dBase dim bOK as boolean bOK = FALSE ' delete the file if ( app.Dir( ConvertPath(sFileName) ) ) <> "" then app.kill(ConvertPath(sFileName)) endif Kontext "DocumentWriter" if (DocumentWriter.exists(1)) then DocumentWriter.UseMenu else Kontext "DocumentBackground" DocumentBackground.UseMenu endif hMenuSelectNr(1) hMenuSelectNr(1) hMenuSelectNr(5) sleep(4) Kontext "DatabaseWizard" ConnectToDatabase.Check sleep(1) DatabaseType.select ( hGetDatabaseDisplayName( "sdbc:dbase:*" ) ) sleep(1) NextBtn.Click sleep(1) dBasePath.setText "sdbc:dbase:" + ConvertPath(sURL) sleep(1) FinishBtn.Click sleep(1) Kontext "SpeichernDlg" Dateiname.setText ConvertPath(sFileName) Speichern.click sleep(2) if ( IsMissing(sRegister) ) then printlog "don't register datasource" else printlog "register datasource with name " + sRegister call fRegisterDatabaseFile(sFileName,sRegister) end if bOK = true 'if bOK = true then ' printlog "--- End of function - *** Succeed ***"' 'else ' warnlog "--- End of function - *** Failed *** Data source was not created" 'endif fCreatedBaseDatasource = bOK sleep(1) call fClosedatabase(true) end function '------------------------------------------------------------------------- function fCreateADODatasource(sFileName,sURL,optional sRegister) as boolean '/// create a new ADO database file with the given filename '///+ and the given URL as dbase path '/// parameter: '/// sFielName: the file name for the database file '/// sURL: the ADO url '/// optional sRegister: if set, the database is registed under the given name dim bOK as boolean bOK = FALSE ' delete the file if ( app.Dir( ConvertPath(sFileName) ) ) <> "" then app.kill(ConvertPath(sFileName)) endif Kontext "DocumentWriter" if (DocumentWriter.exists(1)) then DocumentWriter.UseMenu else Kontext "DocumentBackground" DocumentBackground.UseMenu endif hMenuSelectNr(1) hMenuSelectNr(1) hMenuSelectNr(5) sleep(4) Kontext "DatabaseWizard" ConnectToDatabase.Check sleep(1) DatabaseType.select ( hGetDatabaseDisplayName( "sdbc:ado:*" ) ) sleep(1) NextBtn.Click sleep(1) '/// add the URL printlog "add the URL " + sURL AdoURL.setText "sdbc:ado:" + sURL sleep(1) FinishBtn.Click sleep(1) Kontext "SpeichernDlg" Dateiname.setText ConvertPath(sFileName) Speichern.click sleep(5) if ( IsMissing(sRegister) ) then printlog "don't register datasource" else printlog "register datasource with name " + sRegister call fRegisterDatabaseFile(sFileName,sRegister) end if bOK = true if bOK = true then printlog "--- End of function - *** Succeed ***" else warnlog "--- End of function - *** Failed *** Data source was not created" endif fCreateADODatasource = bOK sleep(1) call fClosedatabase(true) end function '------------------------------------------------------------------------- function fCreateTextDatasource(sFileName,sURL, optional sRegister) as boolean '/// create a new text database file with the given filename '///+ and the given URL as dbase path '/// parameter: '/// sFielName: the file name for the database file '/// sURL: the Text url '/// optional sRegister: if set, the database is registed under the given name Dim bOK as boolean bOK = false '/// --- Create new Text data source --- printlog "--- Create new " + sFileName + " data source ---" printlog "--- with the URL " + sURL + " ---" Kontext "DocumentWriter" if (DocumentWriter.exists(1)) then DocumentWriter.UseMenu else Kontext "DocumentBackground" DocumentBackground.UseMenu endif hMenuSelectNr(1) hMenuSelectNr(1) hMenuSelectNr(5) sleep(4) Kontext "DatabaseWizard" ConnectToDatabase.Check sleep(1) DatabaseType.select ( hGetDatabaseDisplayName( "sdbc:flat:*" ) ) sleep(1) NextBtn.Click sleep(1) TextPath.setText "sdbc:flat:" + ConvertPath(sURL) sleep(1) FinishBtn.Click sleep(1) Kontext "SpeichernDlg" Dateiname.setText ConvertPath(sFileName) Speichern.click sleep(1) Kontext "MessageBox" if MessageBox.exists then MessageBox.yes end if sleep(5) if ( IsMissing(sRegister) ) then printlog "don't register datasource" else printlog "register datasource with name " + sRegister call fRegisterDatabaseFile(sFileName,sRegister) end if bOK = true if bOK = true then printlog "--- End of function - *** Succeed ***" else warnlog "--- End of function - *** Failed *** Data source was not created" endif fCreateTextDatasource = bOK sleep(1) call fClosedatabase(true) end function '------------------------------------------------------------------------- function fCreateSpreadsheetDatasource(sFileName,sURL, optional sRegister) as boolean '/// create a new spreadsheet database file with the given filename '///+ and the given URL as dbase path '/// parameter: '/// sFielName: the file name for the database file '/// sURL: the spreadsheet file name '/// optional bRegister: if true the register the database with the given name dim bOK as boolean bOK = FALSE ' delete the file if ( app.Dir( ConvertPath(sFileName) ) ) <> "" then app.kill(ConvertPath(sFileName)) endif Kontext "DocumentWriter" if (DocumentWriter.exists(1)) then DocumentWriter.UseMenu else Kontext "DocumentBackground" DocumentBackground.UseMenu endif hMenuSelectNr(1) hMenuSelectNr(1) hMenuSelectNr(5) sleep(4) Kontext "DatabaseWizard" ConnectToDatabase.Check sleep(1) DatabaseType.Select (hGetDatabaseDisplayName( "sdbc:calc:*" )) sleep(1) NextBtn.Click sleep(1) '/// add the URL printlog "add the URL" SpreadsheetPath.setText "sdbc:calc:" + ConvertPath(sURL) sleep(1) '/// click finish printlog "click finish" FinishBtn.Click sleep(1) Kontext "SpeichernDlg" Dateiname.setText ConvertPath(sFileName) Speichern.click sleep(1) Kontext "MessageBox" if MessageBox.exists then MessageBox.yes end if sleep(2) if ( IsMissing(sRegister) ) then printlog "don't register datasource" else printlog "register datasource with name " + sRegister call fRegisterDatabaseFile(sFileName,sRegister) end if bOK = true if bOK = true then printlog "--- End of function - *** Succeed ***" else warnlog "--- End of function - *** Failed *** Data source was not created" endif fCreateSpreadsheetDatasource = bOK sleep(1) call fClosedatabase(true) end function '------------------------------------------------------------------------- function fCreateLDAPAddressbookDatasource(sFileName,sHostName,sBaseDN,sPortNr,optional sRegister) as boolean '/// create a new LDAP Addressbook database with the given filename '/// parameter: '/// sFileName: the file name for the database file '/// optional sRegister: if true then register the database dim bOK as boolean bOK = FALSE ' try ' delete the file if ( app.Dir( ConvertPath(sFileName) ) ) <> "" then app.kill(ConvertPath(sFileName)) endif Kontext "DocumentWriter" if (DocumentWriter.exists(1)) then DocumentWriter.UseMenu else Kontext "DocumentBackground" DocumentBackground.UseMenu endif hMenuSelectNr(1) hMenuSelectNr(1) hMenuSelectNr(5) sleep(4) Kontext "DatabaseWizard" ConnectToDatabase.Check sleep(1) DatabaseType.select ( hGetDatabaseDisplayName( "sdbc:address:ldap:*" ) ) sleep(1) NextBtn.Click sleep(1) LDAPHostName.setText sHostName sleep(1) BaseDN.setText(sBaseDN) sleep(1) FinishBtn.Click sleep(1) Kontext "SpeichernDlg" Dateiname.setText ConvertPath(sFileName) Speichern.click sleep(1) Kontext "MessageBox" if MessageBox.exists then MessageBox.yes end if sleep(5) if ( IsMissing(sRegister) ) then printlog "don't register datasource" else printlog "register datasource with name " + sRegister call fRegisterDatabaseFile(sFileName,sRegister) end if printlog "*** Succeed *** Data source was created" bOK = true ' catch ' warnlog "*** Failed *** Data source was not created" ' bOK = false ' endcatch fCreateLDAPAddressbookDatasource = bOK sleep(1) call fClosedatabase(true) end function '------------------------------------------------------------------------- function fCreateEvolutionAddressbookDatasource(sFileName, optional sRegister) as boolean '/// create a new Evolution Addressbook database with the given filename '/// parameter: '/// sFielName: the file name for the database file '/// optional sRegister: if true then register the database dim bOK as boolean bOK = FALSE try ' delete the file if ( app.Dir( ConvertPath(sFileName) ) ) <> "" then app.kill(ConvertPath(sFileName)) endif Kontext "DocumentWriter" if (DocumentWriter.exists(1)) then DocumentWriter.UseMenu else Kontext "DocumentBackground" DocumentBackground.UseMenu endif hMenuSelectNr(1) hMenuSelectNr(1) hMenuSelectNr(5) sleep(4) Kontext "DatabaseWizard" ConnectToDatabase.Check sleep(1) DatabaseType.select ( hGetDatabaseDisplayName( "sdbc:address:evolution:ldap" ) ) sleep(1) NextBtn.Click sleep(1) '/// click finish printlog "click finish" FinishBtn.Click sleep(1) Kontext "SpeichernDlg" Dateiname.setText ConvertPath(sFileName) Speichern.click sleep(1) Kontext "MessageBox" if MessageBox.exists then MessageBox.yes end if sleep(2) if ( IsMissing(sRegister) ) then printlog "don't register datasource" else printlog "register datasource with name " + sRegister call fRegisterDatabaseFile(sFileName,sRegister) end if call fClosedatabase(true) printlog "*** Succeed *** Data source was created" bOK = true catch warnlog "*** Failed *** Data source was not created" bOK = false endcatch fCreateEvolutionAddressbookDatasource = bOK sleep(1) end function '------------------------------------------------------------------------- function fCreateKDEAddressbookDatasource(sFileName , optional sRegister) as boolean '/// create a new KDE Addressbook database with the given filename '/// parameter: '/// sFileName: the file name for the database file '/// optional sRegister: if true then register the database dim bOK as boolean bOK = FALSE try ' delete the file if ( app.Dir( ConvertPath(sFileName) ) ) <> "" then app.kill(ConvertPath(sFileName)) endif Kontext "DocumentWriter" if (DocumentWriter.exists(1)) then DocumentWriter.UseMenu else Kontext "DocumentBackground" DocumentBackground.UseMenu endif hMenuSelectNr(1) hMenuSelectNr(1) hMenuSelectNr(5) sleep(4) Kontext "DatabaseWizard" ConnectToDatabase.Check sleep(1) DatabaseType.select ( hGetDatabaseDisplayName( "sdbc:address:kab" ) ) sleep(1) NextBtn.Click sleep(1) '/// click finish printlog "click finish" FinishBtn.Click sleep(1) Kontext "SpeichernDlg" Dateiname.setText ConvertPath(sFileName) Speichern.click sleep(1) Kontext "MessageBox" if MessageBox.exists then MessageBox.yes end if sleep(2) if ( IsMissing(sRegister) ) then printlog "don't register datasource" else printlog "register datasource with name " + sRegister call fRegisterDatabaseFile(sFileName,sRegister) end if call fClosedatabase(true) printlog "*** Succeed *** Data source was created" bOK = true catch warnlog "*** Failed *** Data source was not created" bOK = false endcatch fCreateKDEAddressbookDatasource = bOK sleep(1) end function '------------------------------------------------------------------------- function fCreateWindowsAddressbookDatasource(sFileName , optional sRegister) as boolean '/// create a new Windows Addressbook database with the given filename '/// parameter: '/// sFileName: the file name for the database file '/// optional sRegister: if true then register the database dim bOK as boolean bOK = FALSE try ' delete the file if ( app.Dir( ConvertPath(sFileName) ) ) <> "" then app.kill(ConvertPath(sFileName)) endif Kontext "DocumentWriter" if (DocumentWriter.exists(1)) then DocumentWriter.UseMenu else Kontext "DocumentBackground" DocumentBackground.UseMenu endif hMenuSelectNr(1) hMenuSelectNr(1) hMenuSelectNr(5) sleep(4) Kontext "DatabaseWizard" ConnectToDatabase.Check sleep(1) DatabaseType.select ( hGetDatabaseDisplayName( "sdbc:address:outlookexp" ) ) sleep(1) NextBtn.Click sleep(1) '/// click finish printlog "click finish" FinishBtn.Click sleep(1) Kontext "SpeichernDlg" Dateiname.setText ConvertPath(sFileName) Speichern.click sleep(1) Kontext "MessageBox" if MessageBox.exists then MessageBox.yes end if sleep(2) if ( IsMissing(sRegister) ) then printlog "don't register datasource" else printlog "register datasource with name " + sRegister call fRegisterDatabaseFile(sFileName,sRegister) end if call fClosedatabase(true) printlog "*** Succeed *** Data source was created" bOK = true catch warnlog "*** Failed *** Data source was not created" bOK = false endcatch fCreateWindowsAddressbookDatasource = bOK sleep(1) end function '------------------------------------------------------------------------- function fCreateOutlookAddressbookDatasource(sFileName, optional sRegister) as boolean '/// create a new Outlook Addressbook database with the given filename '/// parameter: '/// sFileName: the file name for the database file '/// optional sRegister: if true then register the database dim bOK as boolean bOK = FALSE try ' delete the file if ( app.Dir( ConvertPath(sFileName) ) ) <> "" then app.kill(ConvertPath(sFileName)) endif Kontext "DocumentWriter" if (DocumentWriter.exists(1)) then DocumentWriter.UseMenu else Kontext "DocumentBackground" DocumentBackground.UseMenu endif hMenuSelectNr(1) hMenuSelectNr(1) hMenuSelectNr(5) sleep(4) Kontext "DatabaseWizard" ConnectToDatabase.Check sleep(1) DatabaseType.select ( hGetDatabaseDisplayName( "sdbc:address:outlook" ) ) sleep(1) NextBtn.Click sleep(1) '/// click finish printlog "click finish" FinishBtn.Click sleep(1) Kontext "SpeichernDlg" Dateiname.setText ConvertPath(sFileName) Speichern.click sleep(1) Kontext "MessageBox" if MessageBox.exists then MessageBox.yes end if sleep(2) if ( IsMissing(sRegister) ) then printlog "don't register datasource" else printlog "register datasource with name " + sRegister call fRegisterDatabaseFile(sFileName,sRegister) end if call fClosedatabase(true) printlog "*** Succeed *** Data source was created" bOK = true catch warnlog "*** Failed *** Data source was not created" bOK = false endcatch fCreateOutlookAddressbookDatasource = bOK sleep(1) end function '------------------------------------------------------------------------- function fCreateMozillaAddressbookDatasource(sFileName, optional sRegister) as boolean '/// create a new mozilla addressbook database file with the given filename '/// parameter: '/// sFielName: the file name for the database file '/// optional sRegister: the name under which the database is registered dim bOK as boolean bOK = FALSE try ' delete the file if ( app.Dir( ConvertPath(sFileName) ) ) <> "" then app.kill(ConvertPath(sFileName)) endif Kontext "DocumentWriter" if (DocumentWriter.exists(1)) then DocumentWriter.UseMenu else Kontext "DocumentBackground" DocumentBackground.UseMenu endif hMenuSelectNr(1) hMenuSelectNr(1) hMenuSelectNr(5) sleep(4) Kontext "DatabaseWizard" ConnectToDatabase.Check sleep(1) DatabaseType.select ( hGetDatabaseDisplayName( "sdbc:address:mozilla:" ) ) sleep(1) NextBtn.Click sleep(1) '/// click finish printlog "click finish" FinishBtn.Click sleep(1) Kontext "SpeichernDlg" Dateiname.setText ConvertPath(sFileName) Speichern.click sleep(1) Kontext "MessageBox" if MessageBox.exists then MessageBox.yes end if sleep(2) if ( IsMissing(sRegister) ) then printlog "don't register datasource" else printlog "register datasource with name " + sRegister call fRegisterDatabaseFile(sFileName,sRegister) end if printlog "*** Succeed *** Data source was created" bOK = true call fClosedatabase(true) catch qaerrorlog "*** Failed *** Data source was not created" bOK = false endcatch fCreateMozillaAddressbookDatasource = bOK sleep(1) end function '-------------------------------------------------------------------- function fRegisterDatabaseFile( sFileName, sName) '/// register a database '/// parameter: '/// sFielName: the file name for the database file '/// sName: The name under which the database is registered dim i as integer ToolsOptions call hToolsOptions ( "Datasources", "Databases" ) '/// remove registration if exists Kontext "TabRegisteredDatabase" for i = 1 to RegisteredDatabases.GetItemCount RegisteredDatabases.select i if RegisteredDatabases.getSeltext() = sName then DeleteBtn.Click Kontext "Active" Active.yes exit for endif next Kontext "TabRegisteredDatabase" NewBtn.Click sleep(1) Kontext "CreateDatabaseLink" RegisteredName.setText(sName) DatabaseFile.setText(sFileName) CreateDatabaseLink.OK sleep(1) Kontext "OptionenDlg" OptionenDlg.OK end function '-------------------------------------------------------------------- function fDeRegisterDatabaseFile( sName) '/// deregister a database '/// parameter: '/// sName: The registered name which should be deregistered dim i as integer ToolsOptions call hToolsOptions ( "Datasources", "Databases" ) '/// remove registration for the database printlog "remove registration for the database " + sName Kontext "TabRegisteredDatabase" for i = 1 to RegisteredDatabases.GetItemCount RegisteredDatabases.select i if RegisteredDatabases.getSeltext() = sName then DeleteBtn.Click exit for endif next try Kontext "Active" Active.yes catch endcatch sleep(1) Kontext "OptionenDlg" OptionenDlg.OK end function '------------------------------------------------------------------------- function fSetJDBCDriverFiles(sClassPath) as boolean '/// set the java classpath '/// parameter: '/// sClassPath: The Classpath Dim x_DriverInstall as boolean x_DriverInstall = FALSE call hNewDocument printlog "insert classpath: " + sClassPath ToolsOptions call hToolsOptions ( "StarOffice", "JAVA" ) Kontext "TabJava" ClassPath.Click sleep(1) Kontext "JavaClassPath" AddArchive.Click sleep(1) Kontext "GeneralFileDialog" Dateiname.setText ConvertPath(sClassPath) Auswaehlen.Click sleep(1) '/// if the class file allready exists a messages box pops up Kontext "MessageBox" if ( MessageBox.exists(3) ) then MessageBox.OK end if Kontext "JavaClassPath" JavaClassPath.OK Kontext "MessageBox" if ( MessageBox.exists(3) ) then MessageBox.OK end if Kontext "OptionenDlg" OptionenDlg.OK call hCloseDocument end function '------------------------------------------------------------------------- function hGetInstalledDatabaseDrivers( dbDriverList() as string ) as integer ' This function returns the number of currently installed database drivers. ' Additionally it fills a given list (which should be large enough to hold ' the names of all installed drivers) with the url and makes the list ' compatible to the listfunctions (which places the list size in element 0) ' The list is platform dependent and might be locale dependent ' Note that some drivers (like e.g. HSQL Database Engine) do *not* show up ' in the Database Wizards listbox! dim oUnoOfficeConnection as object dim oUnoConfigurationAccess as object dim aPropertyValue(1) as new com.sun.star.beans.PropertyValue dim xViewRoot as object dim aElements() as string dim iCurrentDriver as integer dim iDriverCount as integer const CFN = "dbaccess::tools::dbcreatetools.inc::hGetInstalledDatabaseDrivers(): " ' Path to the node, searches all files below "Drivers" for "Installed" aPropertyValue( 0 ).Name = "nodepath" aPropertyValue( 0 ).Value = "org.openoffice.Office.DataAccess.Drivers/Installed" ' Connect to remote UNO oUnoOfficeConnection = hGetUnoService( TRUE ) if ( isNull( oUnoOfficeConnection )) then warnlog( CFN & "Failed to establish UNO connection, hGetUnoService failed" ) hGetInstalledDatabaseDrivers() = 0 else ' Get a configuration provider oUnoConfigurationAccess = oUnoOfficeConnection.createInstance( "com.sun.star.configuration.ConfigurationProvider" ) ' Get access xViewRoot = oUnoConfigurationAccess.createInstanceWithArguments( "com.sun.star.configuration.ConfigurationAccess", aPropertyValue() ) aElements() = xViewRoot.getElementNames() iDriverCount = ubound( aElements() ) dbDriverList( 0 ) = iDriverCount for iCurrentDriver = 1 to iDriverCount dbDriverList( iCurrentDriver ) = aElements( iCurrentDriver ) next iCurrentDriver endif if ( GVERBOSE ) then printlog( CFN & "Returning " & iDriverCount & " drivers" ) endif hGetInstalledDatabaseDrivers() = iDriverCount end function '------------------------------------------------------------------------- function hGetDatabaseDisplayName( dbDriverURL as string ) as string ' The xcu files (based on dev300m47) hold following driver definitions ' which are used as parameter to this function. You get a plain text ' localized driver name as returnvalue which can be used directly to select ' a driver in the Database Wizard. ' adabas.xcu: "sdbc:adabas:*" ' calc.xcu: "sdbc:calc:*" ' dbase.xcu: "sdbc:dbase:*" ' evoab.xcu: "sdbc:address:evolution:ldap" ' evoab.xcu: "sdbc:address:evolution:groupwise" ' flat.xcu: "sdbc:flat:*" ' ado.xcu: "sdbc:ado:*" ' hsqldb.xcu: "sdbc:embedded:hsqldb" ' kab.xcu: "sdbc:address:kab" ' mozab.xcu: "sdbc:address:outlook" ' mozab.xcu: "sdbc:address:outlookexp" ' mozab.xcu: "sdbc:address:mozilla:" ' mozab.xcu: "sdbc:address:thunderbird:" ' mozab.xcu: "sdbc:address:ldap:*" ' mysql.xcu: "sdbc:mysql:jdbc:*" ' mysql.xcu: "sdbc:mysql:odbc:*" ' odbc.xcu: "sdbc:odbc:*" ' jdbc.xcu: "jdbc:*" ' jdbc.xcu: "jdbc:oracle:thin:*" ' mysql.xcu: "sdbc:mysql:jdbc:*" ' Note that some drivers (like e.g. HSQL Database Engine) do *not* show up ' in the Database Wizards listbox! dim oUnoOfficeConnection as object dim oUnoConfigurationAccess as object dim aPropertyValue(1) as new com.sun.star.beans.PropertyValue dim oConfig as object dim oDriver as object dim sDatabaseName as string const CFN = "dbaccess::tools::dbcreatetools.inc::hGetDatabaseDisplayName(): " ' Path to the node, searches all files below "Drivers" for "Installed" aPropertyValue( 0 ).Name = "nodepath" aPropertyValue( 0 ).Value = "org.openoffice.Office.DataAccess.Drivers/Installed/" ' Connect to remote UNO oUnoOfficeConnection = hGetUnoService( TRUE ) if ( isNull( oUnoOfficeConnection )) then warnlog( CFN & "Failed to establish UNO connection, hGetUnoService failed" ) sDatabaseName = "" else ' Get a configuration provider oUnoConfigurationAccess = oUnoOfficeConnection.createInstance( "com.sun.star.configuration.ConfigurationProvider" ) ' Get access oConfig = oUnoConfigurationAccess.createInstanceWithArguments( "com.sun.star.configuration.ConfigurationAccess", aPropertyValue() ) try oDriver = oConfig.getByName( dbDriverURL ) sDatabaseName = oDriver.getByName( "DriverTypeDisplayName" ) catch warnlog( CFN & "Invalid driver or driver unsupported on this platform" ) sDatabaseName "" endcatch endif if ( GVERBOSE ) then printlog( CFN & "Database display string: " & sDatabaseName ) endif hGetDataBaseDisplayName() = sDatabaseName end function '------------------------------------------------------------------------- function isDriverInstalled( dbDriverURL as string ) as string ' This function return true or false if a driver for a given URL is installed Dim myDriverList(20) as string Dim i as integer Dim sDriver as string Dim breturn as boolean breturn = false const CFN = "dbaccess::tools::dbcreatetools.inc::isDriverInstalled(): " if VERBOSE then printlog CFN printlog "url to search for : " + dbDriverURL endif hGetInstalledDatabaseDrivers( myDriverList() ) for i = 1 to ubound(myDriverList) sDriver = myDriverList(i) if VERBOSE then printlog "found url : " + sDriver endif if sDriver = dbDriverURL then breturn = true endif next isDriverInstalled = breturn end function