wizards/source/scriptforge/SF_UI.xba             |   36 ++++++++++++++++++-----
 wizards/source/scriptforge/python/scriptforge.py |    5 +--
 2 files changed, 32 insertions(+), 9 deletions(-)

New commits:
commit 8467a8e0587011269e376a65a0e397e096a36cc5
Author:     Jean-Pierre Ledure <[email protected]>
AuthorDate: Tue Jun 22 15:50:06 2021 +0200
Commit:     Jean-Pierre Ledure <[email protected]>
CommitDate: Tue Jun 22 18:10:01 2021 +0200

    ScriptForge - (SF_UI) CreateBaseDocument() new CalcFileName argument
    
    Syntax of CreateBaseDocument() becomes
       FileName, [EmbeddedDatabase=HSQLDB|FIREBIRD|CALC],
       [RegistrationName=""], [CalcFileName]
    
    Only when EmbedddedDatabase = "CALC", the new argument CalcFileName
    represents the file containing the tables as Calc sheets.
    The file must exist or an error is raised.
    
    Example:
        Dim myBase As Object, myCalcBase As Object
        Set myBase = ui.CreateBaseDocument("C:\Databases\MyBaseFile.odb", 
"FIREBIRD")
        Set myCalcBase = 
ui.CreateBaseDocument("C:\Databases\MyCalcBaseFile.odb", _
            "CALC", , "C:\Databases\MyCalcFile.ods")
    
    Both Basic and Python are supported.
    
    Change-Id: I9912b110dcec12fe451a47abb61ab143fb543b94
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117665
    Tested-by: Jean-Pierre Ledure <[email protected]>
    Tested-by: Jenkins
    Reviewed-by: Jean-Pierre Ledure <[email protected]>

diff --git a/wizards/source/scriptforge/SF_UI.xba 
b/wizards/source/scriptforge/SF_UI.xba
index 07108c5fe438..4c9907ec39e3 100644
--- a/wizards/source/scriptforge/SF_UI.xba
+++ b/wizards/source/scriptforge/SF_UI.xba
@@ -42,6 +42,7 @@ Const DOCUMENTERROR                           =       
&quot;DOCUMENTERROR&quot;                               &apos;  Requested 
document
 Const DOCUMENTCREATIONERROR            =       
&quot;DOCUMENTCREATIONERROR&quot;               &apos;  Incoherent arguments, 
new document could not be created
 Const DOCUMENTOPENERROR                        =       
&quot;DOCUMENTOPENERROR&quot;                   &apos;  Document could not be 
opened, check the arguments
 Const BASEDOCUMENTOPENERROR            =       
&quot;BASEDOCUMENTOPENERROR&quot;               &apos;  Id. for Base document
+Const UNKNOWNFILEERROR                 =       &quot;UNKNOWNFILEERROR&quot;    
                &apos;  Calc datasource does not exist
 
 REM ============================================================= PRIVATE 
MEMBERS
 
@@ -207,20 +208,27 @@ REM 
----------------------------------------------------------------------------
 Public Function CreateBaseDocument(Optional ByVal FileName As Variant _
                                                        , Optional ByVal 
EmbeddedDatabase As Variant _
                                                        , Optional ByVal 
RegistrationName As Variant _
+                                                       , Optional ByVal 
CalcFileName As Variant _
                                                        ) As Object
 &apos;&apos;&apos; Create a new LibreOffice Base document embedding an empty 
database of the given type
 &apos;&apos;&apos;     Args:
 &apos;&apos;&apos;             FileName: Identifies the file to create. It 
must follow the SF_FileSystem.FileNaming notation
 &apos;&apos;&apos;                     If the file already exists, it is 
overwritten without warning
-&apos;&apos;&apos;             EmbeddedDatabase: either &quot;HSQLDB&quot; 
(default) or &quot;FIREBIRD&quot;
+&apos;&apos;&apos;             EmbeddedDatabase: either &quot;HSQLDB&quot; 
(default) or &quot;FIREBIRD&quot; or &quot;CALC&quot;
 &apos;&apos;&apos;             RegistrationName: the name used to store the 
