Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 private static void CreatePluginDataTable(DataTable errors, DataTable solPath)
 {
     DataTableUtils.CreatePvsDataTable(errors, solPath, errors.DefaultView);
 }
Ejemplo n.º 3
0
        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);
        }