using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Shapes;
namespace Rdh.SocketServer.Client.Models
{
public class EleMedKitProtocolHelper
{
private static readonly Char[] _lineSpiltor = new char[] { '\n' };
private static readonly char[] _blockSpiltor = new char[] { '|' };
///
/// 将数据按照行拆分
///
///
/// 拆分后的所有行(行内容中去除了标识符)
public static String[] GetContentLines(String body)
{
String[] lines = body.Split(_lineSpiltor, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < lines.Length; i++)
{
lines[i] = GetLineContent(lines[i]);
}
return lines;
}
public static String[] GetContentBlocks(String line)
{
String[] blocks = line
.Trim()
.TrimStart(EleMedKitProtocolFlags.LineStart.First())
//.Split(_blockSpiltor, StringSplitOptions.RemoveEmptyEntries);
.Split(_blockSpiltor);
for (int i = 0; i < blocks.Length; i++)
{
blocks[i] = blocks[i].Trim();
}
return blocks;
}
public static String GetLineContent(String line)
{
return line.Trim().TrimStart(EleMedKitProtocolFlags.LineStart.First());
}
public static DateTime? GetDateTimeByLineContent(String line)
{
line = GetLineContent(line);
DateTime rlt;
if(DateTime.TryParseExact(line,"yyyy|MM|dd|hh|mm|ss", null, System.Globalization.DateTimeStyles.AllowWhiteSpaces, out rlt))
{
return rlt;
}
return null;
}
public static String BuildLinePadContent(String? content)
{
return (content ?? String.Empty).PadLeft(EleMedKitProtocolFlags.LinePadTotalLenght, EleMedKitProtocolFlags.LinePad.First());
}
public static BaseEleMedKitProtocol GetRequestEleMedKitProtocol(String command)
{
switch (command)
{
case EleMedKitCommand.RequestLocation:
return new LocationRequestProtocol();
case EleMedKitCommand.RequestClock:
return new ClockRequestProtocol();
case EleMedKitCommand.RequestPatientOperation:
return new RequestPatientOperationProtocol();
case EleMedKitCommand.RequestPatientOperationUsage:
return new RequestOperationUsageProtocol();
case EleMedKitCommand.RequestReturnMedKit:
return new RequestMedKitReturnProtocol();
case EleMedKitCommand.RequestSupplyList:
return new RequestSupplyDrugProtocol();
case EleMedKitCommand.RequestDrugLend:
return new RequestDrugLendProtocol();
default:
return new UnSupportProtocol();
}
}
}
}