コード例 #1
0
        protected virtual IQueryable <TEntity> CheckSpecifications(SpecificationList <TEntity, TFilter> specifications, IQueryable <TEntity> source, TFilter filter)
        {
            AppliedFilters = 0;
            AppliedOrders  = 0;

            foreach (var specification in specifications.Items)
            {
                if (specification.Condition(filter))
                {
                    AppliedFilters++;
                    source = source.Where(specification.Predicate);
                }
            }

            foreach (var item in specifications.Order)
            {
                if (item.Condition(filter))
                {
                    AppliedOrders++;
                    source = item.Sort(source);
                }
            }

            if (specifications.PageNumber > 0 && specifications.PageSize > 0)
            {
                source = source.Skip((specifications.PageNumber - 1) * specifications.PageSize).Take(specifications.PageSize);
            }

            return(source);
        }
コード例 #2
0
        public override WAVSound GenerateWord(string word)
        {
            int      wordIndex = wordToSoundMappingList.FindIndex(m => m.Word == word);
            WAVSound wordSound = null;

            if (wordIndex >= 0)
            {
                WordToSoundMapping wordToSoundMapping = wordToSoundMappingList[wordIndex];
                List <WAVSound>    wavSoundList       = new List <WAVSound>();
                foreach (string soundName in wordToSoundMapping.SoundNameList)
                {
                    FormantSpecification formantSpecification = SpecificationList.Find(s => s.Name == soundName);
                    if (formantSpecification != null)
                    {
                        formantSpecification.GenerateSettingsSequence();
                        WAVSound sound = GenerateSound(formantSpecification);
                        wavSoundList.Add(sound);
                    }
                }
                if (wavSoundList.Count > 0)
                {
                    wordSound = WAVSound.Join(wavSoundList, null);
                }
            }
            return(wordSound);
        }
コード例 #3
0
        protected SpecificationList <TEntity> NewSpecificationList(bool addCheckNullObject = true)
        {
            var result = new SpecificationList <TEntity>();

            if (addCheckNullObject)
            {
                ISpecificationValidation <TEntity> basicSpecification = new AndIsNotEmpty <TEntity, object>(c => c, AndIsNotEmptyType.Object, true, "Entity {0} can't be null", typeof(TEntity).Name);
                result.Add(basicSpecification, true);
            }

            return(result);
        }
コード例 #4
0
        protected virtual bool CheckSpecifications(SpecificationList <TEntity> specifications, TEntity entity, Execute execute)
        {
            var result = true;

            foreach (var item in specifications.Items)
            {
                if (!item.Condition(entity))
                {
                    continue;
                }

                var satisfied = item.Specification.IsSatisfiedBy(entity, execute);
                result = result && satisfied;

                if (!result && item.StopIfInvalid)
                {
                    break;
                }
            }

            return(result);
        }
コード例 #5
0
        public static SpecificationList <TEntity, TFilter> OrderBy <TEntity, TFilter, TProperty>(this SpecificationList <TEntity, TFilter> specification, Expression <Func <TEntity, TProperty> > property, Func <TFilter, bool> condition, bool descending)
        {
            if (descending)
            {
                specification.Order.Add(new SpecificationOrder <TEntity, TFilter>(items => items.OrderByDescending(property), condition));
            }
            else
            {
                specification.Order.Add(new SpecificationOrder <TEntity, TFilter>(items => items.OrderBy(property), condition));
            }

            return(specification);
        }
コード例 #6
0
 public static SpecificationList <TEntity, TFilter> OrderBy <TEntity, TFilter, TProperty>(this SpecificationList <TEntity, TFilter> specification, Expression <Func <TEntity, TProperty> > property)
 => specification.OrderBy(property, f => true, false);
コード例 #7
0
 public static SpecificationList <TEntity, TFilter> OrderBy <TEntity, TFilter, TProperty>(this SpecificationList <TEntity, TFilter> specification, Expression <Func <TEntity, TProperty> > property, bool condition = true, bool descending = false)
 => specification.OrderBy(property, f => condition, descending);
