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;
}
}
}
}