public DataSet GetDiff(string oldLogName, string newLogName) { Output = CompareLogs(oldLogName, newLogName); if (!Output.Succeeded) { DataTable errors = new DataTable(), solPath = new DataTable(); var log = new DataSet(); DataTableUtils.CreatePvsDataTable(errors, solPath, errors.DefaultView); MergeMessages(Output, errors); //FIXME: Compare old and new solPath's. //FIXME: Find cleaner way to get it. log.ReadXml(newLogName); int tblIdx = 1; log.Tables.RemoveAt(tblIdx); log.Tables.Add(errors); return(log); } return(null); }
private static void CreatePluginDataTable(DataTable errors, DataTable solPath) { DataTableUtils.CreatePvsDataTable(errors, solPath, errors.DefaultView); }
private static DataTable MergeDoubleMessagesInList(DataTable missings, DataTable additions) { DataTable modifies = new DataTable(), solPath = new DataTable(); DataTableUtils.CreatePvsDataTable(modifies, solPath, modifies.DefaultView); for (var i = additions.Rows.Count - 1; i >= 0; i--) { //walking additions from the end for (var j = missings.Rows.Count - 1; j >= 0; j--) { //for each addition, walking missings from the end until the first match //For different Error Messages DataRow additionalRow = additions.Rows[i], missingRow = missings.Rows[j]; if ( additionalRow[TableIndexes.ErrorCode].Equals(missingRow[TableIndexes.ErrorCode]) && additionalRow[TableIndexes.Line].Equals(missingRow[TableIndexes.Line]) && additionalRow[TableIndexes.File].ToString() .Equals(missingRow[TableIndexes.File].ToString(), StringComparison.InvariantCultureIgnoreCase) && additionalRow[TableIndexes.FalseAlarm].Equals(missingRow[TableIndexes.FalseAlarm]) && additionalRow[TableIndexes.Level].Equals(missingRow[TableIndexes.Level]) //&& Additions[i].ProjectName.Equals(Missings[j].ProjectName)) && !additionalRow[TableIndexes.Message].Equals(missingRow[TableIndexes.Message]) ) { missingRow[TableIndexes.Message] = missingRow[TableIndexes.Message].ToString().Replace(MissingMark, EtalonMark) + additionalRow[TableIndexes.Message].ToString().Replace(AdditionsMark, CurrentMark); modifies.ImportRow(missingRow); additions.Rows.RemoveAt(i); missings.Rows.RemoveAt(j); break; //break from j loop on the first match and go for the next i loop item } //for different FalseAlarm Marks if ( additionalRow[TableIndexes.ErrorCode].Equals(missingRow[TableIndexes.ErrorCode]) && additionalRow[TableIndexes.Line].Equals(missingRow[TableIndexes.Line]) && additionalRow[TableIndexes.File].ToString() .Equals(missingRow[TableIndexes.File].ToString(), StringComparison.InvariantCultureIgnoreCase) && string.Equals(additionalRow[TableIndexes.Message].ToString().Replace(AdditionsMark, string.Empty), missingRow[TableIndexes.Message].ToString().Replace(MissingMark, string.Empty)) && additionalRow[TableIndexes.Level].Equals(missingRow[TableIndexes.Level]) //&& Additions[i].ProjectName.Equals(Missings[j].ProjectName) && !additionalRow[TableIndexes.FalseAlarm].Equals(missingRow[TableIndexes.FalseAlarm]) ) { missingRow[TableIndexes.Message] = missingRow[TableIndexes.Message].ToString().Replace(MissingMark, FalseAlarmMark); modifies.ImportRow(missingRow); additions.Rows.RemoveAt(i); missings.Rows.RemoveAt(j); break; //break from j loop on the first match and go for the next i loop item } //for different levels if ( additionalRow[TableIndexes.ErrorCode].Equals(missingRow[TableIndexes.ErrorCode]) && additionalRow[TableIndexes.Line].Equals(missingRow[TableIndexes.Line]) && additionalRow[TableIndexes.File].ToString() .Equals(missingRow[TableIndexes.File].ToString(), StringComparison.InvariantCultureIgnoreCase) && string.Equals(additionalRow[TableIndexes.Message].ToString().Replace(AdditionsMark, string.Empty), missingRow[TableIndexes.Message].ToString().Replace(MissingMark, string.Empty)) && additionalRow[TableIndexes.FalseAlarm].Equals(missingRow[TableIndexes.FalseAlarm]) //&& Additions[i].ProjectName.Equals(Missings[j].ProjectName) && !additionalRow[TableIndexes.Level].Equals(missingRow[TableIndexes.Level]) ) { missingRow[TableIndexes.Message] = missingRow[TableIndexes.Message].ToString() .Replace(MissingMark, LevelMark + missingRow[TableIndexes.Level] + NewMark + additionalRow[TableIndexes.Level]); modifies.ImportRow(missingRow); additions.Rows.RemoveAt(i); missings.Rows.RemoveAt(j); break; //break from j loop on the first match and go for the next i loop item } } } return(modifies); }