/// /// Copyright (c) 2013-2018 Sensus Slovensko a.s. /// using System; using System.Collections.Generic; using System.Globalization; using System.IO; namespace Config.Entities { /// /// Stores one transition sequence containing a list of transition steps /// public class TransitionSequence : IHasName, IHasItemNr { public virtual int Id { get; protected set; } public virtual int ItemNr { get; set; } public virtual string Name { get; set; } public virtual string OriName { get; set; } /// Not mapped to database public virtual string Description { get; set; } /// Short description public virtual IList TransitionSteps { get; set; } public TransitionSequence() { TransitionSteps = new List(); } public TransitionSequence(string name, int itemNr) : this() { Name = name; ItemNr = itemNr; } public virtual TransitionSequence Clone() { TransitionSequence result = new TransitionSequence(); result.Name = Name; result.Description = Description; foreach (var step in TransitionSteps) { result.TransitionSteps.Add(step.Clone()); } return result; } public virtual void Export(StreamWriter output) { output.WriteLine(ItemNr.ToString(CultureInfo.InvariantCulture)); output.WriteLine(Name); output.WriteLine(Description); foreach (var step in TransitionSteps) { step.Export(output); } output.WriteLine(); output.Close(); } public static TransitionSequence Import(StreamReader input) { TransitionSequence result = new TransitionSequence(); result.ItemNr = int.Parse(input.ReadLine(), CultureInfo.InvariantCulture); result.Name = input.ReadLine(); result.Description = input.ReadLine(); while (true) { TransitionStep step = TransitionStep.Import(input, result); if (step == null) break; else result.TransitionSteps.Add(step); } return result; } public virtual string Compare(StreamReader inp) { System.Text.StringBuilder diff = new System.Text.StringBuilder(); const string fmt = "{0} = {1}\r\n (in the file {2})\r\n"; string ln; ln = inp.ReadLine(); /// skip ItemNr ln = inp.ReadLine(); if (ln != Name) { diff.AppendFormat(fmt, "Name", Name, ln); }; ln = inp.ReadLine(); if (ln != Description) { diff.AppendFormat(fmt, "Description", Description, ln); }; //foreach (var step in TransitionSteps) //{ // string testDiff = step.Compare(inp); // if (testDiff.Contains( //} return diff.ToString(); } } }