public Guid[] FindObjects(IndexData indexData, string OIDClass, bool complexExtension, out int?readedObjects) { int ro; StringBinaryTree BT = getStorageData(indexData); List <Guid> ret = BT.GetObjectsFromBT(OIDClass, out ro); readedObjects = ro; /*if (complexExtension) * { * foreach (string 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()); }
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; StringBinaryTree BT = getStorageData(indexData); List <Guid> ret = null; for (int i = 0; i < attributes.Count(); i++) { List <Guid> foundOIDs = BT.GetObjectsFromBT(OIDClass, attributes[i], values[i].ToString(), compareTypes[i], out ro); readedObjects += ro; /*if (complexExtension) * { * foreach (string 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], values[i].ToString(), * 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()); }
public Guid[] GetIndexedObjects(IndexData indexData, int?packageSize, int skipItemsCount) { StringBinaryTree BT = getStorageData(indexData); return(BT.GetObjectsFromBT()); }