Esempio n. 1
0
        private void Test()
        {
            var first                 = otriples_op.Root.ElementValues().Cast <object[]>().First();
            int currentPredicate      = (int)first[1];
            var currentDiapason       = new Diapason();
            var currentObjectDiapason = new Diapason();
            int currentObj            = (int)first[2];

            using (StreamWriter wr = new StreamWriter(@"..\..\temp.txt"))
                foreach (object[] spo in otriples_op.Root.ElementValues())
                {
                    if (currentPredicate == (int)spo[1] && currentObj == (int)spo[2])
                    {
                        currentDiapason.numb++;
                    }
                    else
                    {
                        currentPredicate = (int)spo[1];
                        wr.WriteLine("diapasonPredicate " + currentDiapason.numb);
                        currentDiapason.start += currentDiapason.numb;
                        currentDiapason.numb   = 1;
                        if (currentObj == (int)spo[2])
                        {
                            currentObjectDiapason.numb++;
                        }
                        else
                        {
                            currentObj = (int)spo[2];
                            currentObjectDiapason.start += currentObjectDiapason.numb;
                            //      wr.WriteLine("currentObjectDiapason " + currentObjectDiapason.numb);
                            currentObjectDiapason.numb = 1;
                        }
                    }
                }
        }
Esempio n. 2
0
        public void Load()
        {
            ewtable.Clear();
            ewtable.Fill(new object[0]);
            foreach (var scanner in scanners)
            {
                scanner.Start();
            }

            while (NotFinished(scanners))
            {
                string     key   = Least(scanners);
                Diapason[] diaps = Enumerable.Repeat <Diapason>(new Diapason()
                {
                    start = 0L, numb = 0L
                }, 3).ToArray();
                object[] pval = new object[4];
                pval[0] = key;
                for (int ind = 0; ind < 3; ind++)
                {
                    if (scanners[ind].HasValue && scanners[ind].KeyCurrent == key)
                    {
                        Diapason di = scanners[ind].Scan();
                        diaps[ind] = di;
                    }
                    pval[ind + 1] = new object[] { diaps[ind].start, diaps[ind].numb };
                }
                ewtable.Root.AppendElement(pval);
            }
            ewtable.Flush();
        }
Esempio n. 3
0
        /// <summary>
        /// парсинг диапазона значений dobule
        /// </summary>
        /// <param name="v"></param>
        /// <returns></returns>
        private Diapason <double> parseDiapason(string v)
        {
            string[]          arr = v.Split('-');
            Diapason <double> res = new Diapason <double>(double.Parse(arr[0].Replace('.', Constants.DecimalSeparator)), double.Parse(arr[1].Replace('.', Constants.DecimalSeparator)));

            return(res);
        }
        public override Dictionary <PointLatLng, ManualLimits> LoadDatabaseFile()
        {
            Dictionary <PointLatLng, ManualLimits> limits = new Dictionary <PointLatLng, ManualLimits>();
            StreamReader sr = new StreamReader(FileName);

            sr.ReadLine();//пропускаем первую строку-заголовок
            while (!sr.EndOfStream)
            {
                string   line = sr.ReadLine();
                string[] arr  = line.Split(';'); //название;широта;долгота;минимальная скорость;максимальная скорость
                if (arr.Length < 5)
                {
                    continue;
                }
                Diapason <double> d  = new Diapason <double>(double.Parse(arr[3].Replace('.', Constants.DecimalSeparator)), double.Parse(arr[4].Replace('.', Constants.DecimalSeparator)));
                PointLatLng       p  = new PointLatLng(double.Parse(arr[1].Replace('.', Constants.DecimalSeparator)), double.Parse(arr[2].Replace('.', Constants.DecimalSeparator)));
                ManualLimits      ml = new ManualLimits(new List <Diapason <double> >(), new List <Diapason <double> >()
                {
                    d
                })
                {
                    Position = p, Name = arr[0]
                };
                if (!limits.ContainsKey(p))
                {
                    limits.Add(p, ml);
                }
            }
            sr.Close();
            return(limits);
        }
