Exemple #1
0
        public List <IO2Finding> removeAllInfos_version_3()
        {
            // LINQ query
            var resultsLinq = from IO2Finding o2Finding in XUtils_Findings_v0_1.loadFindingsFile(sampleOzamtFile)
                              where  OzasmtUtils.getSeverityFromId(o2Finding.severity) != "Info"                        // o2Finding.severity = 3 maps to "Info"
                              select o2Finding;

            // since we are using List<IO2Fiding> below, lets covert the LINQ result which is IEnumerable<IO2Finding> to List<IO2Finding>
            var results = resultsLinq.ToList();

            XUtils_Findings_v0_1.openFindingsInNewWindow(results);
            return(results);
        }
Exemple #2
0
        public List <IO2Finding> removeAllInfos_version_2()
        {
            var o2Findings = XUtils_Findings_v0_1.loadFindingsFile(sampleOzamtFile);

            var results = new List <IO2Finding>();

            foreach (O2Finding o2Finding in o2Findings)
            {
                if (OzasmtUtils.getSeverityFromId(o2Finding.severity) != "Info")
                {
                    results.Add(o2Finding);
                }
            }
            XUtils_Findings_v0_1.openFindingsInNewWindow(results);
            return(results);
        }
Exemple #3
0
        private static string calculateTreeNodeText(IO2Finding o2Finding, string propertyToUse, string filterToUse)
        {
            string nodeText;

            try
            {
                switch (propertyToUse)
                {
                case "severity":
                    return(OzasmtUtils.getSeverityFromId(o2Finding.severity));

                case "confidence":
                    return(OzasmtUtils.getConfidenceFromId(o2Finding.confidence));

                case "o2Traces":
                    var allO2Traces = OzasmtUtils.getAllTraces(o2Finding.o2Traces);
                    return((allO2Traces.Keys.Count > 0) ? "# nodes: {0}".format(allO2Traces.Keys.Count) : "");

                default:
                    nodeText = PublicDI.reflection.getProperty(propertyToUse, o2Finding).ToString();
                    break;
                }
                if (nodeText != "")
                {
                    if (RegEx.findStringInString(nodeText, filterToUse) || nodeText.index(filterToUse) > -1)
                    {
                        return(nodeText);
                    }
                    else
                    {
                        return("");
                    }
                }
                return(nodeText);
            }
            catch (Exception ex)
            {
                PublicDI.log.error("in calculateTreeNodeText: {0}", ex.Message);
                return("[O2 Error (check logs for details)]");
            }
        }
