Datacontext voor directories: een voorbeeld (met in groen hoe het er uit ziet in het configuratie/settings bestand)
De code
dim bOk as boolean
We leggen bv eerst vast hoe onze dirset gaat heten*:
bOk = newDirSet("Export")
[DirSet]
Export = ""
Best een beschrijving geven om uit te leggen wat hiermee moet gebeuren:
updDirSet(“Export”, “Dir for data export from this application”)
[DirSet]
Export = "Dir for data export from this application"
Kan ook in één keer:
bOk = newDirSet("Export", "Dir for data export from this application")
.. met hetzelfde resultaat als boven in het settings bestand; toon beschrijving van..
print getDirSetDescription("Export")
Dir for data export from this application
We kunnen alle (in configuratiebestand) bestaande dirsets opvragen:
arrString[] = getAllDirSetNames()
Directory path opslaan
En nu het belangrijkste: een directorypath bewaren voor een bepaalde dirset; hier context 0 **:
setDirValue(0, "Export", "path", "/home/copyleft/Data/Export")
[Datacontext0-Export]
path = "/home/copyleft/Data/Export"
(**) Als een datacontext in gebruik is kan je de huidige id opvragen:
print hDataContext.getCurrentContextId()
En dan écht het belangrijkste: getDirValue opvragen; hier tonen we hem enkel:
print "We export to: " & getDirValue(hDataContext.getCurrentContextId(), "Export", "path")
We export to: /home/copyleft/Data/Export
De directory opvragen gebeurt in je applicatie op het moment dat je daar iets mee wil doen; bv een tekst bewaren in een bestand:
File.Save(getDirValue(0, "Export", "path") &/ "ExportOfTheDay.txt", sText)
;
Intern gebruikt DataContext deze methode om de Settings te maken:
print getContextDirSet(0, "Export")
Datacontext0-Export
Wat er in het bestand zo uitziet (zie ook hierboven):[Datacontext0-Export]
...
(*) De naam “Export” zal misschien vastliggen in je applicatie, of laat je daar kiezen.
Ook de sleutel “path” kan je in principe kiezen. De Datacontext bewaart er verder nog de datum van aanmaak en laatste wijziging bij, die kan je nazien in het configuratiebestand (momenteel nog niet vanuit een methode in de library, tenzij je in getDirValue de juiste sleutel meegeeft, zoals csKEYMODIFIED, zie definities in DataContext class).
Andere voorbeelden
- Import : bv om txt bestanden in te lezen
- Pictures: bv iconen of beeldmateriaal waarnaar gelinkt wordt / om ze te laden in de applicatie
- Export : zoals hierboven, bv om vanuit een applicatie een CSV export bestand te maken en dat op een vaste plaats voor de gebruiker te bewaren.
- Cam: opgenomen beeld met webcam
- …
DataContext: het unieke van het gebruik met het datacontext concept is dat je voor iedere “DataContext” aangepaste directory locaties kan opslaan. Door de datacontext om te schakelen gebruik je andere databases en andere directories, bv:
- Datacontext0 = “Dev”, locale map op mijn laptop waarop ik programmeer; en de databaseverbindingen gaan naar mijn “localhost” database met testgegevens.
- Datacontext1 = “live”, een map op een server of nextcloud die gedeeld wordt met andere gebruikers, en de database instellingen spreken de echte servers met live aan.
Toegepast op ons voorbeeld zou ons instellingenbestand zoiets bevatten (de database gegevens even weggelaten):
[DataContext0]
Name = "Live"
Description = "Echte gegevens, in gebruik
[DataContext1]
Name = "Dev"
Description = "Ontwikkelomgeving local(host)"
[DirSet]
Name = "Export"
Description = "Export csv files here"
[DataContext0-Export]
path = "/nextcloud/shared/myappdata/out"
created = "01/01/2024"
[DataContext1-Export]
path = "/home/username/myappdata/out"
created = "03/01/2024"
...