コード例 #1
0
ファイル: HeaderRecord.cs プロジェクト: zetroot/LIS2-A
        public static HeaderRecord Parse(ReadOnlySpan <char> input)
        {
            if (input.Length < 5)
            {
                throw new ArgumentException("Minimal header length is 5 chars");
            }
            var recordType = RecordType.Parse(input);

            if (recordType != RecordType.MessageHeader)
            {
                throw new ArgumentException("This is not header record");
            }

            var delimiters = Delimiters.Parse(input.Slice(1, 4));

            var messageControlID      = new string(input.GetField(delimiters.FieldDelimiter, 2));
            var accessPassword        = new string(input.GetField(delimiters.FieldDelimiter, 3));
            var senderID              = new string(input.GetField(delimiters.FieldDelimiter, 4));
            var senderStreetAddress   = new string(input.GetField(delimiters.FieldDelimiter, 5));
            var reserved0             = new string(input.GetField(delimiters.FieldDelimiter, 6));
            var senderTelephoneNumber = new string(input.GetField(delimiters.FieldDelimiter, 7));
            var senderCharacteristics = new string(input.GetField(delimiters.FieldDelimiter, 8));
            var receiverID            = new string(input.GetField(delimiters.FieldDelimiter, 9));
            var comment        = new string(input.GetField(delimiters.FieldDelimiter, 10));
            var processingType = input.GetField(delimiters.FieldDelimiter, 11);
            var processingID   = processingType.IsEmpty ? default(ProcessingType?) : ProcessingType.Parse(processingType[0]);
            var versionNumber  = new string(input.GetField(delimiters.FieldDelimiter, 12));

            var msgDateTime = default(DateTimeField?);
            var msgDTField  = input.GetField(delimiters.FieldDelimiter, 13);

            if (!msgDTField.IsEmpty)
            {
                msgDateTime = DateTimeField.Parse(msgDTField);
            }


            return(new HeaderRecord(
                       delimiters,
                       messageControlID,
                       accessPassword,
                       senderID,
                       senderStreetAddress,
                       reserved0,
                       senderTelephoneNumber,
                       senderCharacteristics,
                       receiverID,
                       comment,
                       processingID,
                       versionNumber,
                       msgDateTime));
        }