public TaskValidationResultCollection(IEnumerable <TableExtractionTask> tasks)
 {
     foreach (var task in tasks)
     {
         var taskResult = new TaskValidationResult(task);
         Results.Add(task, taskResult);
     }
 }
Ejemplo n.º 2
0
        public DataTable GetReportTable(TaskValidationResult task, DataTable existingTable = null, List <ValidationOutcome> outcomes = null)
        {
            var table = new DataTable(task.task.name + "_prop_validation");

            table.SetDescription("Property validation results for task [" + task.task.name + "]");


            var column_task = table.Columns.Add("Task").SetWidth(25);


            var column_propertyName = table.Columns.Add("Property").SetGroup("Declaration").SetWidth(20);

            var column_propertyType = table.Columns.Add("Type").SetGroup("Declaration").SetWidth(10);

            var column_contentType = table.Columns.Add("Content").SetGroup("Declaration").SetWidth(10);

            var column_valueformat = table.Columns.Add("Format").SetGroup("Declaration").SetWidth(10);

            var column_frequency = table.Columns.Add("Frequency").SetWidth(10);

            var column_outcome = table.Columns.Add("Outcome").SetGroup("Result").SetWidth(10);

            var column_message = table.Columns.Add("Comment").SetGroup("Result").SetWidth(50);



            var column_linkedNode = table.Columns.Add("Node").SetWidth(10).SetGroup("Values");



            var column_DistinctValues = table.Columns.Add("Distinct").SetGroup("Values").SetWidth(10);
            var column_examplevalues1 = table.Columns.Add("Example1").SetGroup("Values").SetWidth(25).SetHeading("Example").SetDesc("Example value found at the property");
            var column_examplevalues2 = table.Columns.Add("Example2").SetGroup("Values").SetWidth(25).SetHeading("Example").SetDesc("Example value found at the property");
            var column_examplevalues3 = table.Columns.Add("Example3").SetGroup("Values").SetWidth(25).SetHeading("Example").SetDesc("Example value found at the property");
            var column_examplevalues4 = table.Columns.Add("Example4").SetGroup("Values").SetWidth(25).SetHeading("Example").SetDesc("Example value found at the property");
            var column_examplevalues5 = table.Columns.Add("Example5").SetGroup("Values").SetWidth(25).SetHeading("Example").SetDesc("Example value found at the property");

            var column_SpamPropertyMeasure = table.Columns.Add("SpamPropertyMeasure").SetGroup("Values").SetHeading("Spam").SetDesc("Measure describing probability that this property is a spam property").SetFormat("F3").SetWidth(10);


            var column_allcontenttypes = table.Columns.Add("All types").SetWidth(100);



            var column_xpath = table.Columns.Add("XPath").SetWidth(100);



            var results = GetResults();

            foreach (var rpair in results)
            {
                table.SetAdditionalInfoEntry(rpair.Key.ToString(), rpair.Value.Count, "Number of properties having outcome [" + rpair.Key.ToString() + "]");
            }


            DataTable targetTable = table;

            if (existingTable != null)
            {
                targetTable = existingTable;
            }

            if (outcomes == null)
            {
                outcomes = new List <ValidationOutcome>()
                {
                    ValidationOutcome.Validated, ValidationOutcome.Modified, ValidationOutcome.Invalid, ValidationOutcome.undefined
                };
            }

            foreach (var oc in outcomes)
            {
                submethod(results[oc], targetTable);
            }


            void submethod(IEnumerable <TaskPropertyValidation> plist, DataTable _targetTable = null)
            {
                foreach (TaskPropertyValidation p in plist)
                {
                    var dr = _targetTable.NewRow();

                    dr[column_task.ColumnName] = task.task.name;
                    dr[column_SpamPropertyMeasure.ColumnName] = p.SpamPropertyMeasure;

                    List <string> d_vals = p.ValueCounter.GetDistinctItems().trimToLimit(25, true, "...", false, true);

                    dr[column_DistinctValues.ColumnName] = p.DistinctValues;

                    dr[column_examplevalues1.ColumnName] = d_vals.ElementAtOrDefault(0);
                    dr[column_examplevalues2.ColumnName] = d_vals.ElementAtOrDefault(1);
                    dr[column_examplevalues3.ColumnName] = d_vals.ElementAtOrDefault(2);
                    dr[column_examplevalues4.ColumnName] = d_vals.ElementAtOrDefault(3);
                    dr[column_examplevalues5.ColumnName] = d_vals.ElementAtOrDefault(4);

                    dr[column_propertyType.ColumnName] = p.item.ValueTypeName;         // source.propertyType;

                    dr[column_frequency.ColumnName] = p.Frequency;                     //.GetRatio(task.score.metaPropertyNameCounter.DistinctCount());

                    dr[column_SpamPropertyMeasure.ColumnName] = p.SpamPropertyMeasure; //f.GetRatio(validation_calls); //source.persistance;

                    dr[column_propertyName.ColumnName] = p.item.PropertyName;          // source.propertyName;

                    dr[column_message.ColumnName] = p.Message;                         // source.message;

                    dr[column_outcome.ColumnName]    = p.Outcome;
                    dr[column_linkedNode.ColumnName] = p.LinkedNodes;                  // source.linkedNode;

                    dr[column_contentType.ColumnName] = p.item.ContentType.ToString(); // source.contentType;
                    dr[column_valueformat.ColumnName] = p.item.ValueFormat;            // source.valueformat;

                    dr[column_allcontenttypes.ColumnName] = p.item.AllContentTypes.getEnumListFromFlags <CellContentType>().toCsvInLine();
                    dr[column_xpath.ColumnName]           = p.XPath; //.xpath;
                    _targetTable.Rows.Add(dr);
                }
            }

            return(targetTable);
        }
        public void Publish(folderNode folder, TableExtractionTaskReporting TaskReporting, aceAuthorNotation notation)
        {
            if (TaskReporting == null)
            {
                TaskReporting = new TableExtractionTaskReporting()
                {
                    baseOutputFolder    = folder,
                    currentOutputFolder = folder,
                };
            }

            List <DataTable> allReportTables      = new List <DataTable>();
            List <DataTable> trainingReportTables = new List <DataTable>();

            List <DataTable> validationReportTables = new List <DataTable>();

            //List<DataTable> trainingReportTables = new List<DataTable>();

            // DataSet complete_report = new DataSet();


            TaskValidationResult firstResult = null;

            foreach (KeyValuePair <TableExtractionTask, TaskValidationResult> pair in Results)
            {
                if (firstResult == null)
                {
                    firstResult = pair.Value;
                }
                pair.Value.Publish(folder, notation);

                propertyReport_invalid = pair.Value.PropertyValidation.GetReportTable(pair.Value, propertyReport_invalid, new List <ValidationOutcome>()
                {
                    ValidationOutcome.Invalid
                });
                propertyReport_valid = pair.Value.PropertyValidation.GetReportTable(pair.Value, propertyReport_valid, new List <ValidationOutcome>()
                {
                    ValidationOutcome.Validated
                });
                propertyReport_other = pair.Value.PropertyValidation.GetReportTable(pair.Value, propertyReport_other, new List <ValidationOutcome>()
                {
                    ValidationOutcome.Modified, ValidationOutcome.undefined
                });



                trainingReportTables.Add(pair.Value.ReportTable_Training);
                validationReportTables.Add(pair.Value.ReportTable_PropertyValudation);
                //  allReportTables.AddRange(pair.Value.ReportTables);
            }

            allReportTables.Add(propertyReport_invalid);
            allReportTables.Add(propertyReport_valid);
            allReportTables.Add(propertyReport_other);

            DataTable training_report = TaskReporting.GetTaskScore(Results.Keys).GetReportAndSave(TaskReporting.currentOutputFolder, notation);

            training_report.SetTitle("Training run results");
            training_report.GetReportAndSave(folder, notation);
            //allReportTables.Add(training_report);

            var overview_table = GetReportDataTable();

            //allReportTables.Add(overview_table);

            propertyReport_invalid.SetTitle("Invalid");
            propertyReport_valid.SetTitle("Valid");
            propertyReport_other.SetTitle("Other");

            allReportTables.GetReportAndSave(folder, notation, "property_reports");
            trainingReportTables.GetReportAndSave(folder, notation, "training_reports");
            validationReportTables.GetReportAndSave(folder, notation, "validation_reports");
            overview_table.GetReportAndSave(folder, notation);

            //complete_report.GetReportAndSave(folder, notation, "complete_evaluation");
        }