using System; using System.Collections.Generic; using System.Linq; using System.Text; using HeuristicLab.PDPSimulation.DomainModel; using HeuristicLab.Core; using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; using HeuristicLab.Common; namespace HeuristicLab.PDPSimulation { [StorableClass] public class VehicleHistory: Item { [Storable] public string VehicleName { get; private set; } [Storable] public List VehicleState { get; private set; } [Storable] public List VehicleAvailability { get; private set; } [Storable] public List AvailabilityInformation { get; private set; } [Storable] public List ActiveOrders { get; private set; } [Storable] public List AssignedOrders { get; private set; } public VehicleHistory(string vehicleName) { VehicleName = vehicleName; VehicleState = new List(); VehicleAvailability = new List(); AvailabilityInformation = new List(); ActiveOrders = new List(); AssignedOrders = new List(); } [StorableConstructor] private VehicleHistory(bool deserializing) : base(deserializing) { } private VehicleHistory(VehicleHistory original, Cloner cloner) : base(original, cloner) { VehicleName = original.VehicleName; VehicleState = new List(original.VehicleState); AvailabilityInformation = new List(original.AvailabilityInformation); ActiveOrders = new List(); foreach (Order order in original.ActiveOrders) ActiveOrders.Add(cloner.Clone(order)); AssignedOrders = new List(); foreach (Order order in original.AssignedOrders) AssignedOrders.Add(cloner.Clone(order)); VehicleAvailability = new List(); VehicleAvailability.AddRange(original.VehicleAvailability); } public override IDeepCloneable Clone(Cloner cloner) { return new VehicleHistory(this, cloner); } } [StorableClass] public class VehicleHistoryVisualization: Item { [Storable] public double ResultCollectionInterval { get; set; } [Storable] public List VehicleHistory { get; private set; } public VehicleHistoryVisualization() { VehicleHistory = new List(); ResultCollectionInterval = 1.0; } [StorableConstructor] protected VehicleHistoryVisualization(bool deserializing) : base(deserializing) { } protected VehicleHistoryVisualization(VehicleHistoryVisualization original, Cloner cloner) : base(original, cloner) { VehicleHistory = new List(); foreach (VehicleHistory history in original.VehicleHistory) { VehicleHistory.Add(cloner.Clone(history)); } } public override IDeepCloneable Clone(Cloner cloner) { return new VehicleHistoryVisualization(this, cloner); } public event EventHandler ContentChanged; private void OnContentChanged() { var changed = ContentChanged; if (changed != null) changed(this, EventArgs.Empty); } public void Refresh() { OnContentChanged(); } } }