Exemplo n.º 1
0
        private static bool IsPropertyError(IReadOnlyPropertyBag propertyBag, PropertyDefinition property, bool shouldThrow)
        {
            object obj = propertyBag[property];

            if (obj != null)
            {
                PropertyError propertyError = obj as PropertyError;
                if (propertyError != null)
                {
                    if (shouldThrow)
                    {
                        throw PropertyErrorException.FromPropertyErrorsInternal(new PropertyError[]
                        {
                            obj as PropertyError
                        });
                    }
                    return(true);
                }
            }
            else if (propertyBag is ADPropertyBag || propertyBag is ADRawEntry)
            {
                if (shouldThrow)
                {
                    throw PropertyErrorException.FromPropertyErrorsInternal(new PropertyError[]
                    {
                        new PropertyError(property, PropertyErrorCode.NotFound)
                    });
                }
                return(true);
            }
            return(false);
        }
 private PropertyErrorException(LocalizedString message, params PropertyError[] errors) : base(LocalizedString.Join(string.Empty, new object[]
 {
     message,
     PropertyErrorException.DescribePropertyErrors(errors)
 }))
 {
     this.errors = errors;
 }
Exemplo n.º 3
0
 public static StoragePermanentException ToException(LocalizedString message, params PropertyError[] propertyErrors)
 {
     foreach (PropertyError propertyError in propertyErrors)
     {
         if (propertyError.PropertyErrorCode == PropertyErrorCode.NotEnoughMemory && propertyError.PropertyDefinition is StorePropertyDefinition && (((StorePropertyDefinition)propertyError.PropertyDefinition).PropertyFlags & PropertyFlags.Streamable) == PropertyFlags.None)
         {
             throw new PropertyTooBigException(propertyError.PropertyDefinition);
         }
     }
     if (!(message != LocalizedString.Empty))
     {
         return(PropertyErrorException.FromPropertyErrorsInternal(propertyErrors));
     }
     return(PropertyErrorException.FromPropertyErrorsInternal(message, propertyErrors));
 }
 private PropertyErrorException(params PropertyError[] errors) : base(PropertyErrorException.DescribePropertyErrors(errors))
 {
     this.errors = errors;
 }
Exemplo n.º 5
0
        private static bool EvaluatePropertyComparisonFilter(PropertyComparisonFilter propertyComparisonFilter, IReadOnlyPropertyBag propertyBag, bool shouldThrow)
        {
            object obj  = propertyBag[propertyComparisonFilter.Property1];
            object obj2 = propertyBag[propertyComparisonFilter.Property2];

            if (obj is PropertyError || obj2 is PropertyError)
            {
                if (shouldThrow)
                {
                    throw PropertyErrorException.FromPropertyErrorsInternal(new PropertyError[]
                    {
                        obj as PropertyError,
                        obj2 as PropertyError
                    });
                }
                return(false);
            }
            else
            {
                switch (propertyComparisonFilter.ComparisonOperator)
                {
                case ComparisonOperator.Equal:
                    return(obj.Equals(obj2));

                case ComparisonOperator.NotEqual:
                    return(!obj.Equals(obj2));

                case ComparisonOperator.LessThan:
                    if (obj is ExDateTime)
                    {
                        return((ExDateTime)obj < (ExDateTime)obj2);
                    }
                    if (obj is int)
                    {
                        return((int)obj < (int)obj2);
                    }
                    if (obj is long)
                    {
                        return((long)obj < (long)obj2);
                    }
                    throw new InvalidOperationException("Only int, long, and ExDateTime supported for PropertyComparisonFilter <");

                case ComparisonOperator.LessThanOrEqual:
                    if (obj is ExDateTime)
                    {
                        return((ExDateTime)obj <= (ExDateTime)obj2);
                    }
                    if (obj is int)
                    {
                        return((int)obj <= (int)obj2);
                    }
                    if (obj is long)
                    {
                        return((long)obj <= (long)obj2);
                    }
                    throw new InvalidOperationException("Only int, long, and ExDateTime supported for PropertyComparisonFilter <=");

                case ComparisonOperator.GreaterThan:
                    if (obj is ExDateTime)
                    {
                        return((ExDateTime)obj > (ExDateTime)obj2);
                    }
                    if (obj is int)
                    {
                        return((int)obj > (int)obj2);
                    }
                    if (obj is long)
                    {
                        return((long)obj > (long)obj2);
                    }
                    throw new InvalidOperationException("Only int, long, and ExDateTime supported for PropertyComparisonFilter >");

                case ComparisonOperator.GreaterThanOrEqual:
                    if (obj is ExDateTime)
                    {
                        return((ExDateTime)obj >= (ExDateTime)obj2);
                    }
                    if (obj is int)
                    {
                        return((int)obj >= (int)obj2);
                    }
                    if (obj is long)
                    {
                        return((long)obj >= (long)obj2);
                    }
                    throw new InvalidOperationException("Only int, long, and ExDateTime supported for PropertyComparisonFilter >=");

                default:
                    throw new InvalidOperationException("Unsupported ComparisonOperator: " + ((int)propertyComparisonFilter.ComparisonOperator).ToString());
                }
            }
        }
