< Summary

Information
Class: ValidateLib.ResultCreators.Rdf.RdfResultWriter
Assembly: validatelib.dll
File(s): C:\skola_karlovka\RP\code\csv-validator\CSV_Validator\ValidateLib\ResultWriters\Rdf\RdfResultWriter.cs
Line coverage
100%
Covered lines: 60
Uncovered lines: 0
Coverable lines: 60
Total lines: 123
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

File(s)

C:\skola_karlovka\RP\code\csv-validator\CSV_Validator\ValidateLib\ResultWriters\Rdf\RdfResultWriter.cs

#LineLine coverage
 1using System.Globalization;
 2using ValidateLib.Results;
 3using VDS.RDF;
 4using VDS.RDF.Parsing;
 5using VDS.RDF.Writing;
 6
 7namespace ValidateLib.ResultCreators.Rdf
 8{
 9    public class RdfResultWriter : IResultWriter
 10    {
 11        protected CultureInfo culture;
 112        protected INodeFactory factory = new NodeFactory();
 113        public RdfResultWriter(CultureInfo? cultureInfo = null)
 14        {
 115            culture = cultureInfo ?? CultureInfo.InvariantCulture;
 116        }
 17        public void GenerateResult(string targetFilePath, ITableGroupValidationDetail validationDetails)
 18        {
 19
 120            Graph graph = new Graph();
 121            graph.LoadFromString(LocalizationManager.MessagesManager.GetString("RdfPrefix"), new TurtleParser());
 22
 123            INamespaceMapper mapper = graph.NamespaceMap;
 124            mapper.AddNamespace("validateIT", new Uri("https://example.com/validateIT/"));
 25
 26
 27
 128            var validationResultResource = CreateValidationResult(graph);
 129            WriteErrors(graph, validationDetails, validationResultResource);
 130            WriteWarnings(graph, validationDetails, validationResultResource);
 31
 132            using (TextWriter writer = new StreamWriter(targetFilePath))
 33            {
 134                CompressingTurtleWriter turtleWriter = new CompressingTurtleWriter();
 135                turtleWriter.Save(graph, writer);
 136            }
 137        }
 38
 39        protected INode CreateValidationResult(Graph graph)
 40        {
 141            INode validationResult = factory.CreateBlankNode();
 42
 143            var isValidationResult = new Triple(validationResult, RdfConstants.RDF_TYPE_NODE, RdfConstants.VALIDATION_RE
 144            graph.Assert(isValidationResult);
 145            return validationResult;
 46        }
 47
 48        protected INode CreateWarning(Graph graph, IMessageHolder warning)
 49        {
 150            INode warningNode = factory.CreateBlankNode();
 51
 152            var isWarning = new Triple(warningNode, RdfConstants.RDF_TYPE_NODE, RdfConstants.WARNING_CLASS_NODE);
 153            graph.Assert(isWarning);
 154            var hasMessage = new Triple(
 155                warningNode,
 156                RdfConstants.EARL_INFO_NODE,
 157                factory.CreateLiteralNode(warning.GetMessage(culture), culture.Name == new CultureInfo("sk-SK").Name ? R
 158            );
 159            graph.Assert(hasMessage);
 160            return warningNode;
 61        }
 62
 63
 64        protected INode CreateError(Graph graph, IMessageHolder error)
 65        {
 166            INode errorNode = factory.CreateBlankNode();
 67
 168            var isError = new Triple(errorNode, RdfConstants.RDF_TYPE_NODE, RdfConstants.ERROR_CLASS_NODE);
 169            graph.Assert(isError);
 170            var hasMessage = new Triple(
 171                errorNode,
 172                RdfConstants.EARL_INFO_NODE,
 173                factory.CreateLiteralNode(error.GetMessage(culture), culture == new CultureInfo("sk-SK") ? RdfConstants.
 174                );
 175            graph.Assert(hasMessage);
 176            return errorNode;
 77        }
 78
 79        protected void WriteErrors(Graph graph, ITableGroupValidationDetail validationDetails, INode validationResultNod
 80        {
 181            foreach (var error in validationDetails.GeneralErrors)
 82            {
 183                AddErrorToValidationResult(graph, error, validationResultNode);
 84            }
 85
 186            foreach (var result in validationDetails.TableValidationDetails)
 87            {
 188                foreach (var error in result.Errors)
 89                {
 190                    AddErrorToValidationResult(graph, error, validationResultNode);
 91                }
 92            }
 193        }
 94        protected void WriteWarnings(Graph graph, ITableGroupValidationDetail validationDetails, INode validationResultN
 95        {
 196            foreach (var warning in validationDetails.GeneralWarnings)
 97            {
 198                AddWarningToValidationResult(graph, warning, validationResultNode);
 99            }
 1100            foreach (var result in validationDetails.TableValidationDetails)
 101            {
 1102                foreach (var warning in result.Warnings)
 103                {
 1104                    AddWarningToValidationResult(graph, warning, validationResultNode);
 105                }
 106            }
 1107        }
 108
 109        protected void AddWarningToValidationResult(Graph graph, IMessageHolder warning, INode validationResult)
 110        {
 1111            var warningNode = CreateWarning(graph, warning);
 1112            var hasWarning = new Triple(validationResult, RdfConstants.HAS_WARNING_PROPERTY_NODE, warningNode);
 1113            graph.Assert(hasWarning);
 1114        }
 115
 116        protected void AddErrorToValidationResult(Graph graph, IMessageHolder error, INode validationResult)
 117        {
 1118            var errorNode = CreateError(graph, error);
 1119            var hasError = new Triple(validationResult, RdfConstants.HAS_ERROR_PROPERTY_NODE, errorNode);
 1120            graph.Assert(hasError);
 1121        }
 122    }
 123}