public void Open(Action <OnCompleteEventArgs> onComplete, Action <OnProgressChangeEventArgs> onProgressChange) { _uiNotifier.Notify(() => onProgressChange(new OnProgressChangeEventArgs(0))); if (!IsOpened) { IsOpened = true; _backWorker.AddWork( () => { try { var openResult = _openStorageFunc(); _psnDataStorage = openResult.PsnDataStorage; _psnDataInformtationStorage = openResult.PsnDataInformationStorage; _psnDataCustomConfigurationsStorage = openResult.PsnDataCustomConfigurationsesStorage; _deviceInformationStorage = openResult.DeviceInformationStorage; _psnConfigurationsStorage = openResult.PsnConfigurationsStorage; InitialTreeBuildUnsafe(pp => _uiNotifier.NotifyAndWait(() => onProgressChange(new OnProgressChangeEventArgs((int)pp)))); _uiNotifier.NotifyAndWait(() => onProgressChange(new OnProgressChangeEventArgs(100))); _uiNotifier.NotifyAndWait(() => onComplete(new OnCompleteEventArgs(OnCompleteEventArgs.CompleteResult.Ok, "Репозиторий успешно открыт"))); } catch (Exception ex) { _uiNotifier.NotifyAndWait(() => onComplete(new OnCompleteEventArgs(OnCompleteEventArgs.CompleteResult.Error, ex.ToString()))); IsOpened = false; } }); } else { _uiNotifier.Notify(() => onProgressChange(new OnProgressChangeEventArgs(100))); _uiNotifier.Notify(() => onComplete(new OnCompleteEventArgs(OnCompleteEventArgs.CompleteResult.Ok, "Внимание, репозиторий уже открыт"))); } }
public ReposetoryOpenedResultSimple(IPsnDataStorage psnDataStorage, IPsnDataInformationStorage psnDataInformationStorage, IDeviceInformationStorage deviceInformationStorage, IPsnDataCustomConfigurationsStorage psnDataCustomConfigurationsesStorage, IStorage <IPsnProtocolConfiguration> psnConfigurationsStorage) { _psnDataStorage = psnDataStorage; _psnDataInformationStorage = psnDataInformationStorage; _deviceInformationStorage = deviceInformationStorage; _psnDataCustomConfigurationsesStorage = psnDataCustomConfigurationsesStorage; _psnConfigurationsStorage = psnConfigurationsStorage; }
private static void ClearStorage(IPsnDataStorage storage, IDeviceInformationStorage devstorage) { var logs = storage.PsnDatas.ToList(); foreach (var psnLog in logs) { storage.Remove(psnLog.Id); Log("Лог удален из хранилища"); } var devInfos = devstorage.DeviceInformations.ToList(); foreach (var deviceInformation in devInfos) { devstorage.Remove(deviceInformation.Id); Log("Информация об устройстве удалена из хранилища"); } }
private static void SaveLogsToStorage(IPsnDataStorage srcPsnStorage, IDeviceInformationStorage srcDevInfoStorage, IPsnDataStorage dstPsnStorage, IDeviceInformationStorage dstDevInfoStorage) { Log("Локальное хранилище создано, число ПСН логов в хранилище: " + dstPsnStorage.PsnDatas.Count()); var devInfosInStorage = srcDevInfoStorage.DeviceInformations.ToList(); var psnLogsInStorage = srcPsnStorage.PsnDatas.ToList(); Log("Число информаций об устройстве на устройстве: " + devInfosInStorage.Count); foreach (var devInfo in devInfosInStorage) { if (!dstDevInfoStorage.DeviceInformations.Any(i => i.Name == devInfo.Name && i.Description == devInfo.Description)) { dstDevInfoStorage.Add(devInfo.Id, devInfo.Name, devInfo.Description); Log("Информация об устройстве сохранена в локальное хранилище"); } else { Log("Такая информация об устройстве уже есть в локальном харинилище"); } } Log("Число ПСН логов на устройстве: " + psnLogsInStorage.Count); foreach (var psnLog in srcPsnStorage.PsnDatas) { //Console.WriteLine("PsnLog " + psnLog.LogInformation.BeginTime.ToString()); if (!dstPsnStorage.PsnDatas.Any(pl => pl.Id.ToString() == psnLog.Id.ToString())) { dstPsnStorage.Add(psnLog.Id, psnLog, pp => Console.WriteLine(pp.ToString("f2"))); Log("Лог сохранен в локальное хранилище"); } else { Log("Такой лог уже есть в локальном хранилище"); } } Log("Число ПСН логов в хранилище после сохранения: " + dstPsnStorage.PsnDatas.Count()); }
private static void LoadAllStoragedSignals(IPsnDataStorage storage, IPsnProtocolConfiguration config) { var psnLogsInStorage = storage.PsnDatas.ToList(); Log("Число ПСН логов на устройстве: " + psnLogsInStorage.Count); Log("Конфигурация ПСН: " + config.Information); Log("Загрузка всех сигналов для всех логов..."); foreach (var psnLog in psnLogsInStorage) { Console.WriteLine("PsnLog " + psnLog); foreach (var psnDev in config.PsnDevices) { Log("Работаем с абонентом ПСН: " + psnDev.Name); IPsnData log = psnLog; IPsnProtocolDeviceConfiguration dev = psnDev; config.ForeachPsnMeterSignal(psnDev.Address, (cmdPartConfiguration, parameterConfiguration) => { var points = log.LoadTrend(config, cmdPartConfiguration, parameterConfiguration, DateTime.Now); Console.WriteLine(dev.Name + "/" + parameterConfiguration.Name + " = " + points.Count); return(false); }); } } }
public StreamedDataStorageRelayMemoryCache(IPsnDataStorage streamedDataStorage) { _streamedDataStorage = streamedDataStorage; _streamedDatas = _streamedDataStorage.PsnDatas.ToList(); }