/// <summary> /// Vraca listu elemenata u skladu sa upitom /// </summary> /// <param name="qRelation"></param> /// <param name="qReference"></param> /// <param name="limit"></param> /// <returns></returns> public contentElementList Query(contentRelationType qRelation, IContentElement qReference, int limit = -1) { contentElementList output = new contentElementList(); int i = 0; IContentElement hIndex; switch (qRelation) { case contentRelationType.self: output.AddNullSafe(qReference); break; case contentRelationType.next: output.AddNullSafe(qReference.next); break; case contentRelationType.prev: output.AddNullSafe(qReference.prev); break; case contentRelationType.both: output.AddNullSafe(qReference.next); output.AddNullSafe(qReference.prev); break; case contentRelationType.manyBoth: break; case contentRelationType.manyNext: hIndex = qReference; do { hIndex = takeIndex(hIndex, contentRelationType.next, i, limit); output.AddNullSafe(hIndex); i++; } while (hIndex != null); break; case contentRelationType.manyPrev: hIndex = qReference; do { hIndex = takeIndex(hIndex, contentRelationType.prev, i, limit); output.AddNullSafe(hIndex); i++; } while (hIndex != null); break; case contentRelationType.parent: output.AddNullSafe(qReference.parent); break; case contentRelationType.manyParent: hIndex = qReference; do { hIndex = takeIndex(hIndex, contentRelationType.parent, i, limit); output.AddNullSafe(hIndex); i++; } while (hIndex != null); break; case contentRelationType.parentOneBefore: hIndex = qReference.parent; if (hIndex != null) { hIndex = take(hIndex, contentRelationType.prev); output.AddNullSafe(hIndex); } break; case contentRelationType.parentOneAfter: hIndex = qReference.parent; if (hIndex != null) { hIndex = take(hIndex, contentRelationType.next); output.AddNullSafe(hIndex); } break; case contentRelationType.parentManyBefore: hIndex = qReference.parent; do { hIndex = takeIndex(hIndex, contentRelationType.prev, i, limit); output.AddNullSafe(hIndex); i++; } while (hIndex != null); break; case contentRelationType.parentManyAfter: hIndex = qReference.parent; do { hIndex = takeIndex(hIndex, contentRelationType.next, i, limit); output.AddNullSafe(hIndex); i++; } while (hIndex != null); break; default: logSystem.log("contentCollection Query :: contentRelationType not supported: [" + qRelation.ToString() + "]", logType.ExecutionError); break; } return(output); }