Esempio n. 1
0
 private void BackgroundJob(object sender, DoWorkEventArgs e)
 {
     IsWaitingMode = true;
     DiagnosticSystemConnector[] connectors =
         e.Argument as DiagnosticSystemConnector[];
     foreach (DiagnosticSystemConnector cnctr in connectors)
     {
         try
         {
             HashSet <string> vins = new HashSet <string>();
             foreach (PsaTraceInfo info in cnctr.GetAllTraces())
             {
                 var viewModel = new ExportablePsaTraceViewModel(info);
                 traces.Add(viewModel);
                 if (vins.All(vin => vin != viewModel.Vin))
                 {
                     ExportableVehicleViewModel veh = new ExportableVehicleViewModel(
                         viewModel.Vin,
                         viewModel.Manufacturer,
                         viewModel.Mileage,
                         viewModel.VehicleModelName);
                     veh.Add(viewModel);
                     vins.Add(viewModel.Vin);
                     dispatcher.
                     BeginInvoke(DispatcherPriority.Normal,
                                 new AddToByVehiclesDelegate(AddTraceToByVehicles), veh);
                 }
                 else
                 {
                     dispatcher.
                     BeginInvoke(DispatcherPriority.Normal,
                                 new AddToExistingByVehicleDelegate(AddTraceToExistingByVehicle), viewModel);
                 }
             }
             e.Result = connectors;
         }
         catch (Exception exc)
         {
             Log.Error(exc, exc.Message);
         }
     }
 }
Esempio n. 2
0
        private void CheckTracesForAlreadyDisplayedAndDisplayNew(PortableData data)
        {
            // Select those traces that are not yet displayed.
            IList <PsaTrace> tracesToDisplay =
                data.PsaTraces.Where(t => !IsAlreadyDisplayed(t)).ToList();

            // Display traces that are ready to be displayed (possibly creating Vehicles for them).
            foreach (PsaTrace trace in tracesToDisplay)
            {
                if (!ByVehicles.Any(v => v.Vin.Equals(trace.Vin, StringComparison.OrdinalIgnoreCase)))
                {
                    // add vehicle, add trace to vehicle
                    ExportableVehicleViewModel newVehicle = new ExportableVehicleViewModel(
                        trace.Vin,
                        trace.Manufacturer,
                        trace.Mileage,
                        trace.VehicleModelName);
                    ExportablePsaTraceViewModel traceViewModel =
                        new ExportablePsaTraceViewModel(new PsaTraceInfo(trace, new PsaTraceMetadata()));
                    newVehicle.Traces.Add(traceViewModel);
                    traces.Add(traceViewModel);
                    ByVehicles.Add(newVehicle);
                }
                else
                {
                    // add trace to vehicle
                    ExportablePsaTraceViewModel traceViewModel =
                        new ExportablePsaTraceViewModel(new PsaTraceInfo(trace, new PsaTraceMetadata()));
                    ByVehicles.First(v => v.Vin.Equals(trace.Vin,
                                                       StringComparison.OrdinalIgnoreCase)).
                    Traces.Add(traceViewModel);
                    traces.Add(traceViewModel);
                }
            }
            if (tracesToDisplay.Count != 0)
            {
                synchronizer.StartSynchronizationAsync(traces.Select(t => t.ModelTraceInfo).ToList());
            }
        }
Esempio n. 3
0
 private void AddTraceToByVehicles(ExportableVehicleViewModel veh)
 {
     byVehicles.Add(veh);
 }