| OpenLab Studio | >= 1.30.x |
| OpenLab SDK | >= 1.2.x |
| Linguaggi | C# |
| Versione .NET | 8 |
Generale #
Un project storage permette di implementare un livello di astrazione tra gli storage fisici, dove risiedono i progetti, e OpenLab Studio. Questo sistema permette di memorizzare e prelevare i progetti da un hardisk o da un database o da qualsiasi altra sorgente. E’ possibile avere più sorgenti contemporaneamente(più project storge).
Il codice completo è reperibile su Github, per il setup dell’ambiente di sviluppo consultare questa guida
Funzionamento #
Un Project storage implementa la classe ProjectStorage, che a sua volta deriva dalla classe Plugin. Eredita tutte le funzionalità dei plugin(come la gestione della configurazione) e vanno inseriti insieme agli altri plugin nel file di configurazione di OpenLabStudio.
Vanno implementati due metodi: loadFromStorage e saveToStorage. Il primo metodo serve a leggere i progetti dallo storage reale e li deve memorizzare nella proprietà projects, la seconda serve a memorizzare i progetti nello storage reale prendendoli dalla proprietà storages.
I project storage vengono caricati dal file di configurazione dalla classe PluginsManager e memorizzati in ProjectManager.
Implementazione di base #
In questo paragrafo viene implementato un project storage che preleva e deposita i progetti in un array json, mostra una base minima su cui implementare un project storage.
public class OLSPluginProjectsDirectory : ProjectStorage
{
internal class Info : IPluginInfo
{
public string Name { get; } = "ols-plugin-projects-directory";
public string Title { get; } = "OpenLab Studio projects directory";
public int[] version { get; } = { 1, 0, 0 };
public string vendorUID { get; }
public string url { get; } = "https://github.com/GexyLab/ols-plugins/tree/main";
}
public OLSPluginProjectsDirectory(
IErrorManager _errorManager,
IPluginsManager _pluginsManager,
IEventsManager _eventsManager,
IWindowsManager _windowsManager,
ProjectsManager _projectsManager,
PluginDefinition _pluginDefinition) : base(_errorManager, _pluginsManager, _eventsManager, _windowsManager, _projectsManager, _pluginDefinition)
{
pluginInfo = new Info();
}
public override int deinit()
{
log.info("Deinit plugin" + pluginInfo.Name);
return 0;
}
public override int init()
{
log.info($"Init project storage {pluginInfo.Title} ({pluginInfo.Name})");
return 0;
}
public override void loadFromStorage()
{
}
public override void saveToStorage()
{
Project prj = new Project(projectsManager, this, projectDef);
projects.Add(prj);
}
}
Configurazione #
Ora è necessario inserire questo project storage, per fare questo nel file di configurazione di OpenLab Studio(config\config.json) aggiungere un oggetto json all’array plugin con per qualsiasi altro plugin.
In più rispetto ad un classico plugin, un project storage, possiede il parametro facoltativo name in config, questo parametro permette di specificare un nome per lo storage da visualizzare nell’elenco dei progetti, questo è utile quando ci sono progetti con lo stesso nome in storage diversi o per indicare comunque lo storage su cui sono salvati i progetti. Questo parametro sovrascrive la proprietà Name della classe ProjectStorage. Se non viene specificato ne il parametro nella configurazione nel il valore della proprietà Name, verrà usato il titolo del plugin(pluginInfo.name).
"plugins": {
"loadOnStart": true,
"plugins": [
[...]
{
"enabled": true,
"path": "OpenLab Studio\\plugins\\OpenLabStudio Plugin Projects Directory.dll",
"config": {
"name": "Local"
}
}
Installazione #
Una volta esportato il file dll questo va posizionato nella directory plugins