Example #1
0
 /// <summary>
 /// calculate insert flag
 /// </summary>
 /// <param name="cursorDefinition"></param>
 protected virtual void CalculateInsertFlag(CursorDefinition cursorDefinition)
 {
     if (DataSourceViewDefinition.CanInsert)
     {
         cursorDefinition.SetFlag(CursorProperties.Insert);
     }
     else
     {
         cursorDefinition.ClearFlag(CursorProperties.Insert);
     }
 }
Example #2
0
        /// <summary>
        /// Build cursor definition.
        /// </summary>
        /// <param name="link"></param>
        /// <returns></returns>
        internal CursorDefinition BuildCursorDefinition(DataSourceDefinition dataSourceDefinition, DBKey dbKey, Order order, bool keyCheckNeeded, List <DBField> dbFields, Access access)
        {
            CursorDefinition cursorDefinition = new CursorDefinition();

            cursorDefinition.DataSourceDefinition = dataSourceDefinition;
            cursorDefinition.Key = dbKey;
            cursorDefinition.FieldsDefinition   = dbFields;
            cursorDefinition.IsFieldUpdated     = new List <bool>();
            cursorDefinition.DifferentialUpdate = new List <bool>();

            for (int i = 0; i < cursorDefinition.FieldsDefinition.Count; i++)
            {
                //rt_prpr_fldlist_in_vew - different from C++ but it seems more logical
                cursorDefinition.IsFieldUpdated.Add(false);
                cursorDefinition.DifferentialUpdate.Add(false);
            }
            cursorDefinition.Direction  = order;
            cursorDefinition.CursorMode = CursorMode.Online;
            //check for non interactive
            // : CursorMode.Batch;
            if (keyCheckNeeded)
            {
                cursorDefinition.SetFlag(CursorProperties.KeyCheck);
            }
            //TODO:batch tsk_crsr_prpr
            cursorDefinition.SetFlag(CursorProperties.StartPos);
            //TODO:locate tsk_crsr_prpr
            //crsr->dir = CTX->ctl_tsk_.tskr->range_dir;

            //TODO:
            //if CTX->ctl_tsk_.tsk_rt->TransMode != TRANS_MODE_NONE
            if (access == Access.Write)
            {
                CalculateInsertFlag(cursorDefinition);
                ClaculateDeleteFlag(cursorDefinition);
                cursorDefinition.SetFlag(CursorProperties.Update);
            }

            return(cursorDefinition);
        }
Example #3
0
 protected virtual void CalculateLinkFlag(CursorDefinition cursorDefinition)
 {
     cursorDefinition.SetFlag(CursorProperties.CursorLink);
 }
Example #4
0
 /// <summary>
 /// calculate value of the delete flag
 /// </summary>
 /// <param name="cursorDefinition"></param>
 protected override void ClaculateDeleteFlag(CursorDefinition cursorDefinition)
 {
     cursorDefinition.SetFlag(CursorProperties.Delete);
 }
Example #5
0
 /// <summary>
 /// claculate value of the inset flag
 /// </summary>
 /// <param name="cursorDefinition"></param>
 protected override void CalculateInsertFlag(CursorDefinition cursorDefinition)
 {
     cursorDefinition.SetFlag(CursorProperties.Insert);
 }