Esempio n. 1
0
        /// <summary>
        /// initialize the start position with current position from DataView.
        /// </summary>
        private void initStartPosition()
        {
            IRecord record = DataviewSynchronizer.GetCurrentRecord();
            DbPos   outPos;

            DataviewSynchronizer.DataviewManager.PositionCache.TryGetValue(new PositionId(record.getId()), out outPos);
            startPosition = outPos;
        }
Esempio n. 2
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        internal override ReturnResultBase Execute()
        {
            IRecord record = DataviewSynchronizer.GetCurrentRecord();

            GatewayResult result = TaskViews.GetPrimaryView().FetchCurrent(record);

            if (result.Success)
            {
                TaskViews.RecordComputer.Compute(record, false, false, false);
            }

            return(result);
        }
        internal override ReturnResultBase Execute()
        {
            bool isEmptyDataView = ((DataView)(Task.DataView)).isEmptyDataview();

            DataviewSynchronizer.SetupDataview(Reverse);

            IRecord origRecord = DataviewSynchronizer.GetCurrentRecord();

            TaskViews.ViewMain.IgnorePositionCache = true;

            GatewayResult result = TaskViews.OpenCursors(Reverse, new DbPos(true));

            if (result.Success)
            {
                IRecord record;
                while ((record = GetBasicRecord()) != null)
                {
                    if (RecordComputer.Compute(record, true, false, false).Success)
                    {
                        //execute event OnRecordFetchEvent
                        onRecordFetch((Record)record);
                        DataviewSynchronizer.RemoveRecord(record);
                    }
                }
            }
            TaskViews.CloseMainCursor();

            TaskViews.ViewMain.IgnorePositionCache = false;

            if (origRecord != null)
            {
                DataviewSynchronizer.SetCurrentRecord(origRecord != null ? origRecord.getId() : Int32.MinValue);
                ((DataView)(Task.DataView)).takeFldValsFromCurrRec();
            }

            ((DataView)(Task.DataView)).setEmptyDataview(isEmptyDataView);

            return(result);
        }
        /// <summary>
        /// find the start record and get its position
        /// </summary>
        /// <returns></returns>
        internal override ReturnResultBase Execute()
        {
            IRecord origRecord = DataviewSynchronizer.GetCurrentRecord();

            bool recordFound = FindMatchingRecord();

            if (recordFound)
            {
                // found a record - keep its position
                IRecord currentRecord = DataviewSynchronizer.GetCurrentRecord();
                DbPos   outPos;
                PositionCache.TryGetValue(new PositionId(currentRecord.getId()), out outPos);
                ResultStartPosition = outPos;
                LocalDataviewManager.Reset();
                DataviewSynchronizer.RemoveRecord(currentRecord);
            }
            else
            {
                DataviewSynchronizer.SetCurrentRecord(origRecord != null ? origRecord.getId() : Int32.MinValue);
            }

            return(new GatewayResult());
        }
Esempio n. 5
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        internal override ReturnResultBase Execute()
        {
            if (Field.IsVirtual)
            {
                return(new ReturnResult());
            }

            // check the conditions which will allow the update
            if (Field.IsLinkField)
            {
                LinkView linkView = TaskViews.LinkViews[Field.getDataviewHeaderId()];
                IRecord  record   = DataviewSynchronizer.GetCurrentRecord();

                if ((linkView.DataviewHeader.Mode == LnkMode.Write && linkView.GetPosition(record) == null) ||
                    linkView.DataviewHeader.Mode == LnkMode.Create)
                {
                    return(new ReturnResult());
                }
            }

            // update not allowed - return the error
            return(new ReturnResult(MsgInterface.RT_STR_NON_MODIFIABLE));
        }