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); }
public FOptItem(string value, FOptItemFlags flags) { this.value = value; this.flags = flags; rValue = string.Empty; txtValue = string.Empty; }
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); }
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)); }
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 + "'"); } } }
public void Add(int value, FOptItemFlags flags) { Add(value.ToString(), flags, true); }
public void Set(int value, FOptItemFlags flags) { Set(value.ToString(), flags); }
protected virtual void Add(string value, FOptItemFlags flags, bool throwOnError) { }
protected void Set(string value, FOptItemFlags flags) { items.Clear(); Add(value, flags, true); }
public void Add(DateTime value, FOptItemFlags flags) { Add(value.ToString("yyyyMMddHHmmss"), flags, true); }
public void Set(DateTime value, FOptItemFlags flags) { Set(value.ToString("yyyyMMddHHmmss"), flags); }
public FOptItem(DateTime value, FOptItemFlags flags) : this(value.ToString("yyyyMMddHHmmss"), flags) { }
public FOptItem(double value, FOptItemFlags flags) : this(value.ToString().Replace(",", "."), flags) { }
public FOptItem(int value, FOptItemFlags flags) : this(value.ToString(), flags) { }