/
AccessionDirectoryMessage.cs
34 lines (28 loc) · 1.19 KB
/
AccessionDirectoryMessage.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using Equ;
using Newtonsoft.Json;
using System;
using System.IO;
namespace Smi.Common.Messages
{
/// <summary>
/// Object representing an accession directory message.
/// </summary>
public sealed class AccessionDirectoryMessage : MemberwiseEquatable<AccessionDirectoryMessage>, IMessage
{
/// <summary>
/// Directory path relative to the root path.
/// </summary>
[JsonProperty(Required = Required.Always)]
public string DirectoryPath { get; set; } = null!;
public AccessionDirectoryMessage() { }
public AccessionDirectoryMessage(string root, DirectoryInfo directory)
{
if (!directory.FullName.StartsWith(root, StringComparison.CurrentCultureIgnoreCase))
throw new Exception("Directory '" + directory + "' did not share a common root with the root '" + root + "'");
DirectoryPath = directory.FullName.Substring(root.Length).TrimStart(Path.DirectorySeparatorChar);
}
public string GetAbsolutePath(string rootPath) => Path.Combine(rootPath, DirectoryPath);
public override string ToString() => $"AccessionDirectoryMessage[DirectoryPath={DirectoryPath}]";
}
}