Exemplo n.º 1
0
        private Series GetSeries(QueryEnum queryEnum, IndexEnum index, Random random, int times, DataEnum dataEnum)
        {
            var data = new List <object>();

            if (dataEnum == DataEnum.countries)
            {
                var speed = GetIndexSpeed(QueryFactory.Get(queryEnum, index, dataEnum, DataSizeEnum.None, random), times);
                data.Add(speed);
            }
            else
            {
                foreach (var value in Enum.GetValues(typeof(DataSizeEnum)))
                {
                    if ((DataSizeEnum)value == DataSizeEnum.None)
                    {
                        continue;
                    }
                    var speed = GetIndexSpeed(QueryFactory.Get(queryEnum, index, dataEnum, (DataSizeEnum)value, random), times);
                    if (speed.Equals(-1.0d))
                    {
                        break;
                    }
                    data.Add(speed);
                }
            }

            return(new Series
            {
                Name = index.ToString(),
                Data = new Data(data.ToArray())
            });
        }
        public void CreateIndex(IndexEnum index, DataSizeEnum dataSize, DataEnum data)
        {
            string indexName = data.ToString();
            indexName += (dataSize == DataSizeEnum.None ? string.Empty : "_" + (int)dataSize);
            indexName += "_" + index + @"_idx";

            if (data == DataEnum.countries)
            {
                if (index == IndexEnum.gist)
                    indexName = "countries_geom_gist";
                else return;
            }

            string createIndexCommandText =
                @"DO $$
                BEGIN
                IF NOT EXISTS (
                    SELECT 1
                    FROM   pg_class c
                    JOIN   pg_namespace n ON n.oid = c.relnamespace
                    WHERE  c.relname = '" + indexName + @"'
                    AND    n.nspname = 'public'
                    ) THEN
                    CREATE INDEX " + indexName + @"
                    ON random_points_" + (int)dataSize + @"
                    USING " + index + @" (geom);
                END IF;
                END$$;";

            using (var command = new NpgsqlCommand(createIndexCommandText, _conn))
                command.ExecuteNonQuery();
        }
 public static Query Get(QueryEnum queryEnum, IndexEnum index, DataEnum data, DataSizeEnum size, Random random)
 {
     switch (queryEnum)
     {
         case QueryEnum.FindPointsNearRandomPoints:
             return new FindPointsNearRandomPointsQuery(index, data, size, random);
         case QueryEnum.FindNearestNeighbours:
             return new FindNearestNeighboursQuery(index, data, size, random);
         case QueryEnum.TouchesAllToAll:
             return new TouchesAllToAllQuery(index, data, size, random);
     }
     return null;
 }
        public async Task <string> GetJsonViewData(IndexEnum index, string id)
        {
            using (var client = new HttpClient())
            {
                client.DefaultRequestHeaders.Authorization = _authorizationHeader;
                var result = await client.GetAsync($"{_baseUrl}/view/{index}/{id}");

                if (((int)result.StatusCode >= 200) && ((int)result.StatusCode <= 299))
                {
                    var jsonResult = await result.Content.ReadAsStringAsync();

                    return(jsonResult);
                }

                return("");
            }
        }
 public FindPointsNearRandomPointsQuery(
     IndexEnum index, 
     DataEnum data, 
     DataSizeEnum dataSize,
     Random random,
     int numberOfPoints = 1,
     double distance = 1,
     bool andOr = false
     )
     : base(index, dataSize)
 {
     this._random = random;
     this._distance = distance;
     this._numberOfPoints = numberOfPoints;
     this._andOr = andOr;
     this._data = data;
     this._qgisPathPrefix = ConfigurationManager.AppSettings["QgisPathPrefix"];
 }
 public TouchesAllToAllQuery(
     IndexEnum index, 
     DataEnum data,
     DataSizeEnum dataSize,
     Random random,
     int numberOfPoints = 1,
     double distance = 1,
     bool andOr = false,
     int nearestNeighboursCount = 5
     )
     : base(index, dataSize)
 {
     this._data = data;
     this._random = random;
     this._distance = distance;
     this._numberOfPoints = numberOfPoints;
     this._andOr = andOr;
     this._nearestNeighboursCount = nearestNeighboursCount;
     this._qgisPathPrefix = ConfigurationManager.AppSettings["QgisPathPrefix"];
 }
 public TouchesAllToAllQuery
 (
     IndexEnum index,
     DataEnum data,
     DataSizeEnum dataSize,
     Random random,
     int numberOfPoints         = 1,
     double distance            = 1,
     bool andOr                 = false,
     int nearestNeighboursCount = 5
 )
     : base(index, dataSize)
 {
     this._data                   = data;
     this._random                 = random;
     this._distance               = distance;
     this._numberOfPoints         = numberOfPoints;
     this._andOr                  = andOr;
     this._nearestNeighboursCount = nearestNeighboursCount;
     this._qgisPathPrefix         = ConfigurationManager.AppSettings["QgisPathPrefix"];
 }
        public async Task <CensysJsonResult> GetJsonSearchData(IndexEnum index, CensysSearchPost body)
        {
            using (var client = new HttpClient())
            {
                client.DefaultRequestHeaders.Authorization = _authorizationHeader;

                var json = JsonConvert.SerializeObject(body);
                var data = new StringContent(json, Encoding.UTF8, "application/json");
                var url  = $"{_baseUrl}/search/{index}";

                var response = await client.PostAsync(url, data);

                var message = $"Request Message Information:- \n\n{response?.RequestMessage}\n\n\n";
                message += $"Response Message Header \n\n {response?.Content?.Headers}\n";

                if (((int)response.StatusCode >= 200) && ((int)response.StatusCode <= 299))
                {
                    var jsonResult = await response.Content.ReadAsStringAsync();


                    return(new CensysJsonResult
                    {
                        IpRange = body.query,
                        Json = jsonResult,
                        ResponseMessage = message,
                        ResponseStatusCode = response.StatusCode.ToString()
                    });
                }

                return(new CensysJsonResult
                {
                    IpRange = body.query,
                    ResponseMessage = message,
                    ResponseStatusCode = response.StatusCode.ToString()
                });
            }
        }
        public void RemoveIndex(IndexEnum index, DataSizeEnum dataSize, DataEnum data)
        {
            string indexName = data.ToString();
            indexName += (dataSize == DataSizeEnum.None ? string.Empty : "_" + (int)dataSize);
            indexName += "_" + index + @"_idx";

            if (data == DataEnum.countries)
            {
                if (index == IndexEnum.gist)
                    indexName = "countries_geom_gist";
                else return;
            }

            string dropIndexCommandText = @"DROP INDEX IF EXISTS " + indexName;

            using (var command = new NpgsqlCommand(dropIndexCommandText, _conn))
                command.ExecuteNonQuery();
        }
        public void EnableIndex(IndexEnum index, DataSizeEnum dataSize, DataEnum data)
        {
            string indexName = data.ToString();
            indexName += (dataSize == DataSizeEnum.None ? string.Empty : "_" + (int)dataSize);
            indexName += "_" + index + @"_idx";

            if (data == DataEnum.countries)
            {
                if (index == IndexEnum.gist)
                    indexName = "countries_geom_gist";
                else return;
            }

            string dropIndexCommandText = @"UPDATE pg_index SET indislive = true, indisvalid = true where indexrelid = '" + indexName + @"'::regclass;";
            int rowsChanged;
            using (var command = new NpgsqlCommand(dropIndexCommandText, _conn))
                rowsChanged = command.ExecuteNonQuery();
            if (rowsChanged != 1) throw new Exception("Nieudana kwerenda - " + dropIndexCommandText);
        }
 protected Query(IndexEnum index, DataSizeEnum dataSize)
 {
     this.Index = index;
     this._dataSize = dataSize;
 }
        private Series GetSeries(QueryEnum queryEnum, IndexEnum index, Random random, int times, DataEnum dataEnum)
        {
            var data = new List<object>();
            if (dataEnum == DataEnum.countries)
            {
                var speed = GetIndexSpeed(QueryFactory.Get(queryEnum, index, dataEnum, DataSizeEnum.None, random), times);
                data.Add(speed);
            }
            else
            {
                foreach (var value in Enum.GetValues(typeof(DataSizeEnum)))
                {
                    if((DataSizeEnum)value == DataSizeEnum.None) continue;
                    var speed = GetIndexSpeed(QueryFactory.Get(queryEnum, index, dataEnum, (DataSizeEnum)value, random), times);
                    if (speed.Equals(-1.0d))
                        break;
                    data.Add(speed);
                }
            }

            return new Series
                   {
                       Name = index.ToString(),
                       Data = new Data(data.ToArray())
                   };
        }