コード例 #8
0
 public static SpecificationList <TEntity, TFilter> OrderByDesc <TEntity, TFilter, TProperty>(this SpecificationList <TEntity, TFilter> specification, Expression <Func <TEntity, TProperty> > property, bool condition)
 => specification.OrderBy(property, f => condition, true);
コード例 #9
0
ファイル: SpecificationOr.cs プロジェクト: umfaruki/XCommon
 public static SpecificationList <TEntity> Or <TEntity>(this SpecificationList <TEntity> specification, ISpecificationValidation <TEntity> spec1, ISpecificationValidation <TEntity> spec2, bool stopIfInvalid = false)
 => specification.Or(spec1, spec2, c => true, stopIfInvalid);
コード例 #10
0
 public static SpecificationList <TEntity, TFilter> Take <TEntity, TFilter>(this SpecificationList <TEntity, TFilter> specification, int pageNumber, int pageSize)
 {
     specification.PageNumber = pageNumber;
     specification.PageSize   = pageSize;
     return(specification);
 }
コード例 #11
0
 public static SpecificationList <TEntity, TFilter> Take <TEntity, TFilter>(this SpecificationList <TEntity, TFilter> specification, FilterBase filter)
 {
     specification.PageNumber = filter?.PageNumber ?? 0;
     specification.PageSize   = filter?.PageSize ?? 0;
     return(specification);
 }
コード例 #12
0
 public static SpecificationList <TEntity> AndIsNotEmpty <TEntity>(this SpecificationList <TEntity> specification, Func <TEntity, string> selector)
 => specification.AndIsNotEmpty(selector, c => true, false, "Property value is empty", null);
コード例 #13
0
ファイル: SpecificationUtil.cs プロジェクト: umfaruki/XCommon
 public static SpecificationList <TEntity> AndIsUrl <TEntity>(this SpecificationList <TEntity> specification, Func <TEntity, string> selector, string message, params object[] args)
 => specification.AndIsUrl(selector, c => true, false, message, args);
コード例 #14
0
ファイル: SpecificationUtil.cs プロジェクト: umfaruki/XCommon
 public static SpecificationList <TEntity> AndIsUrl <TEntity>(this SpecificationList <TEntity> specification, Func <TEntity, string> selector, Func <TEntity, bool> condition, bool stopIfInvalid, string message, params object[] args)
 {
     return(specification.AndRegexValid(selector, LibraryRegex.URL, condition, stopIfInvalid, message, args));
 }
コード例 #15
0
ファイル: SpecificationUtil.cs プロジェクト: umfaruki/XCommon
 public static SpecificationList <TEntity> AndIsEmail <TEntity>(this SpecificationList <TEntity> specification, Func <TEntity, string> selector, bool condition, bool stopIfInvalid, string message, params object[] args)
 => specification.AndIsEmail(selector, c => condition, stopIfInvalid, message, args);
コード例 #16
0
 public static SpecificationList <TEntity> AndIsValidAsync <TEntity>(this SpecificationList <TEntity> specification, Func <TEntity, Task <bool> > selector, Func <TEntity, bool> condition, bool stopIfInvalid, string message = "", params object[] args)
 {
     specification.Add(new AndIsValidAsync <TEntity>(selector, condition, message, args), stopIfInvalid);
     return(specification);
 }
コード例 #17
0
 public static SpecificationList <TEntity> AndIsValidAsync <TEntity>(this SpecificationList <TEntity> specification, Func <TEntity, Task <bool> > selector, string message, params object[] args)
 => specification.AndIsValidAsync(selector, c => true, false, message, args);
コード例 #18
0
 public static SpecificationList <TEntity> AndIsNotEmpty <TEntity>(this SpecificationList <TEntity> specification, Func <TEntity, string> selector, Func <TEntity, bool> condition, string message, params object[] args)
 => specification.AndIsNotEmpty(selector, condition, false, message, args);