Esempio n. 5
0
        public static IEnumerable <OValRowInt> _Spo(this IEnumerable <OValRowInt> rows, short subj, short pred, short obj)
        {
            // Определены объект и предикат, нужно найти множество субъектов, побочным эффектом будет определение
            // и фиксация диапазона. Если диапазон уже есть, то диапазон не вычисляется, а используется
            var query = rows.SelectMany(rw =>
            {
                var row       = rw.row;
                OVal obj_oval = row[obj];
                Diapason diap = new Diapason();
                if (obj_oval.spo_number >= 0)
                { // Диапазон определен
                    diap.start = obj_oval.spo_start;
                    diap.numb  = obj_oval.spo_number;
                }
                else
                {
                    Diapason di = rw.StoreAbstract.GetDiap_op(obj_oval.entity);
                    diap.start  = obj_oval.spo_start = di.start;
                    diap.numb   = obj_oval.spo_number = di.numb;
                }
                return(rw.StoreAbstract.GetSubjInDiapason(diap, row[pred].entity)
                       .Select(su =>
                {
                    row[subj].entity = su; row[subj].op_number = -1; row[subj].spd_number = -1; row[subj].spo_number = -1;
                    return new OValRowInt(rw.StoreAbstract, row);
                }));
            });

            return(query);
        }
Esempio n. 6
0
        public static IEnumerable <OValRowInt> _spo(this IEnumerable <OValRowInt> rows, short subj, short pred, short obj)
        {
            var query = rows.Where(ovr =>
            {
                OVal[] row = ovr.row;
                // будем "плясать" от субъекта. TODO: наверное можно как-то задействовать и объектную цепочку
                OVal subj_oval = row[subj];
                OVal pred_oval = row[pred];
                OVal obj_oval  = row[obj];
                // Проверим через шкалу
                if (!ovr.StoreAbstract.Scale.ChkInScale(subj_oval.entity, pred_oval.entity, obj_oval.entity))
                {
                    return(false);
                }
                Diapason diap = new Diapason();
                if (subj_oval.spo_number >= 0)
                { // Диапазон определен
                    diap.start = subj_oval.spo_start;
                    diap.numb  = subj_oval.spo_number;
                }
                else
                {
                    Diapason di = ovr.StoreAbstract.GetDiap_spo(subj_oval.entity);
                    diap.start  = subj_oval.spo_start = di.start;
                    diap.numb   = subj_oval.spo_number = di.numb;
                }

                return(ovr.StoreAbstract.CheckPredObjInDiapason(diap, ovr.row[pred].entity, ovr.row[obj].entity));
            });

            return(query);
        }
Esempio n. 7
0
        /// <summary>
        /// Получение триплетов из диапазона, соответствующих заданному второму ключу
        /// </summary>
        /// <param name="dia">Диапазон в индексном массиве. Есть специальные требования к диапазону</param>
        /// <param name="key2">Ключ2 по которому фильтруется результарующее множество</param>
        /// <returns>Возвращает поток триплетов в объектной форме</returns>
        public IEnumerable <object> GetAllInDiap(Diapason dia, Tkey key2)
        {
            if (dia.IsEmpty())
            {
                return(Enumerable.Empty <object>());
            }
            int     hkey   = Half2Producer(key2);
            PaEntry entry  = Table.Element(0);
            var     query1 = index_cell.Root.BinarySearchAll(dia.start, dia.numb, ent =>
            {
                object[] va = (object[])ent.Get();
                int hk      = (int)va[2];
                int cmp     = hk.CompareTo(hkey);
                return(cmp);
            }).Select(ent => ent.Get())
                             .Where(va => (int)((object[])va)[2] == hkey);
            var query2 = index_cell.Root.ElementValues(dia.start, dia.numb)
                         .Where(va => (int)((object[])va)[2] == hkey);
            IEnumerable <object> query = dia.numb > 30 ? query1 : query2;

            return(query
                   .Select(va =>
            {
                long off = (long)((object[])va)[0];
                entry.offset = off;
                return entry.Get();
            })
                   .Where(two => !(bool)((object[])two)[0] && Key2Producer(two).CompareTo(key2) == 0)
                   .Select(two => ((object[])((object[])two)[1])));
        }
