private List<object> ReadFieldsGroup(FieldsGroup fieldsGroup, IDictionary<string, decimal> readNumericValues)
{
List<object> values = new List<object>();
int occurs;
if (fieldsGroup.HasDependencies())
{
if (readNumericValues.ContainsKey(fieldsGroup.DependingOn))
{
occurs = Decimal.ToInt32(readNumericValues[fieldsGroup.DependingOn]);
}
else
{
throw new System.Exception(
string.Format("Check your copybook :[{0}] is not present, but field format says it has dependencies ...",
fieldsGroup.DependingOn));
}
}
else
{
occurs = fieldsGroup.Occurs;
}
for (int i = 0; i < occurs; i++)
{
values.Add(ReadFields(fieldsGroup));
}
if (fieldsGroup.HasDependencies() || occurs > 1)
{
// if occurs is more than one or variable, return results in a list
return values;
}
else
{
// otherwise, just return the single item
return (List<object>)values[0];
}
}