private void CreateDEs(DataString dataString) { DataElements = new DataElementCollection(); DataString dataElementsString = dataString.SubString(readerIndex); List <int> dataElementsBitMap = BitMaps.GetPresentDataElements(); foreach (int de in dataElementsBitMap) { if (DataDefinitionDictionary.ContainsElementDefinition(de)) { DataDefinition dataDef = DataDefinitionDictionary.GetDataDefinition(de); int dataElementsReaderIndex = 0; try { DataString data = dataDef.GetAllData(dataElementsString, ref dataElementsReaderIndex); dataElementsString = dataElementsString.SubString(dataElementsReaderIndex); DataElements.AddOrReplaceDataElement(new DataElement(de, dataDef, data)); } catch (Exception ex) { throw new Exception("Missing or incorrectly defined DE: " + de + ".", ex); } } else { throw new Exception("Missing definition, DE: " + de + "."); } } }
public DataElement(int number, DataDefinition dataDefinition, HashSet <DataElement> subElements) { SubElements = new DataElementCollection(); Number = number; Definition = dataDefinition; if (AreValidSubElements(dataDefinition, subElements)) { foreach (DataElement dataElement in subElements) { SubElements.AddOrReplaceDataElement(dataElement); } } else { throw new ArgumentException("DataDefinition does not match subElements definition."); } }
public DataElement(int number, DataDefinition dataDefinition, DataString data) { SubElements = new DataElementCollection(); Number = number; Definition = dataDefinition; if (dataDefinition.HasSubfields()) { foreach (KeyValuePair <int, DataDefinition> kvp in dataDefinition.SubDefinitions) { int fieldNumber = kvp.Key; DataDefinition fieldDefinition = kvp.Value; DataString fieldData = dataDefinition.GetSubFieldData(data, fieldNumber); SubElements.AddOrReplaceDataElement(new DataElement(fieldNumber, fieldDefinition, fieldData)); } } else { _data = data; } }
public Message(MessageTypeIdentifier mti, DataElementsDefinition dataElementDefinition) { MessageTypeIdentifier = mti; BitMaps = new BitMapCollection(); DataElements = new DataElementCollection(); }