Esempio n. 8
0
        public object Get(int search_key)
        {
            long offset;

            if (dic1 != null && dic1.Count > 0 && dic1.TryGetValue(search_key, out offset))
            {
                //return keyvalue_seq.Root.Element(0).SetOffset(offset).Get();
                return(keyvalue_seq.GetElement(offset));
            }
            if (dic2 != null && dic2.Count > 0 && dic2.TryGetValue(search_key, out offset))
            {
                //return ((object[])keyvalue_seq.Root.Element(0).SetOffset(offset).Get())[1];
                return(((object[])keyvalue_seq.GetElement(offset))[1]);
            }
            Diapason diap = GetDia(search_key);
            //int ifirst = ScaleExt.Get8FirstIndexOf((int)diap.start, (int)diap.numb, keys_arr, search_key);
            //if (ifirst == -1)
            //{
            //    return null;
            //}
            //offset = (long)offsets.Root.Element(ifirst).Get();
            //return keyvalue_seq.Root.Element(0).SetOffset(offset).Get();
            int ind = Array.BinarySearch <int>(keys_arr, search_key);

            if (ind == -1)
            {
                return(null);
            }
            return(keyvalue_seq.GetElement((long)offsets.GetElement((long)offsets.ElementOffset(ind))));
        }
Esempio n. 9
0
        // Определение всех данных по заданным s-p
        public static IEnumerable <OValRowInt> _spD(this IEnumerable <OValRowInt> rows, short subj, short pred, short dat)
        {
            var query = rows.SelectMany(ovr =>
            {
                OVal[] row     = ovr.row;
                OVal subj_oval = row[subj];
                OVal pred_oval = row[pred];
                OVal dat_oval  = row[dat];
                Diapason diap  = new Diapason();
                if (subj_oval.spd_number >= 0)
                { // Диапазон определен
                    diap.start = subj_oval.spd_start;
                    diap.numb  = subj_oval.spd_number;
                }
                else
                {
                    Diapason di = ovr.StoreAbstract.GetDiapason_spd(subj_oval.entity);
                    diap.start  = subj_oval.spd_start = di.start;
                    diap.numb   = subj_oval.spd_number = di.numb;
                }
                return(ovr.StoreAbstract.GetDatInDiapason(diap, row[pred].entity)
                       .Select(lit =>
                {
                    row[dat].lit = lit;
                    return new OValRowInt(ovr.StoreAbstract, row);
                }));
            });

            return(query);
        }
        public void Load()
        {
            Diapason current = new Diapason()
            {
                start = 0, numb = 1
            };
            int hashCurrent = GetHash((int)entites.EWTable.Root.Element(0).Field(0).Get());

            foreach (int hashNew in
                     entites.EWTable.Root.Elements()
                     .Skip(1)
                     .Select(entry => entry.Field(0).Get())
                     .Cast <int>()
                     .Select(GetHash))
            {
                if (hashNew == hashCurrent)
                {
                    current.numb++;
                }
                else
                {
                    Diapasons[hashCurrent] = current;
                    current = new Diapason()
                    {
                        start = current.start + current.numb, numb = 1
                    };
                    hashCurrent = hashNew;
                }
            }
            Diapasons[hashCurrent] = current;
        }
