Ejemplo n.º 1
0
        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, "Внимание, репозиторий уже открыт")));
            }
        }
Ejemplo n.º 2
0
 public ReposetoryOpenedResultSimple(IPsnDataStorage psnDataStorage, IPsnDataInformationStorage psnDataInformationStorage, IDeviceInformationStorage deviceInformationStorage, IPsnDataCustomConfigurationsStorage psnDataCustomConfigurationsesStorage, IStorage <IPsnProtocolConfiguration> psnConfigurationsStorage)
 {
     _psnDataStorage                       = psnDataStorage;
     _psnDataInformationStorage            = psnDataInformationStorage;
     _deviceInformationStorage             = deviceInformationStorage;
     _psnDataCustomConfigurationsesStorage = psnDataCustomConfigurationsesStorage;
     _psnConfigurationsStorage             = psnConfigurationsStorage;
 }
Ejemplo n.º 3
0
        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("Информация об устройстве удалена из хранилища");
            }
        }
Ejemplo n.º 4
0
        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());
        }
Ejemplo n.º 5
0
        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);
                    });
                }
            }
        }
Ejemplo n.º 6
0
 public StreamedDataStorageRelayMemoryCache(IPsnDataStorage streamedDataStorage)
 {
     _streamedDataStorage = streamedDataStorage;
     _streamedDatas       = _streamedDataStorage.PsnDatas.ToList();
 }