using System; using System.Collections.Generic; using System.Linq; using System.Text; using ScrewTurn.Wiki.PluginFramework; namespace ScrewTurn.Wiki { /// /// Implements a base class for local file-based data providers. /// public abstract class ProviderBase { private object _syncLock = new object(); private bool _dataDirectoryAlreadyRead = false; private string _dataDirectory = null; /// /// Sets the data directory. /// /// The data directory. protected void SetDataDirectory(string dataDirectory) { lock(_syncLock) { if(_dataDirectoryAlreadyRead) throw new InvalidOperationException("Cannot set data directory when it's already been read"); _dataDirectory = dataDirectory; } } /// /// Gets the data directory. /// /// The host object. /// The data directory. protected string GetDataDirectory(IHostV30 host) { lock(_syncLock) { _dataDirectoryAlreadyRead = true; if(string.IsNullOrEmpty(_dataDirectory)) return host.GetSettingValue(SettingName.PublicDirectory); else return _dataDirectory; } } } }