public T GetData <T> () where T : SerializedRoot, new ()
        {
            if (mLoadedData == null && mLoadProcess != null)
            {
                TextReader tr = new StringReader(mLoadProcess.GetContent());

                XmlSerializer s = new XmlSerializer(typeof(T));
                mLoadedData = s.Deserialize(tr) as T;
                return(mLoadedData as T);
            }
            else
            {
                return(null);
            }
        }
Exemple #2
0
        private void SetUpObjects()
        {
            Outer2 = new OuterObjectWithInner2
            {
                Id = 10,
                ContainedObject = new InnerObject
                {
                    Value   = 11,
                    Content = "Some content"
                },
                Name        = "Hello",
                InnerObject = new InnerObject
                {
                    Value   = 12,
                    Content = "More content"
                }
            };

            Outer = new OuterObjectWithInner
            {
                Id = 10,
                ContainedObject = new InnerObject
                {
                    Value   = 11,
                    Content = "Some content"
                },
                Name        = "Hello",
                InnerObject = new InnerObject
                {
                    Value   = 12,
                    Content = "More content"
                }
            };

            Root2 = new SerializedRoot2 {
                Root = Outer2
            };
            Root = new SerializedRoot {
                Root = Outer
            };
        }
 public void Load <T> (string pPath) where T : SerializedRoot, new ()
 {
     mLoadedData  = null;
     mLoadProcess = Storage.Load(pPath);
 }
 public void CreateEmpty <T> () where T : SerializedRoot, new ()
 {
     mLoadedData = new T();
 }
        public OperationResult <SerializedRoot> Save(string Filename, SerializationContainer Request)
        {
            try
            {
                var SettingsResult = SettingsBll.GetSettings();
                ValidateResult(SettingsResult);
                var Settings = SettingsResult.Result;

                var Result = new OperationResult <SerializedRoot>();

                var Root = new SerializedRoot();
                Root.AreaId = Request.Area.Id;
                Root.LoadedESTWs.AddRange(Request.Area.ESTWs.Where(e => e.IsLoaded).Select(e => new SerializedESTW
                {
                    ESTWId    = e.Id,
                    Time      = e.Time,
                    StartTime = e.StartTime,
                    IsActive  = (DateTime.Now - e.LastUpdatedOn).TotalSeconds < Settings.EstwTimeout,
                }));

                Root.Version = Assembly.GetEntryAssembly().GetCustomAttribute <AssemblyInformationalVersionAttribute>()?.InformationalVersion;

                foreach (var Train in Request.Area.LiveTrains.Values)
                {
                    var SerializedTrain = new SerializedTrain();
                    SerializedTrain.TrainNumber    = Train.Train.Number;
                    SerializedTrain.Delay          = Train.Delay;
                    SerializedTrain.LastModified   = Train.LastModified;
                    SerializedTrain.CreatedOn      = Train.CreatedOn;
                    SerializedTrain.TrainDirection = Train.Direction;
                    SerializedTrain.IsDestinationStationCancelled = Train.IsDestinationStationCancelled;

                    foreach (var block in Train.BlockHistory)
                    {
                        var serializedBlock = new SerializedBlock();
                        serializedBlock.EstwId    = block.Track.Station.ESTW.Id;
                        serializedBlock.Name      = block.Name;
                        serializedBlock.Direction = block.Direction;
                        SerializedTrain.BlockHistory.Add(serializedBlock);
                    }

                    if (Train.Block != null)
                    {
                        SerializedTrain.CurrentEstwId  = Train.Block.Track.Station.ESTW.Id;
                        SerializedTrain.Block          = Train.Block.Name;
                        SerializedTrain.BlockDirection = Train.Block.Direction;
                    }

                    foreach (var Schedule in Train.Schedules)
                    {
                        var SerializedSchedule = new SerializedSchedule();
                        SerializedSchedule.EstwId                 = Schedule.Schedule.Station.ESTW.Id;
                        SerializedSchedule.StationShortSymbol     = Schedule.Schedule.Station.ShortSymbol;
                        SerializedSchedule.StationTime            = Schedule.Schedule.Time;
                        SerializedSchedule.LiveArrival            = Schedule.LiveArrival;
                        SerializedSchedule.LiveDeparture          = Schedule.LiveDeparture;
                        SerializedSchedule.IsArrived              = Schedule.IsArrived;
                        SerializedSchedule.IsDeparted             = Schedule.IsDeparted;
                        SerializedSchedule.ExpectedArrival        = Schedule.ExpectedArrival;
                        SerializedSchedule.ExpectedDeparture      = Schedule.ExpectedDeparture;
                        SerializedSchedule.ExpectedDelayArrival   = Schedule.ExpectedDelayArrival;
                        SerializedSchedule.ExpectedDelayDeparture = Schedule.ExpectedDelayDeparture;
                        SerializedSchedule.IsComposed             = Schedule.IsComposed;
                        SerializedSchedule.IsPrepared             = Schedule.IsPrepared;
                        SerializedSchedule.IsCancelled            = Schedule.IsCancelled;
                        SerializedSchedule.IsManuallyModified     = Schedule.IsManuallyModified;

                        if (Schedule.LiveTrack != null)
                        {
                            SerializedSchedule.LiveTrack = Schedule.LiveTrack.Name;
                        }

                        foreach (var Delay in Schedule.Delays)
                        {
                            var SerializedDelay = new SerializedDelay();
                            SerializedDelay.Type     = Delay.Type;
                            SerializedDelay.Minutes  = Delay.Minutes;
                            SerializedDelay.Reason   = Delay.Reason;
                            SerializedDelay.CausedBy = Delay.CausedBy;
                            SerializedSchedule.Delays.Add(SerializedDelay);
                        }

                        SerializedTrain.Schedules.Add(SerializedSchedule);
                    }

                    Root.LiveTrains.Add(SerializedTrain);
                }

                Root.Windows         = Request.Windows;
                Root.VisibleStations = Request.VisibleStations;
                Root.VisibleTrains   = Request.VisibleTrains;
                Root.HiddenSchedules = Request.HiddenSchedules;

                using (var Stream = new FileStream(Filename, FileMode.Create, FileAccess.Write))
                {
                    m_Formatter.Serialize(Stream, Root);
                }

                Result.Result    = Root;
                Result.Succeeded = true;
                return(Result);
            }
            catch (Exception ex)
            {
                return(new OperationResult <SerializedRoot> {
                    Message = ex.Message
                });
            }
        }