Exemplo n.º 1
0
        public IAVFieldOperation MergeWithPrevious(IAVFieldOperation previous)
        {
            if (previous == null)
            {
                return(this);
            }
            if (previous is AVDeleteOperation)
            {
                throw new InvalidOperationException("You can't modify a relation after deleting it.");
            }
            var other = previous as AVRelationOperation;

            if (other != null)
            {
                if (other.TargetClassName != TargetClassName)
                {
                    throw new InvalidOperationException(
                              string.Format("Related object must be of class {0}, but {1} was passed in.",
                                            other.TargetClassName,
                                            TargetClassName));
                }
                var newAdd    = adds.Union(other.adds.Except(removes)).ToList();
                var newRemove = removes.Union(other.removes.Except(adds)).ToList();
                return(new AVRelationOperation(newAdd, newRemove, TargetClassName));
            }
            throw new InvalidOperationException("Operation is invalid after previous operation.");
        }
 public IAVFieldOperation MergeWithPrevious(IAVFieldOperation previous)
 {
     if (previous == null)
     {
         return(this);
     }
     if (previous is AVDeleteOperation)
     {
         return(new AVSetOperation(amount));
     }
     if (previous is AVSetOperation)
     {
         var otherAmount = ((AVSetOperation)previous).Value;
         if (otherAmount is string)
         {
             throw new InvalidOperationException("Cannot increment a non-number type.");
         }
         var myAmount = amount;
         return(new AVSetOperation(Add(otherAmount, myAmount)));
     }
     if (previous is AVIncrementOperation)
     {
         object otherAmount = ((AVIncrementOperation)previous).Amount;
         object myAmount    = amount;
         return(new AVIncrementOperation(Add(otherAmount, myAmount)));
     }
     throw new InvalidOperationException("Operation is invalid after previous operation.");
 }
 public IAVFieldOperation MergeWithPrevious(IAVFieldOperation previous)
 {
     if (previous == null) {
     return this;
       }
       if (previous is AVDeleteOperation) {
     return new AVSetOperation(objects.ToList());
       }
       if (previous is AVSetOperation) {
     var setOp = (AVSetOperation)previous;
     var oldList = Conversion.To<IList<object>>(setOp.Value);
     return new AVSetOperation(oldList.Concat(objects).ToList());
       }
       if (previous is AVAddOperation) {
     return new AVAddOperation(((AVAddOperation)previous).Objects.Concat(objects));
       }
       throw new InvalidOperationException("Operation is invalid after previous operation.");
 }
 public IAVFieldOperation MergeWithPrevious(IAVFieldOperation previous)
 {
     if (previous == null) {
     return this;
       }
       if (previous is AVDeleteOperation) {
     return new AVSetOperation(objects.ToList());
       }
       if (previous is AVSetOperation) {
     var setOp = (AVSetOperation)previous;
     var oldList = Conversion.To<IList<object>>(setOp.Value);
     var result = this.Apply(oldList, null);
     return new AVSetOperation(result);
       }
       if (previous is AVAddUniqueOperation) {
     var oldList = ((AVAddUniqueOperation)previous).Objects;
     return new AVAddUniqueOperation((IList<object>)this.Apply(oldList, null));
       }
       throw new InvalidOperationException("Operation is invalid after previous operation.");
 }
Exemplo n.º 5
0
 public IAVFieldOperation MergeWithPrevious(IAVFieldOperation previous)
 {
     if (previous == null)
     {
         return(this);
     }
     if (previous is AVDeleteOperation)
     {
         return(new AVSetOperation(objects.ToList()));
     }
     if (previous is AVSetOperation)
     {
         var setOp   = (AVSetOperation)previous;
         var oldList = (IList <object>)AVClient.ConvertTo <IList <object> >(setOp.Value);
         return(new AVSetOperation(oldList.Concat(objects).ToList()));
     }
     if (previous is AVAddOperation)
     {
         return(new AVAddOperation(((AVAddOperation)previous).Objects.Concat(objects)));
     }
     throw new InvalidOperationException("Operation is invalid after previous operation.");
 }
		public IAVFieldOperation MergeWithPrevious(IAVFieldOperation previous)
		{
			if (previous == null)
			{
				return this;
			}
			if (previous is AVDeleteOperation)
			{
				return previous;
			}
			if (previous is AVSetOperation)
			{
				IList<object> list = (IList<object>)AVClient.ConvertTo<IList<object>>(((AVSetOperation)previous).Value);
				return new AVSetOperation(this.Apply(list, null, null));
			}
			if (!(previous is AVRemoveOperation))
			{
				throw new InvalidOperationException("Operation is invalid after previous operation.");
			}
			AVRemoveOperation aVRemoveOperation = (AVRemoveOperation)previous;
			return new AVRemoveOperation(Enumerable.Concat<object>(aVRemoveOperation.Objects, this.objects));
		}
