/// <summary> /// compute range and locate data /// </summary> /// <returns></returns> internal List <RangeData> ComputeBoundariesData(BoudariesFlags cursorPositionFlag) { List <RangeData> rangesList = new List <RangeData>(); foreach (var item in runtimeBoundaries) { if ((cursorPositionFlag & BoudariesFlags.Range) != 0) { if (item.Range != null) { rangesList.Add(item.ComputeRangeData()); } } if ((cursorPositionFlag & BoudariesFlags.Locate) != 0) { if (item.Locate != null) { rangesList.Add(item.ComputeLocateData()); } } } SetPartDatetimeMatch(rangesList); return(rangesList); }
/// <summary> /// /// </summary> /// <returns></returns> public List <RangeData> Build(BoudariesFlags boundariesFlag) { List <RangeData> rangesData = new List <RangeData>(); // If toolkit locates and runtime locates are present, then use user locates and not use toolkit locates. if (userLocates == null || userLocates.Count == 0) { rangesData = viewBoundaries.ComputeBoundariesData(boundariesFlag); } else { rangesData = viewBoundaries.ComputeBoundariesData(BoudariesFlags.Range); } if ((boundariesFlag & BoudariesFlags.Range) != 0 && userRanges != null) { rangesData.AddRange(userRanges); } if ((boundariesFlag & BoudariesFlags.Locate) != 0 && userLocates != null) { rangesData.AddRange(userLocates); } return(rangesData); }
/// <summary> /// get the required start position, for use when there's a "locate" command /// </summary> /// <param name="reverse"></param> /// <returns></returns> internal DbPos SetCursorOnPosition(bool reverse, DbPos position, BoudariesFlags cursorPositionFlag) { OpenCursor(reverse, position, cursorPositionFlag); CursorFetch(); CloseCursor(); return(CurrentCursor.CursorDefinition.CurrentPosition); }
/// <summary> /// /// </summary> /// <returns></returns> public List <RangeData> Build(BoudariesFlags boundariesFlag) { List <RangeData> rangesData = viewBoundaries.ComputeBoundariesData(BoudariesFlags.Range); rangesData.Add(BuildRangeData(minValue)); return(rangesData); }
public List <gatewaytypes.RangeData> Build(BoudariesFlags boundariesFlag) { var rangeData = new List <gatewaytypes.RangeData>(); foreach (var fb in fieldBoundaries) { rangeData.Add(fb.ComputeRangeData()); } return(rangeData); }
/// <summary> /// open cursor /// </summary> /// <param name="reverse"></param> /// <param name="startPosition"></param> /// <param name="useLocate">If this is the 1st access to the table, locate values should be considered. /// if not - use only ranges</param> /// <returns></returns> internal GatewayResult OpenCursor(bool reverse, DbPos startPosition, BoudariesFlags boundariesFlag) { CurrentCursor.CursorDefinition.SetFlagValue(CursorProperties.DirReversed, reverse); CurrentCursor.CursorDefinition.StartPosition = startPosition; // build the RangeData list CurrentCursor.RuntimeCursorData.Ranges = RangeBuilder.Build(boundariesFlag); GatewayCommandBase cursorCommand = GatewayCommandsFactory.CreateCursorOpenCommand(CurrentCursor, LocalDataviewManager.LocalManager); //String r = CurrentCursor.Serialize(); return(cursorCommand.Execute()); }