/// <summary>
/// Init the repository from a given path
/// </summary>
public void Init(string path)
{
RepositoryPath = path;
RepositoryServer.ViewsFolder = ViewsFolder;
RepositoryServer.TableTemplatesFolder = TableTemplatesFolder;
CheckFolders();
//Data sources
if (Sources.Count == 0)
{
foreach (var file in Directory.GetFiles(SourcesFolder, "*." + SealConfigurationFileExtension))
{
try
{
var source = MetaSource.LoadFromFile(file);
Sources.Add(source);
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
}
foreach (var source in Sources)
{
source.InitReferences(this);
}
}
if (Devices.Count == 0)
{
//Devices, add a default folder device, then the other devices
Devices.Add(OutputFolderDevice.Create());
foreach (var file in Directory.GetFiles(DevicesEmailFolder, "*." + SealConfigurationFileExtension))
{
try
{
Devices.Add(OutputEmailDevice.LoadFromFile(file, true));
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
}
foreach (var file in Directory.GetFiles(DevicesFileServerFolder, "*." + SealConfigurationFileExtension))
{
try
{
Devices.Add(OutputFileServerDevice.LoadFromFile(file, true));
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
}
}
if (!_assembliesLoaded)
{
//Load extra assemblies defined in Repository
var assemblies = Directory.GetFiles(AssembliesFolder, "*.dll");
foreach (var assembly in assemblies)
{
try
{
Assembly.LoadFrom(assembly);
}
catch (Exception Exception)
{
Debug.WriteLine(Exception.Message);
}
}
//Add this assembly resolve necessary when executing Razor scripts
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.AssemblyResolve += new ResolveEventHandler(AssemblyResolve);
_assembliesLoaded = true;
}
}