Beispiel #1
0
        private bool Check(FDict data)
        {
            bool isOk = true;
            var  dict = data.Values;

            foreach (var item in dict)
            {
                bool flagk    = false;
                bool flagv    = false;
                bool hasKey   = false;
                bool hasValue = false;
                for (int i = 0; i < _ranges.Length; i++)
                {
                    var info  = _ruleTable[i];
                    var range = _ranges[i];
                    if (info._isKey)
                    {
                        flagk  |= SwitchData(item.Key, item.Key.Define.OriginalType, range, info);
                        hasKey |= true;
                    }
                    else if (info._isValue)
                    {
                        flagv    |= SwitchData(item.Value, item.Value.Define.OriginalType, range, info);
                        hasValue |= true;
                    }
                }
                if (hasKey && hasValue)
                {
                    isOk &= flagk && flagv;
                }
                else if (hasKey && !hasValue)
                {
                    isOk &= flagk;
                }
                else if (!hasKey && hasValue)
                {
                    isOk &= flagv;
                }
                else
                {
                    Error("Range检查规则:程序Bug,未检查出规则配置错误!");
                }
            }
            return(isOk);
        }
Beispiel #2
0
        private bool Check(FDict data, RefRule rule, RuleInfo info)
        {
            bool isOk = true;
            var  dict = data.Values;

            foreach (var item in dict)
            {
                if (info._isKey)
                {
                    isOk &= Check(item.Key, rule);
                }
                if (info._isValue)
                {
                    isOk &= Check(item.Value, rule);
                }
            }
            return(isOk);
        }
Beispiel #3
0
        // 检查集合中文件路径是否存在
        // key|Value均可作该检查
        private bool Check(FDict data)
        {
            bool isOk = true;
            var  dict = (data as FDict).Values;

            foreach (var item in dict)
            {
                bool flagk    = false;
                bool flagv    = false;
                bool hasKey   = false;
                bool hasValue = false;
                for (int i = 0; i < _ruleTable.Length; i++)
                {
                    RuleInfo info = _ruleTable[i];
                    if (info._isKey)
                    {
                        flagk  |= Check(item.Key, info);
                        hasKey |= true;
                    }
                    else if (info._isValue)
                    {
                        flagv    |= Check(item.Value, info);
                        hasValue |= true;
                    }
                }
                if (hasKey && hasValue)
                {
                    isOk &= flagk && flagv;
                }
                else if (hasKey && !hasValue)
                {
                    isOk &= flagk;
                }
                else if (!hasKey && hasValue)
                {
                    isOk &= flagv;
                }
                else
                {
                    Error("File检查规则:程序Bug,未检查出规则配置错误!");
                }
            }
            return(isOk);
        }
Beispiel #4
0
        public override void GetDict(FDict data, FieldWrap define)
        {
            FieldWrap key   = define.GetKeyDefine();
            FieldWrap value = define.GetValueDefine();

            while (!IsSectionEnd())
            {
                var dk = Data.Create(data.Host, key, this);
                var dv = Data.Create(data.Host, value, this);
                if (!data.Values.ContainsKey(dk))
                {
                    data.Values.Add(dk, dv);
                }
                else
                {
                    Error($"字段:{define.Name} Key:{dk} 重复");
                }
            }
        }
Beispiel #5
0
        /// <summary>
        /// 集合内部数据是否唯一
        /// key默认已检查,该功能仅检查value
        /// </summary>
        private bool Check(FDict data)
        {
            var hashValue = new HashSet <Data>(data.Values.Values);

            return(_ruleTable.Length == 0 || hashValue.Count == data.Values.Count);
        }
Beispiel #6
0
 public abstract void GetDict(FDict data, FieldWrap define);