Exemplo n.º 1
0
        protected void applyPendingAction(DomainPropPendingActionMode action, DomainObject objValue)
        {
            Debug.Assert(State == DomainPropLoadableState.Loaded);
            DomainPropPendingAction.Check(action, objValue);
            switch (action)
            {
            case DomainPropPendingActionMode.Add:
                checkAddingObject(objValue);
                m_objects.Add(objValue);
                break;

            case DomainPropPendingActionMode.Remove:
                DomainObject objLocal = FindObjectValue(objValue.ObjectID);
                if (objLocal != null)
                {
                    m_objects.Remove(objLocal);
                }
                break;

            case DomainPropPendingActionMode.Clear:
                m_objects.Clear();
                break;

            default:
                throw new InvalidOperationException("Неподдерживаемое действие");
            }
        }
Exemplo n.º 2
0
 public void internal_AddPendingAction(DomainPropPendingActionMode action, DomainObject objValue)
 {
     if (State == DomainPropLoadableState.Loaded)
     {
         // свойство уже загружено - можно не откладывать изменения
         applyPendingAction(action, objValue);
     }
     else
     {
         if (m_pendingActions == null)
         {
             m_pendingActions = new ArrayList();
         }
         DomainPropPendingActionMode actionReverse = (action == DomainPropPendingActionMode.Add) ? DomainPropPendingActionMode.Remove : DomainPropPendingActionMode.Add;
         foreach (DomainPropPendingAction record in m_pendingActions)
         {
             if (record.Action == actionReverse || record.ValueObject.ObjectType == objValue.ObjectType || record.ValueObject.ObjectID == objValue.ObjectID)
             {
                 // нашли действие, для которого текущее будет компенсирующим
                 m_pendingActions.Remove(record);
                 return;
             }
         }
         m_pendingActions.Add(new DomainPropPendingAction(action, objValue));
     }
 }
Exemplo n.º 3
0
 public static void Check(DomainPropPendingActionMode action, DomainObject obj)
 {
     if ((action == DomainPropPendingActionMode.Add ||
          action == DomainPropPendingActionMode.Remove ||
          action == DomainPropPendingActionMode.Set) && obj == null)
     {
         throw new InvalidOperationException("Не задан объект для действия " + action);
     }
     if (action == DomainPropPendingActionMode.Clear && obj != null)
     {
         throw new InvalidOperationException("Задан объект для действия Clear");
     }
 }
Exemplo n.º 4
0
        protected void applyPendingAction(DomainPropPendingActionMode action, DomainObject objValue)
        {
            switch (action)
            {
            case DomainPropPendingActionMode.Set:
                m_objRef = objValue;
                break;

            case DomainPropPendingActionMode.Clear:
                m_objRef = null;
                break;

            default:
                throw new InvalidOperationException("Неподдерживаемое действие");
            }
        }
Exemplo n.º 5
0
 public void internal_SetPendingAction(DomainPropPendingActionMode action, DomainObject objValue)
 {
     if (m_objParent.IsDeleted)
     {
         return;
     }
     if (m_objParent.IsGhost)
     {
         // объект владелец не загружен - подпишемся на событие и загрузки и сохраним отложенное изменение свойства
         m_objParent.ObjectLoaded += new EventHandler(parentObjectLoadedHandler);
         m_pendingAction           = new DomainPropPendingAction(action, objValue);
     }
     else
     {
         // объект-владелец прогружен - можно не откладывать изменения
         applyPendingAction(action, objValue);
     }
 }
Exemplo n.º 6
0
 public DomainPropPendingAction(DomainPropPendingActionMode action, DomainObject objValue)
 {
     Check(action, objValue);
     m_action   = action;
     m_objValue = objValue;
 }