Exemple #4
0
        public static DataTable getDataTableFromO2FindingsLinqQuery(List <object> dataToConvert, int maxNumberOfRecords,
                                                                    ref Dictionary <DataRow, object>
                                                                    mappingOfDataRowsToObjects)
        {
            mappingOfDataRowsToObjects = new Dictionary <DataRow, object>();
            var dataTable = new DataTable();

            try
            {
                // calculate Rows names
                // column names
                PropertyInfo[] properties = null;
                foreach (object firstItem in dataToConvert)
                {
                    // only first time, others will follow
                    //if (dataTable.Columns.Count == 0)
                    {
                        switch (firstItem.GetType().Name)
                        {
                        case "String":
                        case "Byte":
                        case "UInt32":
                        case "Int32":
                            dataTable.Columns.Add(new DataColumn(firstItem.GetType().Name, firstItem.GetType()));
                            break;

                        case "Variant":
                            foreach (string key in ((Variant)firstItem).members.Keys)
                            {
                                switch (key)
                                {
                                case "finding":
                                    // this 'finding' is an hardcoded keyword that I am using to represent a complete finding (this way we can also have results to save on queries that result in Variant results
                                    break;         // don't show these

                                case "getSource":
                                case "o2Traces":
                                    dataTable.Columns.Add(new DataColumn(key, typeof(string)));
                                    break;

                                default:
                                    dataTable.Columns.Add(new DataColumn(key,
                                                                         ((Variant)firstItem).members[key].
                                                                         GetType()));
                                    break;
                                }
                                // object keyValue = ((Variant)firstItem).members[key];
                                // if (keyValue is List<O2Trace>)
                                //     dataTable.Columns.Add(new DataColumn("o2Traces", keyType));
                                // else
                                //dataTable.Columns.Add(new DataColumn(key, keyType));

                                //((Variant)firstItem).members[key].GetType()));
                            }
                            break;

                        /*  case "o2Trace":
                         * dataTable.Columns.Add(new DataColumn("o2Trace",typeof(string)));
                         * break;*/
                        default:
                            properties = (firstItem.GetType()).GetProperties();
                            foreach (PropertyInfo pi in properties)
                            {
                                switch (pi.Name)
                                {
                                case "getSource":
                                case "getSink":
                                case "getLostSink":
                                case "getKnownSink":
                                    break;         // hide this ones

                                case "confidence":
                                case "severity":
                                    dataTable.Columns.Add(new DataColumn(pi.Name, typeof(string)));
                                    break;

                                default:

                                    Type colType = pi.PropertyType;
                                    if ((colType.IsGenericType) &&
                                        (colType.GetGenericTypeDefinition() == typeof(Nullable <>)))
                                    {
                                        colType = colType.GetGenericArguments()[0];
                                    }
                                    dataTable.Columns.Add(new DataColumn(pi.Name, colType));
                                    break;
                                }
                            }
                            break;
                        }
                    }
                    break; // we only want the first one
                }

                // Could add a check to verify that there is an element 0
                foreach (object item in dataToConvert)
                {
                    DataRow dataRow = dataTable.NewRow();
                    mappingOfDataRowsToObjects.Add(dataRow, item);
                    // this will allow to save the data of the rows selected
                    switch (item.GetType().Name)
                    {
                    case "String":
                    case "Byte":
                    case "UInt32":
                    case "Int32":
                        dataRow[item.GetType().Name] = item;

                        break;

                    case "Variant":
                        foreach (string key in ((Variant)item).members.Keys)
                        {
                            switch (key)
                            {
                            case "finding":
                                // this 'finding' is an hardcoded keyword that I am using to represent a complete finding (this way we can also have results to save on queries that result in Variant results
                                break;         // don't show these

                            case "o2Traces":
                                dataRow[key] = ((List <IO2Trace>)((Variant)item)[key]).Count > 0 ? "has smart trace" : "no trace";
                                break;

                            case "getSource":
                                if (((Variant)item)[key] is IO2Trace)
                                {
                                    var o2Trace = (IO2Trace)((Variant)item)[key];
                                    dataRow[key] = o2Trace.signature;
                                }
                                else
                                {
                                    dataRow[key] = "..........";
                                }
                                break;

                            default:
                                dataRow[key] = ((Variant)item)[key];
                                break;
                            }
                        }

                        break;

                    default:

                        if (properties != null)
                        {
                            foreach (PropertyInfo pi in properties)
                            {
                                switch (pi.Name)
                                {
                                case "getSource":
                                case "getSink":
                                case "getLostSink":
                                case "getKnownSink":
                                    break;         // hide this ones

                                case "severity":
                                    dataRow[pi.Name] = OzasmtUtils.getSeverityFromId((byte)pi.GetValue(item, null));
                                    break;

                                case "confidence":
                                    dataRow[pi.Name] = OzasmtUtils.getConfidenceFromId((byte)pi.GetValue(item, null));

                                    break;

                                case "o2Traces":
                                    dataRow[pi.Name] = ((List <IO2Trace>)pi.GetValue(item, null)).Count > 0 ? pi.GetValue(item, null) : DBNull.Value;
                                    break;

                                default:
                                    dataRow[pi.Name] = pi.GetValue(item, null) ?? DBNull.Value;
                                    break;
                                }
                            }
                        }

                        /*
                         * {
                         *  if (pi.GetValue(rec, null) == null)
                         *      dr[pi.Name] = DBNull.Value;
                         *  else
                         *  {
                         *      dr[pi.Name] = pi.GetValue(rec, null);
                         *  }
                         * }*/
                        break;
                    }
                    //
                    dataTable.Rows.Add(dataRow);
                    if (dataTable.Rows.Count > maxNumberOfRecords)
                    {
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                DI.log.ex(ex, " in getDataTableFromO2FindingsLinqQuery ", true);
            }
            return(dataTable);
        }