示例#1
0
        public override void Validate(ValidateErrorList error)
        {
            base.Validate(error);

            if (Name != null && Name.Length > 128)
                error.AddError("Имя таблицы", "Имя таблицы длинее 128 символов.");

            if (TableRoles.Count == 0)
                error.AddError("Роли", "Не указана ни одна роль таблицы.");

            foreach (var helperTable in App.Schema.HelperTables)
            {
                if (Name != null && Name.Equals(helperTable.Name, StringComparison.OrdinalIgnoreCase))
                    error.AddError("Имя таблицы", "Таблица не может называться " + Name.AsSQL() + ", есть такая системная таблица.");
            }

            if (Name != null && Name.StartsWith(logPrefix, StringComparison.OrdinalIgnoreCase))
                error.AddError("Имя таблицы", "Имя таблицы не может начинаться с '" + logPrefix + "'");

            // уникальность имен колонок
            var uniqueList = new HashSet<string>();
            foreach (var tableCol in Columns)
            {
                if (uniqueList.Contains(tableCol.Name))
                    error.AddError("Таблица", "Есть несколько колонок с именем " + tableCol.Name.AsSQL());
                else
                    uniqueList.Add(tableCol.Name);
            }

            // валидация колонок
            foreach (var tableCol in Columns)
                tableCol.Validate(error);

            // валидация деталей
            foreach (var tableDetail in Details)
                tableDetail.Validate(error);

            // валидация привязнных печатных форм
            foreach (var linkedReport in LinkedReports)
                linkedReport.Validate(error);

            foreach (var tableRoleID in TableRoles)
            {
                if (!SchemaBaseRole.Roles.ContainsKey(tableRoleID))
                {
                    error.AddError(Name, "У таблицы указана неверная роль: " + tableRoleID.AsSQL());
                }
                else
                {
                    var role = SchemaBaseRole.Roles[tableRoleID];
                    if (role is Таблица_TableRole)
                    {
                        var tableRole = role as Таблица_TableRole;

                        // проверка наличия обязательных ролевых полей
                        foreach (var roleCol in tableRole.Columns.Where(col => col.IsRequiredColumn))
                        {
                            foreach (var tableCol in Columns)
                            {
                                if (tableCol.ColumnRoles.Contains(roleCol.ID))
                                    goto m1;
                            }
                            error.AddError(Name, "Отсутствует обязательная колонка с ролью: " + roleCol.Name.AsSQL());
                            m1:;
                        }

                        // проверка наличия обязательных ролевых полей
                        foreach (var roleCol in tableRole.Columns.Where(col => !col.IsMultiColumn))
                        {
                            int count = 0;
                            foreach (var tableCol in Columns)
                            {
                                if (tableCol.ColumnRoles.Contains(roleCol.ID))
                                    count++;
                            }
                            if (count > 1)
                                error.AddError(Name, "Есть несколько колонок с уникальной ролью: " + roleCol.Name.AsSQL());
                        }
                    }
                    else
                    {
                        error.AddError(Name, "У таблицы указана неверная роль: " + role.Name.AsSQL());
                    }
                }
            }
        }
示例#2
0
 public virtual void Validate_Roles(ValidateErrorList error)
 {
     if (ColumnRoles.Count == 0 && !(this is SchemaTableSystemColumn))
         error.AddError(Name, "У колонки нет ролей.");
 }
示例#3
0
 public virtual void Validate(ValidateErrorList errors)
 {
     if (Column == null)
         errors.AddError(Name,"У типа данных не заполнено поле 'Column'.");
 }
示例#4
0
        public virtual void Validate_Name(ValidateErrorList error)
        {
            if (string.IsNullOrWhiteSpace(Name))
                error.AddError(Name,"Имя колонки не может быть пустым");

            if (Name != null && Name.Length > 128)
                error.AddError(Name, "Имя колонки длинее 128 символов");

            if (!Table.Columns.Contains(this) && Table.GetColumnByName(Name) != null) // колонка в процессе добавления
                error.AddError(Name, "уже есть колонка с таким именем");
        }
示例#5
0
        public virtual void Validate(ValidateErrorList error)
        {
            Validate_Name(error);
            Validate_Roles(error);
            //if (string.IsNullOrWhiteSpace(Name))
            //    error.AppendLine("У колонки не заполнено поле 'Имя'.");

            //if (Name != null && Name.Length > 128)
            //    error.AppendLine("Имя колонки длинее 128 символов: " + Name.Substring(0, 50).AsSQL());

            if (DataType == null)
                error.AddError(Name, "У колонки не заполнено поле 'Тип данных'.");

            if (Table == null)
                error.AddError(Name, "У колонки не заполнено поле 'Таблица'.");

            //if (ColumnRoles.Count == 0 && !(this is SchemaTableSystemColumn))
              //  error.AppendLine("У колонки " + Name.AsSQL() + " нет ролей.");

            if (DataType != null)
                DataType.Validate(error);
        }
示例#6
0
        public virtual void Validate(ValidateErrorList error)
        {
            if (string.IsNullOrWhiteSpace(Name))
            {
                error.AddError(Name, "У детали не заполнено поле 'Имя'.");
                Name = "";
            }

            if (DetailTableID == null)
                error.AddError(Name, "У детали не заполнена соответствующая таблица.");

            if (DetailQueryID == null)
                error.AddError(Name, "У детали не заполнен запрос для отображения.");

            if (Opers.Count > 0 && DetailTableID != null)
            {
                if (GetDetailTable(true).GetColumnByRole(RoleConst.ВложеннаяТаблица_БизнесОперация)==null)
                    error.AddError(GetDetailTable().Name, "У деталь-таблицы должна быть колонка с ролью 'ВложеннаяТаблица.БизнесОперация'.");

            }
        }
示例#7
0
 public virtual void Validate(ValidateErrorList error)
 {
     if (ID == Guid.Empty)
         error.AddError(Name, "Пустое поле 'ID'.");
     if (string.IsNullOrWhiteSpace(Name))
         error.AddError(Name, "Не заполнено поле 'Имя'.");
 }
示例#8
0
        public override void Validate(ValidateErrorList error)
        {
            base.Validate(error);

            if (RefTableID == null)
                error.AddError((Column.Name == null ? "?" : Column.Name),"У колонки не заполнена ссылка на таблицу - внешний ключ.");
            else
            {
                if (!SchemaBaseRole.Roles.ContainsKey((Guid)RefTableID))
                {
                    var table = App.Schema.GetObject<SchemaTable>((Guid)RefTableID);
                    if (table == null)
                        error.AddError((Column.Name == null ? "?" : Column.Name), "У колонки неверная ссылка на таблицу - внешний ключ.");
                }
            }
        }