new database in the databases register
 &apos;&apos;&apos;                     If &quot;&quot; (default), no 
registration takes place
 &apos;&apos;&apos;                     If the name already exists it is 
overwritten without warning
+&apos;&apos;&apos;             CalcFileName: only when EmbedddedDatabase = 
&quot;CALC&quot;, the name of the file containing the tables as Calc sheets
+&apos;&apos;&apos;                     The name of the file must be given in 
SF_FileSystem.FileNaming notation
+&apos;&apos;&apos;                     The file must exist
 &apos;&apos;&apos;     Returns:
 &apos;&apos;&apos;              A SFDocuments.SF_Document object or one of its 
subclasses
+&apos;&apos;&apos;     Exceptions
+&apos;&apos;&apos;             UNKNOWNFILEERROR                                
Calc datasource does not exist
 &apos;&apos;&apos;     Examples:
-&apos;&apos;&apos;             Dim myBase As Object
+&apos;&apos;&apos;             Dim myBase As Object, myCalcBase As Object
 &apos;&apos;&apos;             Set myBase = 
ui.CreateBaseDocument(&quot;C:\Databases\MyBaseFile.odb&quot;, 
&quot;FIREBIRD&quot;)
+&apos;&apos;&apos;             Set myCalcBase = 
ui.CreateBaseDocument(&quot;C:\Databases\MyCalcBaseFile.odb&quot;, 
&quot;CALC&quot;, , &quot;C:\Databases\MyCalcFile.ods&quot;)
 
 Dim oCreate As Variant                         &apos;  Return value
 Dim oDBContext As Object                       &apos;  
com.sun.star.sdb.DatabaseContext
@@ -230,27 +238,38 @@ Dim sFileName As String                           &apos;  
Alias of FileName
 Dim FSO As Object                                      &apos;  Alias for 
FileSystem service
 Const cstDocType = &quot;private:factory/s&quot;
 Const cstThisSub = &quot;UI.CreateBaseDocument&quot;
-Const cstSubArgs = &quot;FileName, 
[EmbeddedDatabase=&quot;&quot;HSQLDB&quot;&quot;|&quot;&quot;FIREBIRD&quot;&quot;],
 [RegistrationName=&quot;&quot;&quot;&quot;]&quot;
+Const cstSubArgs = &quot;FileName, 
[EmbeddedDatabase=&quot;&quot;HSQLDB&quot;&quot;|&quot;&quot;FIREBIRD&quot;&quot;|&quot;&quot;CALC&quot;&quot;],
 [RegistrationName=&quot;&quot;&quot;&quot;], [CalcFileName]&quot;
 
        If SF_Utils._ErrorHandling() Then On Local Error GoTo Catch
        Set oCreate = Nothing
+       Set FSO = CreateScriptService(&quot;FileSystem&quot;)
 
 Check:
        If IsMissing(EmbeddedDatabase) Or IsEmpty(EmbeddedDatabase) Then 
EmbeddedDatabase = &quot;HSQLDB&quot;
        If IsMissing(RegistrationName) Or IsEmpty(RegistrationName) Then 
RegistrationName = &quot;&quot;
+       If IsMissing(CalcFileName) Or IsEmpty(CalcFileName) Then CalcFileName = 
&quot;&quot;
        If SF_Utils._EnterFunction(cstThisSub, cstSubArgs) Then
                If Not SF_Utils._ValidateFile(FileName, &quot;FileName&quot;) 
