Ejemplo n.º 1
0
 private void _ValidateOrderOptions(ObjectIndexMetadata[] indexes, OrderOptions order)
 {
     if (null != order && null != order.Indexes)
     {
         if (!_ValidateIndexNames(indexes, order.Indexes))
         {
             throw new ArgumentException("Invalid index name supplied in OrderOptions.");
         }
     }
 }
Ejemplo n.º 2
0
        public IEnumerable<IDataRecord> Iterate(string objectFullName, string constraint, uint limit, OrderOptions order, string[] iterateIndexes, ObjectIndexMetadata[] indexes)
        {
            _ValidateOrderOptions(indexes, order);

            if (null != iterateIndexes && 0 == iterateIndexes.Length)
            {
                _ValidateIndexNames(indexes, iterateIndexes);
            }

            return _indexer.Iterate(objectFullName, constraint, limit, order, iterateIndexes, indexes);
        }
Ejemplo n.º 3
0
        private bool _ValidateIndexNames(ObjectIndexMetadata[] indexes, string[] checkNames)
        {
            bool returnValue = true;

            if (null != checkNames)
            {
                var namesLen = checkNames.Length;
                int indexesLen = 0;

                if (null != indexes)
                {
                    indexesLen = indexes.Length;
                }

                for (int i = 0; namesLen > i; i++)
                {
                    var name = checkNames[i];
                    if (!ObjectNameValidator.IsValidIndexName(name))
                    {
                        returnValue = false;
                        break;
                    }

                    // All objects have a built int ID index, which is not part of its declared metadata indexes.
                    if (ObjectIndexProvider.IDColumn.Equals(name, StringComparison.OrdinalIgnoreCase))
                    {
                        continue;
                    }

                    if (null != indexes)
                    {
                        bool foundName = false;
                        for (int j = 0; indexesLen > j; j++)
                        {
                            if (name.Equals(indexes[i].Name))
                            {
                                foundName = true;
                            }
                        }
                        // we did not find the index name
                        if (!foundName)
                        {
                            returnValue = false;
                            break;
                        }
                    }
                }
            }

            return returnValue;
        }
Ejemplo n.º 4
0
 public IEnumerable<IDataRecord> Iterate(string objectFullName, ObjectIndexMetadata[] indexes)
 {
     return _indexer.Iterate(objectFullName, indexes);
 }
Ejemplo n.º 5
0
        public int[] Find(string objectFullName, string constraint, uint limit, OrderOptions order, ObjectIndexMetadata[] indexes)
        {
            int[] returnValue = null;

            if (null != _cache)
            {
                var parameters = new object[5 + ((null == indexes) ? 0 : indexes.Length)];
                parameters[0] = objectFullName;
                parameters[1] = constraint;
                parameters[2] = limit;
                parameters[3] = order;
                parameters[4] = "F";
                if (null != indexes)
                {
                    for (int i = 0; indexes.Length > i; i++)
                    {
                        parameters[i + 5] = indexes[i];
                    }
                }
                returnValue = _cache.Get(parameters);
                if (null == returnValue)
                {
                    _ValidateOrderOptions(indexes, order);

                    returnValue = _indexer.Find(objectFullName, constraint, limit, order, indexes);
                    _cache.Set(returnValue, parameters);
                }
            }
            else
            {
                returnValue = _indexer.Find(objectFullName, constraint, limit, order, indexes);
            }
            return returnValue;
        }
Ejemplo n.º 6
0
 public int[] Find(string objectFullName, string constraint, ObjectIndexMetadata[] indexes)
 {
     return Find(objectFullName, constraint, 0, null, indexes);
 }
Ejemplo n.º 7
0
 public bool Exists(string objectFullName, string constraint, ObjectIndexMetadata[] indexes)
 {
     return _indexer.Exists(objectFullName, constraint, indexes);
 }
Ejemplo n.º 8
0
        public int Count(string objectFullName, string constraint, ObjectIndexMetadata[] indexes)
        {
            int returnValue = 0;

            if (null != _cache)
            {
                var parameters = new object[3 + ((null == indexes) ? 0 : indexes.Length)];
                parameters[0] = objectFullName;
                parameters[1] = constraint;
                parameters[2] = "C";
                if (null != indexes)
                {
                    for (int i = 0; indexes.Length > i; i++)
                    {
                        parameters[i + 3] = indexes[i];
                    }
                }
                int[] cacheValue = _cache.Get(parameters);
                if (cacheValue != null && cacheValue.Length == 1)
                {
                    returnValue = cacheValue[0];
                }
                else
                {
                    returnValue = _indexer.Count(objectFullName, constraint, indexes);
                    _cache.Set(new int[] { returnValue }, parameters);
                }
            }
            else
            {
                returnValue = _indexer.Count(objectFullName, constraint, indexes);
            }
            return returnValue;
        }