Esempio n. 1
0
 /// <summary>
 /// write the read descriptor word
 /// </summary>
 /// <param name="fields"></param>
 /// <param name="fieldsList"></param>
 /// <exception cref="IOException">&nbsp;</exception>
 private void WriteRdw(List <object> fields, IFieldsList fieldsList)
 {
     if (_writeRdw)
     {
         int size = GetFieldsListSize(fields, fieldsList) + RdwSize;
         _stream.Write(new byte[] { (byte)(size >> 8), (byte)(size & 0xFF), 0, 0 });
     }
 }
Esempio n. 2
0
        /// <summary>
        /// read a fields list
        /// </summary>
        /// <param name="fieldsList"></param>
        /// <returns></returns>
        /// <exception cref="IOException"></exception>
        /// <exception cref="EbcdicException"></exception>
        private List <object> ReadFields(IFieldsList fieldsList)
        {
            List <object> values = new List <object>();
            IDictionary <string, decimal> readNumericValues = new Dictionary <string, decimal>();

            foreach (CopybookElement fieldFormat in fieldsList.Elements)
            {
                var format = fieldFormat as FieldFormat;
                values.Add(format != null
                    ? ReadField(format, readNumericValues)
                    : ReadFieldsGroup((FieldsGroup)fieldFormat, readNumericValues));
            }
            return(values);
        }
Esempio n. 3
0
 /// <summary>
 /// write list of fields
 /// </summary>
 /// <param name="fields"></param>
 /// <param name="fieldsList"></param>
 /// <exception cref="IOException">&nbsp;</exception>
 /// <exception cref="EbcdicException">&nbsp;</exception>
 private void WriteFields(List <object> fields, IFieldsList fieldsList)
 {
     for (int i = 0; i < fields.Count; i++)
     {
         object fieldFormat = fieldsList.Elements[i];
         var    format      = fieldFormat as FieldFormat;
         if (format != null)
         {
             WriteField((dynamic)fields[i], format);
         }
         else
         {
             WriteFieldsGroup(fields[i], (FieldsGroup)fieldFormat);
         }
     }
 }
Esempio n. 4
0
        /// <summary>
        /// compute the fields list size
        /// </summary>
        /// <param name="fields"></param>
        /// <param name="fieldsList"></param>
        /// <returns></returns>
        private int GetFieldsListSize(List <object> fields, IFieldsList fieldsList)
        {
            int size = 0;

            for (int i = 0; i < fields.Count; i++)
            {
                object fieldFormat = fieldsList.Elements[i];
                var    format      = fieldFormat as FieldFormat;
                if (format != null)
                {
                    size += GetFieldSize(fields[i], format);
                }
                else
                {
                    size += GetFieldsGroupSize(fields[i], (FieldsGroup)fieldFormat);
                }
            }
            return(size);
        }
        /// <summary>
        /// Map fields list object
        /// </summary>
        /// <param name="item"></param>
        /// <param name="fieldsList"></param>
        /// <param name="writtenNumbers"></param>
        /// <returns></returns>
        private List <object> MapFieldsList(object item, IFieldsList fieldsList, IDictionary <string, decimal> writtenNumbers)
        {
            List <object>    values  = new List <object>();
            PropertyAccessor wrapper = new PropertyAccessor(item);

            foreach (CopybookElement element in fieldsList.Elements)
            {
                var format = element as FieldFormat;
                if (format != null)
                {
                    values.Add(Convert(wrapper.GetProperty(GetName(format)), format, writtenNumbers));
                }
                else
                {
                    values.Add(MapFieldsGroup(wrapper.GetProperty(GetName(element)), (FieldsGroup)element, writtenNumbers));
                }
            }
            return(values);
        }
Esempio n. 6
0
 /// <summary>
 /// read a fields list
 /// </summary>
 /// <param name="fieldsList"></param>
 /// <returns></returns>
 /// <exception cref="IOException">&nbsp;</exception>
 /// <exception cref="EbcdicException">&nbsp;</exception>
 private List<object> ReadFields(IFieldsList fieldsList)
 {
     List<object> values = new List<object>();
     IDictionary<string, decimal> readNumericValues = new Dictionary<string, decimal>();
     foreach (CopybookElement fieldFormat in fieldsList.Elements)
     {
         var format = fieldFormat as FieldFormat;
         values.Add(format != null
             ? ReadField(format, readNumericValues)
             : ReadFieldsGroup((FieldsGroup) fieldFormat, readNumericValues));
     }
     return values;
 }