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()); }
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()); }
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); }
public Guid[] GetIndexedObjects(IndexData indexData, int?packageSize, int skipItemsCount) { IntBinaryTree BT = getStorageData(indexData); return(BT.GetObjectsFromBT()); }