Exemplo n.º 7
0
 public IAVFieldOperation MergeWithPrevious(IAVFieldOperation previous)
 {
     if (previous == null)
     {
         return(this);
     }
     if (previous is AVDeleteOperation)
     {
         return(previous);
     }
     if (previous is AVSetOperation)
     {
         var setOp   = (AVSetOperation)previous;
         var oldList = Conversion.As <IList <object> >(setOp.Value);
         return(new AVSetOperation(this.Apply(oldList, null)));
     }
     if (previous is AVRemoveOperation)
     {
         var oldOp = (AVRemoveOperation)previous;
         return(new AVRemoveOperation(oldOp.Objects.Concat(objects)));
     }
     throw new InvalidOperationException("Operation is invalid after previous operation.");
 }
Exemplo n.º 8
0
 public IAVFieldOperation MergeWithPrevious(IAVFieldOperation previous)
 {
     if (previous == null)
     {
         return(this);
     }
     if (previous is AVDeleteOperation)
     {
         return(new AVSetOperation(objects.ToList()));
     }
     if (previous is AVSetOperation)
     {
         var setOp   = (AVSetOperation)previous;
         var oldList = Conversion.To <IList <object> >(setOp.Value);
         var result  = this.Apply(oldList, null);
         return(new AVSetOperation(result));
     }
     if (previous is AVAddUniqueOperation)
     {
         var oldList = ((AVAddUniqueOperation)previous).Objects;
         return(new AVAddUniqueOperation((IList <object>) this.Apply(oldList, null)));
     }
     throw new InvalidOperationException("Operation is invalid after previous operation.");
 }
 public IAVFieldOperation MergeWithPrevious(IAVFieldOperation previous)
 {
     if (previous == null) {
     return this;
       }
       if (previous is AVDeleteOperation) {
     throw new InvalidOperationException("You can't modify a relation after deleting it.");
       }
       var other = previous as AVRelationOperation;
       if (other != null) {
     if (other.TargetClassName != TargetClassName) {
       throw new InvalidOperationException(
       string.Format("Related object must be of class {0}, but {1} was passed in.",
           other.TargetClassName,
           TargetClassName));
     }
     var newAdd = adds.Union(other.adds.Except(removes)).ToList();
     var newRemove = removes.Union(other.removes.Except(adds)).ToList();
     return new AVRelationOperation(newAdd, newRemove, TargetClassName);
       }
       throw new InvalidOperationException("Operation is invalid after previous operation.");
 }
Exemplo n.º 10
0
 public IAVFieldOperation MergeWithPrevious(IAVFieldOperation previous)
 {
     return(this);
 }
		public IAVFieldOperation MergeWithPrevious(IAVFieldOperation previous)
		{
			return this;
		}
		public IAVFieldOperation MergeWithPrevious(IAVFieldOperation previous)
		{
			if (previous == null)
			{
				return this;
			}
			if (previous is AVDeleteOperation)
			{
				return new AVSetOperation(amount);
			}
			if (!(previous is AVSetOperation))
			{
				if (!(previous is AVIncrementOperation))
				{
					throw new InvalidOperationException("Operation is invalid after previous operation.");
				}
				object amount = ((AVIncrementOperation)previous).Amount;
				return new AVIncrementOperation(Add(amount, this.amount));
			}
			object value = ((AVSetOperation)previous).Value;
			if (value is string)
			{
				throw new InvalidOperationException("Cannot increment a non-number type.");
			}
			return new AVSetOperation(Add(value, this.amount));
		}
 public IAVFieldOperation MergeWithPrevious(IAVFieldOperation previous)
 {
     if (previous == null) {
     return this;
       }
       if (previous is AVDeleteOperation) {
     return new AVSetOperation(amount);
       }
       if (previous is AVSetOperation) {
     var otherAmount = ((AVSetOperation)previous).Value;
     if (otherAmount is string) {
       throw new InvalidOperationException("Cannot increment a non-number type.");
     }
     var myAmount = amount;
     return new AVSetOperation(Add(otherAmount, myAmount));
       }
       if (previous is AVIncrementOperation) {
     object otherAmount = ((AVIncrementOperation)previous).Amount;
     object myAmount = amount;
     return new AVIncrementOperation(Add(otherAmount, myAmount));
       }
       throw new InvalidOperationException("Operation is invalid after previous operation.");
 }
 public IAVFieldOperation MergeWithPrevious(IAVFieldOperation previous)
 {
     if (previous == null)
         return (IAVFieldOperation)this;
     if (previous is AVDeleteOperation)
         throw new InvalidOperationException("You can't modify a relation after deleting it.");
     AVRelationOperation relationOperation = previous as AVRelationOperation;
     if (relationOperation == null)
         throw new InvalidOperationException("Operation is invalid after previous operation.");
     if (relationOperation.TargetClassName != this.TargetClassName)
         throw new InvalidOperationException(string.Format("Related object must be of class {0}, but {1} was passed in.", (object)relationOperation.TargetClassName, (object)this.TargetClassName));
     else
         return (IAVFieldOperation)new AVRelationOperation((IEnumerable<string>)Enumerable.ToList<string>(Enumerable.Union<string>((IEnumerable<string>)this.adds, Enumerable.Except<string>((IEnumerable<string>)relationOperation.adds, (IEnumerable<string>)this.removes))), (IEnumerable<string>)Enumerable.ToList<string>(Enumerable.Union<string>((IEnumerable<string>)this.removes, Enumerable.Except<string>((IEnumerable<string>)relationOperation.removes, (IEnumerable<string>)this.adds))), this.TargetClassName);
 }