Esempio n. 11
0
 /// <summary>
 /// создает новый экземпляр
 /// </summary>
 public Options()
 {
     StaticRegionLimitsSourceFile              = Application.StartupPath + "\\Data\\staticRegionLimits.txt";
     StaticMeteostationCoordinatesSourceFile   = Application.StartupPath + "\\Data\\staticMeteostationCoordinates.txt";
     StaticAMSDatabaseSourceFile               = Application.StartupPath + "\\Data\\AMS.database.txt";
     StaticFlugerDatabaseSourceFile            = Application.StartupPath + "\\Data\\Fluger.database.txt";
     StaticEquipmentDatabaseSourceFile         = Application.StartupPath + "\\Data\\Equipment.database.txt";
     StaticMicroclimateTableDatabaseSourceFile = Application.StartupPath + "\\Data\\Microclimate.table.txt";
     StaticMesoclimateTableDatabaseSourceFile  = Application.StartupPath + "\\Data\\Mesoclimate.table.txt";
     StaticRP5DatabaseSourceDirectory          = Application.StartupPath + "\\Data\\rp5.Database";
     QualifierSectionLength      = 20; //20 измерений
     QualifierDaysToNewInterval  = 30; //1 месяц
     QualifierDaysToBeginMissing = 30; //1 месяца
     AirDensity = 1.226;
     SuitAMSMaximalRelativeSpeedDeviation    = 0.8;
     UseSuitAMSMaximalRelativeSpeedDeviation = false;
     MinimalSpeedDeviation               = 0.1d;
     MinimalCorrelationCoeff             = 0.7;
     MinimalCorrelationControlParametres = new List <MeteorologyParameters>()
     {
         MeteorologyParameters.Speed
     };
     NearestMSRadius = 50e3;//50 km
     NormalLawPirsonCoefficientDiapason = new Diapason <double>(0, 5);
     CurrentSpeedGradationType          = GradationTypes.Voeykow;
     UserSpeedGradation  = new UserGradation();
     TextImportState     = new TextImporterState();
     CalculateAirDensity = false;
     ETOPO2Folder        = Application.StartupPath + "\\Data\\ETOPO";
     RP5SearchEngine     = RP5SearchEngine.DBSearch;
     RP5SourceEngine     = RP5SourceType.OnlineAPI;
     LoadNasaLastPoint   = PointLatLng.Empty;
 }
Esempio n. 12
0
        public object Get(int search_key)
        {
            long offset;

            if (dic1 != null && dic1.Count > 0 && dic1.TryGetValue(search_key, out offset))
            {
                return(((object[])keyvalue_seq.Root.Element(0).SetOffset(offset).Get())[1]);
            }
            if (dic2 != null && dic2.Count > 0 && dic2.TryGetValue(search_key, out offset))
            {
                return(((object[])keyvalue_seq.Root.Element(0).SetOffset(offset).Get())[1]);
            }
            Diapason diap = GetDia(search_key);
            //int ifirst = 666888;
            int ifirst = Program.Get8FirstIndexOf((int)diap.start, (int)diap.numb, keys_arr, search_key);

            //int ifirst = Program.Get8FirstIndexOf(0, keys_arr.Length, keys_arr, search_key);
            if (ifirst == -1)
            {
                return(null);
            }
            //entry.offset = offsets[ifirst]; // Использование массива
            //entry.offset = (long)key_index.Root.Element(ifirst).Field(1).Get(); // Использование всего индекса
            offset = (long)offsets.Root.Element(ifirst).Get();
            return(((object[])keyvalue_seq.Root.Element(0).SetOffset(offset).Get())[1]);
        }