コード例 #19
0
 public static SpecificationList <TEntity> AndIsValid <TEntity>(this SpecificationList <TEntity> specification, Func <TEntity, bool> selector)
 => specification.AndIsValid(selector, c => true, false, "Invalid value", null);
コード例 #20
0
 public static SpecificationList <TEntity> AndIsNotEmpty <TEntity>(this SpecificationList <TEntity> specification, Func <TEntity, string> selector, Func <TEntity, bool> condition, bool stopIfInvalid, string message = "", params object[] args)
 {
     specification.Add(new AndIsNotEmpty <TEntity, string>(selector, AndIsNotEmptyType.String, condition, message, args), stopIfInvalid);
     return(specification);
 }
コード例 #21
0
 public static SpecificationList <TEntity> AndRegexValid <TEntity>(this SpecificationList <TEntity> specification, Func <TEntity, string> selector, string expression, Func <TEntity, bool> condition, bool stopIfInvalid, string message, params object[] args)
 {
     specification.Add(new AndIsValidRegex <TEntity>(selector, expression, condition, message, args), stopIfInvalid);
     return(specification);
 }
コード例 #22
0
ファイル: SpecificationUtil.cs プロジェクト: umfaruki/XCommon
 public static SpecificationList <TEntity> AndMerge <TEntity>(this SpecificationList <TEntity> specification, SpecificationList <TEntity> specificationList, bool condition, bool stopIfInvalid = false)
 => specification.AndMerge(specificationList, c => condition, stopIfInvalid);
コード例 #23
0
ファイル: SpecificationOr.cs プロジェクト: umfaruki/XCommon
 public static SpecificationList <TEntity> Or <TEntity>(this SpecificationList <TEntity> specification, ISpecificationValidation <TEntity> spec1, ISpecificationValidation <TEntity> spec2, Func <TEntity, bool> condition, bool stopIfInvalid = false)
 {
     specification.Add(new Or <TEntity>(spec1, spec2, condition), stopIfInvalid);
     return(specification);
 }
コード例 #24
0
 public static SpecificationList <TEntity> AndIsValid <TEntity>(this SpecificationList <TEntity> specification, Func <TEntity, bool> selector, bool condition, string message, params object[] args)
 => specification.AndIsValid(selector, c => condition, false, message, args);
コード例 #25
0
ファイル: SpecificationUtil.cs プロジェクト: umfaruki/XCommon
 public static SpecificationList <TEntity> AndMerge <TEntity>(this SpecificationList <TEntity> specification, SpecificationList <TEntity> specificationList, Func <TEntity, bool> condition, bool stopIfInvalid = false)
 {
     specification.Add(new AndMerge <TEntity>(specificationList, condition), stopIfInvalid);
     return(specification);
 }
コード例 #26
0
 public static SpecificationList <TEntity> AndRegexValid <TEntity>(this SpecificationList <TEntity> specification, Func <TEntity, string> selector, string expression, bool condition, bool stopIfInvalid, string message, params object[] args)
 => specification.AndRegexValid(selector, expression, c => condition, stopIfInvalid, message, args);
コード例 #27
0
ファイル: SpecificationUtil.cs プロジェクト: umfaruki/XCommon
 public static SpecificationList <TEntity> AndIsEmail <TEntity>(this SpecificationList <TEntity> specification, Func <TEntity, string> selector)
 => specification.AndIsEmail(selector, c => true, false, "Invalid email", new object[] { });
コード例 #28
0
 public static SpecificationList <TEntity> AndRegexValid <TEntity>(this SpecificationList <TEntity> specification, Func <TEntity, string> selector, string expression, string message, params object[] args)
 => specification.AndRegexValid(selector, expression, c => true, false, message, args);
コード例 #29
0
 public static SpecificationList <TEntity, TFilter> And <TEntity, TFilter>(this SpecificationList <TEntity, TFilter> specification, Expression <Func <TEntity, bool> > predicate, bool condition = true)
 {
     specification.Items.Add(new SpecificationItem <TEntity, TFilter>(predicate, x => condition));
     return(specification);
 }