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."); }
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)); }
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."); }
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."); }
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); }