예제 #1
0
        protected override void Add(string value, FOptItemFlags flags, bool throwOnError)
        {
            if (!AssignItemsFlags(ref flags, throwOnError))
            {
                return;
            }

            if ((flags & FOptItemFlags.IsNull) == FOptItemFlags.IsNull)
            {
                Add("", flags);
                return;
            }

            Match m = Regex.Match(value, "^(-?)(\\d+)$");

            if (!m.Success)
            {
                if (throwOnError)
                {
                    throw new Exception("Некорректно указано значение элемнта опции поиска '" + ID + "'");
                }
                return;
            }

            Add(m.Value, flags);
        }
예제 #2
0
 public FOptItem(string value, FOptItemFlags flags)
 {
     this.value = value;
     this.flags = flags;
     rValue     = string.Empty;
     txtValue   = string.Empty;
 }
예제 #3
0
        protected bool AssignItemsFlags(ref FOptItemFlags flags, bool throwOnError)
        {
            FOptItemFlags changes        = itemFlagsDefault ^ flags;
            FOptItemFlags validChanges   = changes & itemFlagsMask;
            FOptItemFlags invalidChanges = (changes | itemFlagsMask) ^ itemFlagsMask;

            if (throwOnError && (invalidChanges != FOptItemFlags.None))             //проверяем флаги, которые устанавливаются или сбрасываются
            {
                throw new Exception("При добавлении элемента в опцию " + ID + " устанавливаются или сбрасываются недопустимые флаги: " + invalidChanges.ToString() + ".");
            }

            flags = itemFlagsDefault ^ validChanges;                    //применяем пользовательские изменения к itemFlagsDefault

            if ((flags & (FOptItemFlags.Less | FOptItemFlags.EqualsOrMore)) ==
                (FOptItemFlags.Less | FOptItemFlags.EqualsOrMore))
            {
                throw new Exception("Недопустимо одновременное применение флагов: Less,More и Equals\nДобавление элемента в опцию " + ID + " .");
            }

            if (flags == FOptItemFlags.None)
            {
                throw new Exception("Необходимо указать хотя бы один флаг.\nДобавление элемента в опцию " + ID + " .");
            }

            return(true);
        }
예제 #4
0
        public virtual void Add(string value, FOptItemFlags flags)
        {
            FOptItem item;

            for (int i = items.Count - 1; i >= 0; i--)
            {
                item = (FOptItem)items[i];
                if (item.value.Equals(value))
                {
                    items.RemoveAt(i);
                }
            }
            items.Add(new FOptItem(value, flags));
        }
예제 #5
0
        protected override void Add(string value, FOptItemFlags flags, bool throwOnError)
        {
            if (!AssignItemsFlags(ref flags, throwOnError))
            {
                return;
            }

            if ((flags & FOptItemFlags.IsNull) == FOptItemFlags.IsNull)
            {
                Add("", flags);
                return;
            }


            Match m = Regex.Match(value, "^(\\d{4,4})?(\\d{2,2})?(\\d{2,2})?(\\d{2,2})?(\\d{2,2})?(\\d{2,2})?$");

            if (!m.Success)
            {
                if (throwOnError)
                {
                    throw new Exception("Некорректно указано значение элемнта опции поиска '" + ID + "'");
                }
                return;
            }

            int y  = m.Groups[1].Success ? int.Parse(m.Groups[1].Value) : 0;
            int MM = m.Groups[2].Success ? int.Parse(m.Groups[2].Value) : 0;
            int d  = m.Groups[3].Success ? int.Parse(m.Groups[3].Value) : 0;
            int hh = m.Groups[4].Success ? int.Parse(m.Groups[4].Value) : 0;
            int mm = m.Groups[5].Success ? int.Parse(m.Groups[5].Value) : 0;
            int ss = m.Groups[6].Success ? int.Parse(m.Groups[6].Value) : 0;

            try
            {
                var dt = new DateTime(y, MM, d, hh, mm, ss);
                Add(dt.ToString("yyyyMMddHHmmss"), flags);
            }
            catch
            {
                if (throwOnError)
                {
                    throw new Exception("Некорректно указано значение элемнта опции поиска '" + ID + "'");
                }
            }
        }
예제 #6
0
 public void Add(int value, FOptItemFlags flags)
 {
     Add(value.ToString(), flags, true);
 }
예제 #7
0
 public void Set(int value, FOptItemFlags flags)
 {
     Set(value.ToString(), flags);
 }
예제 #8
0
 protected virtual void Add(string value, FOptItemFlags flags, bool throwOnError)
 {
 }
예제 #9
0
 protected void Set(string value, FOptItemFlags flags)
 {
     items.Clear();
     Add(value, flags, true);
 }
예제 #10
0
 public void Add(DateTime value, FOptItemFlags flags)
 {
     Add(value.ToString("yyyyMMddHHmmss"), flags, true);
 }
예제 #11
0
 public void Set(DateTime value, FOptItemFlags flags)
 {
     Set(value.ToString("yyyyMMddHHmmss"), flags);
 }
예제 #12
0
 public FOptItem(DateTime value, FOptItemFlags flags) : this(value.ToString("yyyyMMddHHmmss"), flags)
 {
 }
예제 #13
0
 public FOptItem(double value, FOptItemFlags flags) : this(value.ToString().Replace(",", "."), flags)
 {
 }
예제 #14
0
 public FOptItem(int value, FOptItemFlags flags) : this(value.ToString(), flags)
 {
 }