コード例 #1
0
        public Guid[] FindObjects(IndexData indexData, string OIDClass, bool complexExtension, out int?readedObjects)
        {
            int           ro;
            IntBinaryTree BT  = getStorageData(indexData);
            List <Guid>   ret = BT.GetObjectsFromBT(OIDClass, out ro);

            readedObjects = ro;

            if (complexExtension)
            {
                /*   foreach (Type t in BT.GetObjectsTypesFromBT().Where(t => t != OIDClass))
                 * {
                 *     bool found = false;
                 *     Type baseType = t.BaseType;
                 *     while (baseType != null && !found)
                 *     {
                 *         if (baseType == OIDClass)
                 *         {
                 *             ret.AddRange(BT.GetObjectsFromBT(OIDClass, out ro));
                 *             readedObjects += ro;
                 *             found = true;
                 *         }
                 *         baseType = baseType.BaseType;
                 *     }
                 * }*/
            }

            return(ret.Distinct().ToArray());
        }
コード例 #2
0
        public Guid[] FindObjects(IndexData indexData, string OIDClass, bool complexExtension, string[] attributes,
                                  object[] values, CompareType[] compareTypes, out int?readedObjects)
        {
            if (compareTypes.Count() != attributes.Count() || attributes.Count() != values.Count())
            {
                throw new ArgumentException(
                          "Liczności tbalic z atrybutami, porównaniami oraz wartościami musza być identyczne!");
            }

            readedObjects = 0;
            int           ro;
            IntBinaryTree BT  = getStorageData(indexData);
            List <Guid>   ret = null;

            for (int i = 0; i < attributes.Count(); i++)
            {
                List <Guid> foundOIDs = BT.GetObjectsFromBT(OIDClass, attributes[i], (int)values[i], compareTypes[i],
                                                            out ro);
                readedObjects += ro;

                if (complexExtension)
                {
                    /*foreach (Type t in BT.GetObjectsTypesFromBT().Where(t => t != OIDClass))
                     * {
                     *  bool found = false;
                     *  Type baseType = t.BaseType;
                     *  while (baseType != null && !found)
                     *  {
                     *      if (baseType == OIDClass)
                     *      {
                     *          foundOIDs.AddRange(BT.GetObjectsFromBT(OIDClass, attributes[i], (int)values[i],
                     *                                                 compareTypes[i], out ro));
                     *          readedObjects += ro;
                     *          found = true;
                     *      }
                     *      baseType = baseType.BaseType;
                     *  }
                     * }*/
                }

                if (ret == null)
                {
                    ret = foundOIDs.Distinct().ToList();
                }
                else
                {
                    ret =
                        ret.Intersect(foundOIDs.Distinct()).ToList();
                }
            }

            return(ret.ToArray());
        }
コード例 #3
0
        public IndexData RemoveObject(IndexData indexData, Oid obj, string[] attributes, QueryParameters queryParameters)
        {
            IntBinaryTree BT = getStorageData(indexData);

            var classOid = GetClassByOID(obj, queryParameters);

            VerifyAttributes(attributes, queryParameters, classOid);

            foreach (String attribute in attributes)
            {
                int attributeValue = GetAttributeValue(attribute, obj, queryParameters);
                BT.RemoveFromBTvalue(obj, classOid.Name, attribute, attributeValue);
            }

            return(BT);
        }
コード例 #4
0
        public Guid[] GetIndexedObjects(IndexData indexData, int?packageSize, int skipItemsCount)
        {
            IntBinaryTree BT = getStorageData(indexData);

            return(BT.GetObjectsFromBT());
        }