Esempio n. 13
0
        public async Task <IActionResult> Edit(int id, [Bind("DiapasonId,Diapason1")] Diapason diapason)
        {
            if (id != diapason.DiapasonId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(diapason);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!DiapasonExists(diapason.DiapasonId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(diapason));
        }
Esempio n. 14
0
        /// <summary>
        /// получить ограничения скоростей с заданного региона
        /// </summary>
        /// <param name="region">информация о регионе</param>
        /// <param name="geocoder">геокодер для получения координат</param>
        /// <param name="checkStop">функция проверки отмены</param>
        /// <param name="act">действие при изменении процента выполнения</param>
        /// <param name="current_region">номер текущего региона (передавать в  act)</param>
        /// <param name="total_regions">всего регионов (передавать в  act)</param>
        /// <returns></returns>
        public List <ManualLimits> GetLimits(RegionInfo region, IGeocoderProvider geocoder, Func <bool> checkStop = null, Action <int, int, string, int, int> act = null, int current_region = -1, int total_regions = -1)
        {
            List <BaseLimit>    bases = getBasesLimits(region);
            List <ManualLimits> res   = new List <ManualLimits>();
            int counter = 0;

            foreach (BaseLimit lim in bases)
            {
                try
                {
                    if (checkStop.Invoke())
                    {
                        return(res);
                    }
                    if (act != null)
                    {
                        act.Invoke(current_region, total_regions, region.Name, counter, bases.Count);
                    }

                    Diapason <double> speeds = new Diapason <double>(0, lim.MaxSpeed);
                    ManualLimits      limit  = new ManualLimits(null, new List <Diapason <double> >()
                    {
                        speeds
                    });
                    limit.Name     = lim.Name;
                    limit.Position = geocoder.GetCoordinate(lim.Name);
                    res.Add(limit);
                    counter++;
                }
                catch (Exception ex)
                { continue; }
            }
            return(res);
        }
Esempio n. 15
0
        public int[] GetAllPrimaryByExternal(int exindnom, int exkey)
        {
            //TODO: нет концепции динамики для внешних индексов, тут должо быть решение
            if (exindexes == null || exindexes.Length <= exindnom)
            {
                throw new Exception("Err: 2983883");
            }
            var exindx = exindexes[exindnom];

            // Будут объединены результаты выборки из словаря и выборки из статического индекса
            List <int> frdic;

            int[] res;
            if (exindx.ekey_idlist.TryGetValue(exkey, out frdic))
            {
                res = frdic.ToArray();
            }
            else
            {
                res = new int[0];
            }

            if (exindx.GetDia == null)
            {
                return(res);
            }
            Diapason d = exindx.GetDia(exkey);

            if (d.IsEmpty())
            {
                return(res);
            }
            int start  = (int)d.start;
            int finish = start + (int)d.numb;

            for (; start < finish; start++)
            {
                if (exindx.key_arr[start] == exkey)
                {
                    break;
                }
            }
            if (start == finish)
            {
                return(res);
            }
            for (; finish > start; finish--)
            {
                if (exindx.key_arr[finish - 1] == exkey)
                {
                    break;
                }
            }
            //var query = exindx.prikeys.Root.ElementValues(start, finish - start).Cast<int>();
            var query = Enumerable.Range(start, finish - start).Select(i => exindx.exprikeys.ElementOffset(i))
                        .Select(off => ((object[])exindx.exprikeys.GetElement(off))[1]).Cast <int>();

            return(res.Concat(query).ToArray());
        }
Esempio n. 16
0
        public void TestScale()
        {
            int[]    arr1      = Enumerable.Range(0, 160).ToArray();
            var      scale_fun = Scale.GetDiaFunc32(arr1);
            int      index     = 81;
            Diapason dia       = scale_fun(index);

            Assert.IsTrue(dia.start <= index && dia.start + dia.numb > index, "" + index + " in " + dia.start + " " + dia.numb);
        }
Esempio n. 17
0
        public async Task DeleteDiapason(int diapasonId)
        {
            Diapason di = _context.Diapasons.Find(diapasonId);

            if (di != null)
            {
                _context.Diapasons.Remove(di);
                await _context.SaveChangesAsync();
            }
        }
Esempio n. 18
0
        /// <summary>
        /// проверяет скорости и направления в заданном ряду на соответствие нормальному закону распределения.
        /// Возвращает false если ряд не соответствует
        /// </summary>
        /// <param name="baseRange">проверяемый ряд</param>
        /// <param name="acceptDiapason">допустимый диапазон</param>
        /// <returns></returns>
        internal static bool CheckNormalLaw(RawRange baseRange, Diapason <double> acceptDiapason)
        {
            return(true);

            double Xi_speed = checkNormalLaw(baseRange, MeteorologyParameters.Speed);
            double Xi_dir   = checkNormalLaw(baseRange, MeteorologyParameters.Direction);
            double f        = Math.Max(Xi_dir, Xi_speed); //максимально расхождение

            return(acceptDiapason.From < f && acceptDiapason.To > f);
        }
Esempio n. 19
0
        /*
         *      public IEnumerable<int> GetObjInDiap(Diapason di, int pred)
         *      {
         *          return otriples.Root.BinarySearchAll(di.start, di.numb, ent => ((int)ent.Field(1).Get()).CompareTo(pred))
         *              .Select(en => (int)en.Field(2).Get());
         *      }
         */
        public IEnumerable <int> GetSubjInDiapason(Diapason di, int pred)
        {
            //return otriples_op.Root.BinarySearchAll(di.start, di.numb, ent => ((int)ent.Field(1).Get()).CompareTo(pred))
            //    .Select(en => (int)en.Field(0).Get());

            Diapason internal_diap = otriples_op.Root.BinarySearchDiapason(di.start, di.numb, ent => ((int)ent.Field(0).Get()).CompareTo(pred));

            return(otriples_op.Root.Elements(internal_diap.start, internal_diap.numb)
                   .Select(ent => (object[])ent.Get())
                   .Select(p_obj => (int)((object[])p_obj)[1]));
        }
Esempio n. 20
0
        public async Task <IActionResult> Create([Bind("DiapasonId,Diapason1")] Diapason diapason)
        {
            if (ModelState.IsValid)
            {
                _context.Add(diapason);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(diapason));
        }
Esempio n. 21
0
        public IEnumerable <Literal> GetDatInDiapason(Diapason di, int pred)
        {
            Diapason internal_diap = dtriples_sp.Root.BinarySearchDiapason(di.start, di.numb, ent =>
            {
                return(((int)ent.Field(1).Get()).CompareTo(pred));
            });

            return(dtriples_sp.Root.ElementValues(internal_diap.start, internal_diap.numb)
                   .Cast <object[]>()
                   .Select(en => (long)en[1])
                   .Select(offset => LiteralStore.Read(offset, PredicatesCoding.LiteralVid[pred])));
        }
Esempio n. 22
0
 public void TimeDiapason()
 {
     Assert.AreEqual(Diapason.CreateTime("23:00-;-01:30").Pieces.JoinToString(", "), Diapason.CreateTime("23:00-01:30").Pieces.JoinToString(", "));
     Assert.IsTrue("10:30-11:48,12,13:00:16,18:47-".TimeDiapasonContains(FlexibleParser.ParseTime("11:43")));
     Assert.IsTrue("10:30-11:48,12,13:00:16,18:47-".TimeDiapasonContains(FlexibleParser.ParseTime("11:48")));
     Assert.IsFalse("10:30-11:48,12,13:00:16,18:47-".TimeDiapasonContains(FlexibleParser.ParseTime("11:49")));
     Assert.IsFalse("10:30-11:48,12,13:00:16,18:47-".TimeDiapasonContains(FlexibleParser.ParseTime("9:43")));
     Assert.IsTrue("10:30-11:48,12,13:00:16,18:47-".TimeDiapasonContains(FlexibleParser.ParseTime("12:43")));
     Assert.IsFalse("10:30-11:48,12,13:00:16,18:47-".TimeDiapasonContains(FlexibleParser.ParseTime("12:43"), false));
     Assert.IsFalse("10:30-11:48,12,13:00:16,18:47-".TimeDiapasonContains(FlexibleParser.ParseTime("13:00")));
     Assert.IsTrue("10:30-11:48,12,13:00:16,18:47-".TimeDiapasonContains(FlexibleParser.ParseTime("13:00:16")));
     Assert.IsTrue("10:30-11:48,12,13:00:16,18:47-".TimeDiapasonContains(FlexibleParser.ParseTime("20:24")));
 }
Esempio n. 23
0
        //internal static Func<int, Diapason> GetDiaFunc(int[] keys)
        //{
        //    // Построение шкалы
        //    int N = keys.Length;
        //    int V_min = keys[0];
        //    int V_max = keys[N - 1];
        //    int M = N / 16;
        //    int[] scale = new int[M];
        //    int index = 0;
        //    int ik = 0;
        //    scale[index] = ik;

        //    for (; ik < N; ik++)
        //    {
        //        if (keys[ik] < (int)((long)V_min + ((long)index + 1L) * ((long)V_max - (long)V_min) / (long)M)) { continue; }
        //        index = index + 1;

        //        if (index == M) { break; }
        //        scale[index] = ik;
        //    }

        //    Func<int, Diapason> GetDia = key =>
        //    {
        //        int indx = (int)((long)M * (long)(key - V_min) / (long)(V_max - V_min));
        //        if (indx == M) return new Diapason() { start = N - 1, numb = 1 };
        //        if (indx == M - 1) return new Diapason() { start = scale[indx], numb = N - scale[indx] };
        //        int sta = scale[indx];
        //        int sto = scale[indx + 1];
        //        var d = new Diapason() { start = scale[indx], numb = scale[indx + 1] - scale[indx] };
        //        return d;
        //    };
        //    return GetDia;
        //}

        private static void ComputeEntry(PaCell pers_ind_off_arr, int[] keys, Func <int, Diapason> GetDia, PaEntry entry, int search_key)
        {
            Diapason diap   = GetDia(search_key);
            int      ifirst = Get8FirstIndexOf((int)diap.start, (int)diap.numb, keys, search_key);

            if (ifirst == -1)
            {
                entry = PaEntry.Empty; return;
            }
            //entry.offset = offsets[ifirst]; // Использование массива
            //entry.offset = (long)key_index.Root.Element(ifirst).Field(1).Get(); // Использование всего индекса
            entry.offset = (long)pers_ind_off_arr.Root.Element(ifirst).Get();
        }
Esempio n. 24
0
        /// <summary>
        /// добавление нового диапазона
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonAdd_Click(object sender, EventArgs e)
        {
            Diapason <double> nd = new Diapason <double>();

            nd.From = (double)numericUpDownFrom.Value;
            nd.To   = (double)numericUpDownTo.Value;
            if (nd.From >= nd.To)
            {
                _ = MessageBox.Show(this, "Начало диапазона должно быть меньше конца", "Добавление диапазона", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            diapasons.Add(nd);
        }
Esempio n. 25
0
        public async Task <IActionResult> OnPost(int id, Diapason newDia)
        {
            var userId = _httpContextAccessor.HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier);

            if (newDia.StartDay != null && newDia.FinishDay != null && newDia.StartTime != null && newDia.FinishTime != null)
            {
                newDia.MeetingVariantID = id;
                newDia.User             = userId;
                await _diRepo.AddDiapason(newDia);

                return(Redirect("/HostMan/MeetingVariantManage/" + id));
            }
            return(Page());
        }
Esempio n. 26
0
/*
 *      public IEnumerable<string> GetObjInDiap(Diapason di, string pred)
 *      {
 *          return otriples.Root.BinarySearchAll(di.start, di.numb, ent => ((string)ent.Field(1).Get()).CompareTo(pred))
 *              .Select(en => (string)en.Field(2).Get());
 *      }
 */
        public IEnumerable <string> GetSubjInDiapason(Diapason di, string pred)
        {
            //return otriples_op.Root.BinarySearchAll(di.start, di.numb, ent => ((string)ent.Field(1).Get()).CompareTo(pred))
            //    .Select(en => (string)en.Field(0).Get());

            Diapason internal_diap = otriples_op.Root.BinarySearchDiapason(di.start, di.numb, ent =>
            {
                return(((string)ent.Field(1).Get()).CompareTo(pred));
            });

            return(otriples_op.Root.Elements(internal_diap.start, internal_diap.numb)
                   .Select <PaEntry, object[]>(ent => (object[])ent.Get())
                   .Select(p_obj => (string)((object[])p_obj)[0]));
        }
Esempio n. 27
0
        public IEnumerable <Literal> GetDatInDiap(Diapason di, int pred)
        {
            Diapason internal_diap = dtriples_sp.Root.BinarySearchDiapason(di.start, di.numb, ent => ((int)ent.Field(1).Get()).CompareTo(pred));
            PaEntry  dtriple_entry = dtriples.Root.Element(0);

            return(dtriples_sp.Root.Elements(internal_diap.start, internal_diap.numb)
                   .Select(ent => (object[])ent.Get())
                   .Select(p_obj =>
            {
                long off = (long)((object[])p_obj)[2];
                dtriple_entry.offset = off;
                return PObjToLiteral(dtriple_entry.Field(2).Get());
            })
                   );
        }
Esempio n. 28
0
 public IEnumerable <PaEntry> GetAllByKey(Tkey key)
 {
     if (Scale != null)
     {
         Diapason dia = Scale.GetDiapason(Convert.ToInt32(key));
         if (dia.numb == 0)
         {
             return(Enumerable.Empty <PaEntry>());
         }
         else
         {
             return(GetAllByKey(dia.start, dia.numb, key));
         }
     }
     return(GetAllByKey(0, index_cell.Root.Count(), key));
 }
Esempio n. 29
0
        public static void Main8_1()
        {
            int max = 1000000;

            int[] arr = Enumerable.Range(1, max).ToArray();
            var   Dia = GetDiaFunc2(arr);

            foreach (int key in arr)
            {
                Diapason di = Dia(key);
                if (di.IsEmpty())
                {
                    Console.WriteLine($"no dia for {key}");
                }
                int start = (int)di.start;
                int numb  = (int)di.numb;

                int found = -1;
                for (int i = start; i < start + numb || i < arr.Length; i++)
                {
                    if (arr[i] == key)
                    {
                        found = i; break;
                    }
                }
                if (found == -1)
                {
                    Console.WriteLine($"not found for {key}: start={start} numb={numb}");
                }

                int ind = Program.Get8FirstIndexOf(start, numb, arr, key);
                if (ind == -1)
                {
                    Console.WriteLine($"no ind for key {key}");
                    int ind2 = Program.Get8FirstIndexOf(start, numb, arr, key);
                }
                else
                {
                    int keyval = arr[ind];
                    if (keyval != key)
                    {
                        Console.WriteLine($"bad result index {ind} {keyval} for {key}");
                    }
                }
            }
            Console.WriteLine("ok?");
        }
Esempio n. 30
0
            public ViewModel([NotNull] ReplayObject acObject) : base(acObject)
            {
                UpdateAlreadyShared();

                _timeKey = @".ReplayTime:" + acObject.Id;
                Time     = acObject.AllowToOverrideTime
                        ? CacheStorage.Get(_timeKey, acObject.TimeFrom ?? FlexibleParser.ParseTime(@"09:00"))
                        : acObject.TimeFrom ?? FlexibleParser.ParseTime(@"09:00");

                if (acObject.AllowToOverrideTime)
                {
                    TimeSliderMapper = new DiapasonMapper(WeatherManager.Instance.GetById(acObject.WeatherId)?.GetTimeDiapason()
                                                          ?? Diapason.CreateTime(@"0:00-23:59"))
                    {
                        ActualValue = Time
                    };
                }
            }