Пример #1
0
        public override IEnumerable<long> GetSingleIndexValues(ISingleValueIndex<IComparable, long> mySingleValueIndex, IComparable myIComparable)
        {
            if (mySingleValueIndex.ContainsKey(myIComparable))
            {
                yield return mySingleValueIndex[myIComparable];

            }

            yield break;
        }
Пример #2
0
        public override IEnumerable<long> GetSingleIndexValues(ISingleValueIndex<IComparable, long> mySingleValueIndex, IComparable myIComparable)
        {
            if (mySingleValueIndex is IRangeIndex<IComparable, long>)
            {
                //use the range funtionality

                foreach (var aVertexID in ((ISingleValueRangeIndex<IComparable, long>)mySingleValueIndex).LowerThan(myIComparable, false))
                {
                    yield return aVertexID;
                }
            }
            else
            {
                //stupid, but works

                foreach (var aVertexID in mySingleValueIndex.Where(kv => kv.Key.CompareTo(myIComparable) < 0).Select(kv => kv.Value))
                {
                    yield return aVertexID;
                }

            }

            yield break;
        }
Пример #3
0
        public override IEnumerable<long> GetSingleIndexValues(ISingleValueIndex<IComparable, long> mySingleValueIndex, IComparable myIComparable)
        {
            var regexpression = new Regex((String)myIComparable);

            foreach (var aKV in mySingleValueIndex)
            {
                if (regexpression.IsMatch((String)aKV.Key))
                {
                    yield return aKV.Value;
                }
            }

            yield break;
        }
Пример #4
0
        public void Load(TransactionToken myTransaction, SecurityToken mySecurity)
        {
            var maxID = Int64.MinValue;

            var vertices = _vertexStore.GetVerticesByTypeID(mySecurity, myTransaction, (long)BaseTypes.Index);
            foreach (var indexVertex in vertices)
            {
                var def = BaseGraphStorageManager.CreateIndexDefinition(indexVertex);
                var vertexType = def.VertexType;
                var indexID = def.ID;
                maxID = Math.Max(maxID, def.ID);
                var typeClass = def.IndexTypeName ?? GetBestMatchingIndexName(def.IsSingle, def.IsRange, def.IsVersioned);
                var parameter = (_indexPluginParameter.ContainsKey(typeClass))
                        ? _indexPluginParameter[typeClass].PluginParameter
                        : null;

                var options = (indexVertex.GetAllUnstructuredProperties() == null)
                                ? null
                                : indexVertex.GetAllUnstructuredProperties().Select(_ => new KeyValuePair<String, object>(_.Item1, _.Item2));

                parameter = FillOptions(parameter, options);

                var index = _pluginManager.GetAndInitializePlugin<IIndex<IComparable, Int64>>(typeClass, parameter, indexID);

                _indices.Add(indexID, index);
                if (def.Name == "IndexDotName")
                    _ownIndex = index as ISingleValueIndex<IComparable, Int64>;
            }

            _idManager[(long)BaseTypes.Index].SetToMaxID(maxID);

            RebuildIndices(_vertexTypeManager.ExecuteManager.GetVertexType((long)BaseTypes.BaseType, myTransaction, mySecurity), myTransaction, mySecurity, true);
            RebuildIndices(_vertexTypeManager.ExecuteManager.GetVertexType((long)BaseTypes.VertexType, myTransaction, mySecurity), myTransaction, mySecurity, true);
            RebuildIndices(_vertexTypeManager.ExecuteManager.GetVertexType((long)BaseTypes.EdgeType, myTransaction, mySecurity), myTransaction, mySecurity, true);
            RebuildIndices(_vertexTypeManager.ExecuteManager.GetVertexType((long)BaseTypes.Index, myTransaction, mySecurity), myTransaction, mySecurity, true);
        }
Пример #5
0
 public override IEnumerable<long> GetSingleIndexValues(ISingleValueIndex<IComparable, long> mySingleValueIndex, IComparable myIComparable)
 {
     return mySingleValueIndex.Where(kv => kv.Key.CompareTo(myIComparable) != 0).Select(kv => kv.Value);
 }
Пример #6
0
 /// <summary>
 /// Extract values from a single value index
 /// </summary>
 /// <param name="mySingleValueIndex">The interesting index</param>
 /// <param name="myIComparable">The interesting key</param>
 /// <returns>An enumerable of vertexIDs</returns>
 public abstract IEnumerable<long> GetSingleIndexValues(ISingleValueIndex<IComparable, Int64> mySingleValueIndex,
     IComparable myIComparable);
Пример #7
0
        /// <summary>
        /// Extract values from a single value index
        /// </summary>
        /// <param name="mySingleValueIndex">The interesting index</param>
        /// <param name="myConstant">The interesting range</param>
        /// <returns>An enumerable of vertexIDs</returns>
        private IEnumerable<long> GetSingleIndexValues(ISingleValueIndex<IComparable, long> mySingleValueIndex, RangeLiteralExpression myConstant)
        {
            if (mySingleValueIndex is IRangeIndex<IComparable, long>)
            {
                //use the range funtionality

                foreach (var aVertexID in ((ISingleValueRangeIndex<IComparable, long>)mySingleValueIndex)
                    .InRange(myConstant.Lower, myConstant.Upper, myConstant.IncludeBorders, myConstant.IncludeBorders))
                {
                    yield return aVertexID;
                }
            }
            else
            {
                //stupid, but works

                if (myConstant.IncludeBorders)
                {
                    foreach (var aVertexID in mySingleValueIndex
                        .Where(kv =>
                            (kv.Key.CompareTo(myConstant.Lower) >= 0) &&
                            (kv.Key.CompareTo(myConstant.Upper) <= 0))
                                .Select(kv => kv.Value))
                    {
                        yield return aVertexID;
                    }
                }
                else
                {
                    foreach (var aVertexID in mySingleValueIndex
                        .Where(kv =>
                            (kv.Key.CompareTo(myConstant.Lower) > 0) &&
                            (kv.Key.CompareTo(myConstant.Upper) < 0))
                                .Select(kv => kv.Value))
                    {
                        yield return aVertexID;
                    }
                }
            }

            yield break;
        }