Ejemplo n.º 1
0
        public void Write(IEnumerable <DataCheckItem> dataCheckItems, XDocument originalDataChecksDocument,
                          Stream destinationStream, IDataCheckerContext dataCheckerContext)
        {
            //keeping "other" data in the "original" document
            if (originalDataChecksDocument == null)
            {
                throw new ArgumentNullException(nameof(originalDataChecksDocument));
            }
            if (destinationStream == null)
            {
                throw new ArgumentNullException(nameof(destinationStream));
            }
            if (dataCheckerContext == null)
            {
                throw new ArgumentNullException(nameof(dataCheckerContext));
            }
            Contract.EndContractBlock();

            try
            {
                var dataChecksDocument = new XDocument(originalDataChecksDocument);
                var dataChecksElement  = dataChecksDocument.Descendants("DataChecks").FirstOrDefault()
                                         ?? new XElement("DataChecks");
                RemoveDataCheckItems(dataChecksElement);
                ReplaceDataCheckItems(dataCheckItems, dataChecksElement);
                dataChecksDocument.Save(destinationStream);
                dataCheckerContext.LogMessage("Änderungen wurden erfolgreich gespeichert.", TraceLevel.Info);
            }
            catch (Exception exception)
            {
                dataCheckerContext.LogMessage($"Datei konnte nicht gespeichert werden: [{exception.Message}]", TraceLevel.Error);
            }
        }
        public DataCheckReadResult Read(Stream dataChecksXmlStream, IDataCheckerContext dataCheckerContext)
        {
            if (dataChecksXmlStream == null)
            {
                throw new ArgumentNullException(nameof(dataChecksXmlStream));
            }
            if (dataCheckerContext == null)
            {
                throw new ArgumentNullException(nameof(dataCheckerContext));
            }
            Contract.EndContractBlock();

            return(TryRead
                   (
                       () =>
            {
                var dataChecksDocument = XDocument.Load(dataChecksXmlStream);
                var dataCheckItems =
                    from dataCheckElement
                    in dataChecksDocument.Descendants("DataCheck")
                    select new DataCheckItem(dataCheckElement);

                return new DataCheckReadResult(dataChecksDocument, dataCheckItems);
            }, dataCheckerContext
                   ));
        }
 public DataCheckReadResult Read(string fullFileName, IDataCheckerContext dataCheckerContext)
 {
     return(TryRead(() =>
     {
         using (var fileStream = new FileStream(fullFileName, FileMode.Open))
         {
             return Read(fileStream, dataCheckerContext);
         }
     }, dataCheckerContext));
 }
 private DataCheckReadResult TryRead(Func <DataCheckReadResult> toExecuteAction, IDataCheckerContext dataCheckerContext)
 {
     try
     {
         return(toExecuteAction());
     }
     catch (Exception exception)
     {
         var errorMessage = $"Datei kann nicht gelesen werden: [{exception.Message}]";
         dataCheckerContext.LogMessage(errorMessage, TraceLevel.Error);
         return(new DataCheckReadResult(errorMessage));
     }
 }