Exemplo n.º 6
0
        private static bool EvaluateComparisonFilter(ComparisonFilter comparisonFilter, IReadOnlyPropertyBag propertyBag, bool shouldThrow)
        {
            object obj;

            try
            {
                obj = propertyBag[comparisonFilter.Property];
            }
            catch (PropertyErrorException)
            {
                if (shouldThrow)
                {
                    throw;
                }
                return(false);
            }
            PropertyError propertyError = obj as PropertyError;

            if (propertyError != null)
            {
                if (shouldThrow)
                {
                    throw PropertyErrorException.FromPropertyErrorsInternal(new PropertyError[]
                    {
                        propertyError
                    });
                }
                return(false);
            }
            else
            {
                if (EvaluatableFilter.IsPropertyError(propertyBag, comparisonFilter.Property, shouldThrow))
                {
                    return(false);
                }
                switch (comparisonFilter.ComparisonOperator)
                {
                case ComparisonOperator.Equal:
                    if (comparisonFilter.PropertyValue is Participant)
                    {
                        return(Participant.HasSameEmail(comparisonFilter.PropertyValue as Participant, obj as Participant, false));
                    }
                    if (obj is MultiValuedProperty <string> && comparisonFilter.PropertyValue is string)
                    {
                        MultiValuedProperty <string> multiValuedProperty = obj as MultiValuedProperty <string>;
                        if (multiValuedProperty.Count == 1)
                        {
                            return(multiValuedProperty[0].Equals(comparisonFilter.PropertyValue));
                        }
                    }
                    if (obj is SmtpAddress && comparisonFilter.PropertyValue is EmailAddress)
                    {
                        return(obj.Equals((comparisonFilter.PropertyValue as EmailAddress).Address));
                    }
                    return(obj.Equals(comparisonFilter.PropertyValue));

                case ComparisonOperator.NotEqual:
                    return(!obj.Equals(comparisonFilter.PropertyValue));

                case ComparisonOperator.LessThan:
                    if (comparisonFilter.PropertyValue is ExDateTime)
                    {
                        return((ExDateTime)obj < (ExDateTime)comparisonFilter.PropertyValue);
                    }
                    if (comparisonFilter.PropertyValue is int)
                    {
                        return((int)obj < (int)comparisonFilter.PropertyValue);
                    }
                    if (comparisonFilter.PropertyValue is long)
                    {
                        return((long)obj < (long)comparisonFilter.PropertyValue);
                    }
                    throw new InvalidOperationException("Only int, long, and ExDateTime supported for ComparisonFilter <");

                case ComparisonOperator.LessThanOrEqual:
                    if (comparisonFilter.PropertyValue is ExDateTime)
                    {
                        return((ExDateTime)obj <= (ExDateTime)comparisonFilter.PropertyValue);
                    }
                    if (comparisonFilter.PropertyValue is int)
                    {
                        return((int)obj <= (int)comparisonFilter.PropertyValue);
                    }
                    if (comparisonFilter.PropertyValue is long)
                    {
                        return((long)obj <= (long)comparisonFilter.PropertyValue);
                    }
                    throw new InvalidOperationException("Only int, long, and ExDateTime supported for ComparisonFilter <=");

                case ComparisonOperator.GreaterThan:
                    if (comparisonFilter.PropertyValue is ExDateTime)
                    {
                        return((ExDateTime)obj > (ExDateTime)comparisonFilter.PropertyValue);
                    }
                    if (comparisonFilter.PropertyValue is int)
                    {
                        return((int)obj > (int)comparisonFilter.PropertyValue);
                    }
                    if (comparisonFilter.PropertyValue is long)
                    {
                        return((long)obj > (long)comparisonFilter.PropertyValue);
                    }
                    throw new InvalidOperationException("Only int, long, and ExDateTime supported for ComparisonFilter >");

                case ComparisonOperator.GreaterThanOrEqual:
                    if (comparisonFilter.PropertyValue is ExDateTime)
                    {
                        return((ExDateTime)obj >= (ExDateTime)comparisonFilter.PropertyValue);
                    }
                    if (comparisonFilter.PropertyValue is int)
                    {
                        return((int)obj >= (int)comparisonFilter.PropertyValue);
                    }
                    if (comparisonFilter.PropertyValue is long)
                    {
                        return((long)obj >= (long)comparisonFilter.PropertyValue);
                    }
                    throw new InvalidOperationException("Only int, long, and ExDateTime supported for ComparisonFilter >=");

                default:
                    throw new InvalidOperationException("Unsupported ComparisonOperator: " + ((int)comparisonFilter.ComparisonOperator).ToString());
                }
            }
            bool result;

            return(result);
        }