TapiModeHelper
Defines transfer mode related static helper methods.
using Relativity.DataExchange.Logger;
using Relativity.DataExchange.Resources;
using Relativity.Transfer;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Relativity.DataExchange.Transfer
{
internal static class TapiModeHelper
{
private static IDictionary<TapiClient, int> TapiClientOrderMap => new Dictionary<TapiClient, int> {
{
TapiClient.Direct,
0
},
{
TapiClient.Aspera,
1
},
{
TapiClient.Web,
2
}
};
public static string BuildDocText()
{
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.AppendLine("FILE TRANSFER MODES:");
using (RelativityTransferLog relativityTransferLog = new RelativityTransferLog(RelativityLogger.Instance)) {
foreach (ITransferClientMetadata item in from x in TransferClientHelper.SearchAvailableClients((ITransferLog)relativityTransferLog)
orderby x.DisplayName
select x) {
if (stringBuilder.Length > 0) {
stringBuilder.AppendLine();
stringBuilder.AppendLine();
}
stringBuilder.AppendFormat(" • {0} • ", item.DisplayName);
stringBuilder.AppendLine();
stringBuilder.Append(item.Description);
}
}
stringBuilder.AppendLine();
stringBuilder.AppendLine();
return stringBuilder.ToString();
}
public static string BuildImportStatusText(bool nativeFilesCopied, TapiClient? native, TapiClient? metadata)
{
StringBuilder stringBuilder = new StringBuilder();
string fileTransferModeText = GetFileTransferModeText((!native.HasValue) ? new TapiClient[0] : new TapiClient[1] {
native.Value
});
stringBuilder.AppendFormat(Strings.FileTransferStatusTextModePrefix, nativeFilesCopied ? fileTransferModeText : Strings.FileTransferModeDisabled);
stringBuilder.Append(", ");
string fileTransferModeText2 = GetFileTransferModeText((!metadata.HasValue) ? new TapiClient[0] : new TapiClient[1] {
metadata.Value
});
stringBuilder.AppendFormat(Strings.FileTransferStatusTextMetadataPrefix, fileTransferModeText2);
return stringBuilder.ToString();
}
public static string BuildExportStatusText(bool nativeFilesCopied, IEnumerable<TapiClient> natives)
{
StringBuilder stringBuilder = new StringBuilder();
string fileTransferModeText = GetFileTransferModeText(natives);
stringBuilder.AppendFormat(Strings.FileTransferStatusTextModePrefix, nativeFilesCopied ? fileTransferModeText : Strings.FileTransferModeDisabled);
return stringBuilder.ToString();
}
public static TapiClient GetTapiClient(IEnumerable<TapiClient> clients)
{
List<TapiClient> source = (from x in clients.Distinct().Except(new TapiClient[1])
orderby TapiClientOrderMap[x]
select x).ToList();
if (!source.Any())
return TapiClient.None;
return source.Last();
}
private static Guid GetClientId(TapiClient client)
{
switch (client) {
case TapiClient.Aspera:
return new Guid("812A70A5-7311-46CC-BE53-07BB8C5F9A7D");
case TapiClient.Direct:
return new Guid("0315D6C7-FF07-41E2-9C25-16573FC6B9DE");
case TapiClient.Web:
return new Guid("18F9E382-288C-4B6D-8AE8-FBA4D88CD841");
default:
return Guid.Empty;
}
}
private static string GetFileTransferModeText(IEnumerable<TapiClient> clients)
{
StringBuilder stringBuilder = new StringBuilder();
foreach (TapiClient item in from x in clients.Distinct().Except(new TapiClient[1])
orderby TapiClientOrderMap[x]
select x) {
if (stringBuilder.Length > 0)
stringBuilder.Append("/");
stringBuilder.Append(TapiObjectService.GetClientDisplayName(GetClientId(item)));
}
if (stringBuilder.Length == 0)
stringBuilder.Append(Strings.FileTransferModePending);
return stringBuilder.ToString();
}
}
}