Then GoTo Finally
-               If Not SF_Utils._Validate(EmbeddedDatabase, 
&quot;EmbeddedDatabase&quot;, V_STRING, Array(&quot;HSQLDB&quot;, 
&quot;FIREBIRD&quot;)) Then GoTo Finally
+               If Not SF_Utils._Validate(EmbeddedDatabase, 
&quot;EmbeddedDatabase&quot;, V_STRING, Array(&quot;CALC&quot;, 
&quot;HSQLDB&quot;, &quot;FIREBIRD&quot;)) Then GoTo Finally
                If Not SF_Utils._Validate(RegistrationName, 
&quot;RegistrationName&quot;, V_STRING) Then GoTo Finally
+               If UCase(EmbeddedDatabase) = &quot;CALC&quot; Then
+                       If Not SF_Utils._ValidateFile(CalcFileName, 
&quot;CalcFileName&quot;) Then GoTo Finally
+                       If Not FSO.FileExists(CalcFileName) Then GoTo 
CatchNotExists
+               End If
        End If
 
 Try:
        Set oDBContext = SF_Utils._GetUNOService(&quot;DatabaseContext&quot;)
        With oDBContext
                Set oDatabase = .createInstance()
-               oDatabase.URL = &quot;sdbc:embedded:&quot; &amp; 
LCase(EmbeddedDatabase)
+               &apos;  Build the url link to the database
+               Select Case UCase(EmbeddedDatabase)
+                       Case &quot;HSQLDB&quot;, &quot;FIREBIRD&quot;
+                               oDatabase.URL = &quot;sdbc:embedded:&quot; 
&amp; LCase(EmbeddedDatabase)
+                       Case &quot;CALC&quot;
+                               oDatabase.URL = &quot;sdbc:calc:&quot; &amp; 
FSO._ConvertToUrl(CalcFileName)
+               End Select
                &apos;  Create empty Base document
-               Set FSO = CreateScriptService(&quot;FileSystem&quot;)
                sFileName = FSO._ConvertToUrl(FileName)
                &apos;  An existing file is overwritten without warning
                If FSO.FileExists(FileName) Then FSO.DeleteFile(FileName)
@@ -274,6 +293,9 @@ Finally:
        Exit Function
 Catch:
        GoTo Finally
+CatchNotExists:
+       SF_Exception.RaiseFatal(UNKNOWNFILEERROR, &quot;CalcFileName&quot;, 
CalcFileName)
+       GoTo Finally
 End Function    &apos;   ScriptForge.SF_UI.CreateBaseDocument
 
 REM 
-----------------------------------------------------------------------------
@@ -1196,4 +1218,4 @@ Private Function _Repr() As String
 End Function   &apos;  ScriptForge.SF_UI._Repr
 
 REM ============================================ END OF SCRIPTFORGE.SF_UI
-</script:module>
+</script:module>
\ No newline at end of file
diff --git a/wizards/source/scriptforge/python/scriptforge.py 
b/wizards/source/scriptforge/python/scriptforge.py
index d94a7781cb97..57a67a0c9c3d 100644
--- a/wizards/source/scriptforge/python/scriptforge.py
+++ b/wizards/source/scriptforge/python/scriptforge.py
@@ -1472,8 +1472,9 @@ class SFScriptForge:
         def Activate(self, windowname = ''):
             return self.ExecMethod(self.vbMethod, 'Activate', windowname)
 
-        def CreateBaseDocument(self, filename, embeddeddatabase = 'HSQLDB', 
registrationname = ''):
-            return self.ExecMethod(self.vbMethod, 'CreateBaseDocument', 
filename, embeddeddatabase, registrationname)
+        def CreateBaseDocument(self, filename, embeddeddatabase = 'HSQLDB', 
registrationname = '', calcfilename = ''):
+            return self.ExecMethod(self.vbMethod, 'CreateBaseDocument', 
filename, embeddeddatabase, registrationname,
+                                   calcfilename)
 
         def CreateDocument(self, documenttype = '', templatefile = '', hidden 
= False):
             return self.ExecMethod(self.vbMethod, 'CreateDocument', 
documenttype, templatefile, hidden)
_______________________________________________
Libreoffice-commits mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to