// original ReadFile function protected virtual void ReadFile(string xmlPath, string defaultErrorSubDirPath, bool hasBackOffice, ref bool xmlFileEmpty, FieldElementSection rawDataFields, FieldElementSection metaDataFields, SqlCommand insertCommand, Dictionary <string, string> gatewayNameFields) { bool firstRowInXml = true; using (XmlTextReader xmlReader = new XmlTextReader(xmlPath)) { xmlReader.WhitespaceHandling = WhitespaceHandling.None; // Read root node xmlReader.Read(); xmlFileEmpty = true; // Loop on all the rows in the xml report file. while (xmlReader.Read()) { if (!GetToRowsSection(xmlReader)) { continue; } // Initalize dayCode. if (firstRowInXml) { xmlFileEmpty = false; firstRowInXml = false; // ASAF: raise log error if we have diffrent date in the file and in _requiredDay. _requiredDay = DayCode.GenerateDateTime(GetDate(xmlReader)); if (_accountID == SystemAccountID) { GetAccountID(xmlReader.GetAttribute("acctname").ToString(), out _accountID, _accountFieldName); _accountName = xmlReader.GetAttribute("acctname").ToString(); } // Delete old data in the DB for the same data we fetch the new data. DataIdentifier dataIdentifier = new DataIdentifier(_accountID, GetDayCode(_requiredDay), _channelID); _dataIdentifiers.Add(dataIdentifier); HandleDeleteDay(); InitalizeNullValues(insertCommand, rawDataFields, metaDataFields); } CheckRowData(xmlReader); try { HandleRow(hasBackOffice, rawDataFields, metaDataFields, insertCommand, gatewayNameFields, xmlReader); } catch (Exception ex) { WriteErrorMesageToFile(xmlPath, xmlReader.ReadOuterXml(), ex, defaultErrorSubDirPath); } } } }
protected virtual void CheckRowData(XmlTextReader xmlReader) { int accountID; // New date in the file. if (DayCode.GenerateDateTime(GetDate(xmlReader)) != _requiredDay) { _requiredDay = DayCode.GenerateDateTime(GetDate(xmlReader)); DataIdentifier dataIdentifier = new DataIdentifier(_accountID, GetDayCode(_requiredDay), _channelID); if (!_dataIdentifiers.Contains(dataIdentifier)) { // Delete old data in the DB for the same data we fetch the new data. HandleDeleteDay(); _dataIdentifiers.Add(dataIdentifier); } } if (!string.IsNullOrEmpty(_accountName)) { // New account in the file. if (xmlReader.GetAttribute("acctname").ToString() != _accountName) { GetAccountID(xmlReader.GetAttribute("acctname").ToString(), out accountID, _accountFieldName); _accountID = accountID; _accountName = xmlReader.GetAttribute("acctname").ToString(); DataIdentifier dataIdentifier = new DataIdentifier(_accountID, GetDayCode(_requiredDay), _channelID); if (!_dataIdentifiers.Contains(dataIdentifier)) { // Delete old data in the DB for the same data we fetch the new data. HandleDeleteDay(); _dataIdentifiers.Add(dataIdentifier); } } } }
protected virtual void CheckRowData(SourceDataRowReader <RetrieverDataRow> reader) { int accountID; // New date in the file. if (DayCode.GenerateDateTime(GetDate(reader)) != _requiredDay) { _requiredDay = DayCode.GenerateDateTime(GetDate(reader)); DataIdentifier dataIdentifier = new DataIdentifier(_accountID, GetDayCode(_requiredDay), _channelID); if (!_dataIdentifiers.Contains(dataIdentifier)) { // Delete old data in the DB for the same data we fetch the new data. HandleDeleteDay(); _dataIdentifiers.Add(dataIdentifier); } } if (!string.IsNullOrEmpty(_accountName)) { // New account in the file. if (reader.CurrentRow.Fields["acctname"] != _accountName) { GetAccountID(reader.CurrentRow.Fields["acctname"], out accountID, _accountFieldName); _accountID = accountID; _accountName = reader.CurrentRow.Fields["acctname"]; DataIdentifier dataIdentifier = new DataIdentifier(_accountID, GetDayCode(_requiredDay), _channelID); if (!_dataIdentifiers.Contains(dataIdentifier)) { // Delete old data in the DB for the same data we fetch the new data. HandleDeleteDay(); _dataIdentifiers.Add(dataIdentifier); } } } }