public TableResolver CreateObject(params object[] args)
        {
            IDbDataSource source = ObjectUtil.ConfirmQueryObject <IDbDataSource>(this, args);

            ITableSchemeEx scheme  = Scheme.CreateObject();
            Tk5DataXml     dataXml = scheme as Tk5DataXml;

            if (dataXml == null)
            {
                return new MetaDataTableResolver(scheme, source)
                       {
                           AutoTrackField = AutoTrackField,
                           AutoUpdateKey  = AutoUpdateKey
                       }
            }
            ;
            else
            {
                return new Tk5TableResolver(dataXml, source)
                       {
                           AutoTrackField = AutoTrackField,
                           AutoUpdateKey  = AutoUpdateKey
                       }
            };
        }
    }
Beispiel #2
0
        public IMetaData CreateObject(params object[] args)
        {
            IInputData input = ObjectUtil.ConfirmQueryObject <IInputData>(this, args);

            ITableSchemeEx scheme = CreateSourceScheme(input);

            switch (input.Style.Style)
            {
            case PageStyle.Insert:
            case PageStyle.Update:
            case PageStyle.Detail:
                return(new Tk5SingleNormalMetaData(scheme, input, this));

            case PageStyle.List:
                return(new Tk5ListMetaData(scheme, input, this));

            case PageStyle.Custom:
                if (input.Style.Operation == "DetailList")
                {
                    InputDataProxy proxy = new InputDataProxy(input, (PageStyleClass)PageStyle.List);
                    return(new Tk5ListMetaData(scheme, proxy, this));
                }
                else
                {
                    var metaData = SchemeUtil.CreateVueMetaData(input, scheme, this);
                    if (metaData != null)
                    {
                        return(metaData);
                    }
                }
                break;
            }
            return(null);
        }
        public static Tk5FieldInfoEx CreateDataXmlField(ITableSchemeEx scheme,
                                                        IFieldInfoEx field, IInputData input, BaseSingleMetaDataConfig config)
        {
            Tk5FieldInfoEx fieldInfo = new Tk5FieldInfoEx(field, input.Style);

            return(fieldInfo);
        }
Beispiel #4
0
        public Tk5TableScheme(ITableSchemeEx scheme, IInputData input, ISingleMetaData config,
                              Func <ITableSchemeEx, IFieldInfoEx, IInputData, ISingleMetaData, Tk5FieldInfoEx> createFunc)
            : this()
        {
            TkDebug.AssertArgumentNull(scheme, "scheme", null);
            TkDebug.AssertArgumentNull(input, "input", null);
            TkDebug.AssertArgumentNull(config, "config", null);
            TkDebug.AssertArgumentNull(createFunc, "createFunc", null);

            SetFileDependency(scheme);
            TableName = scheme.TableName;
            TableDesc = scheme.TableDesc;
            NameField = scheme.NameField;

            PageStyle pageStyle = input.Style.Style;
            var       list      = from item in scheme.Fields
                                  where (item.Control.DefaultShow & pageStyle) == pageStyle
                                  select item;

            foreach (var item in list)
            {
                Tk5FieldInfoEx fieldInfo = createFunc(scheme, item, input, config);
                fList.Add(fieldInfo);
            }

            ProcessRefField();
        }
Beispiel #5
0
 public Tk5ListMetaData(ITableSchemeEx dataXml, IInputData input, ISingleMetaData config,
                        ITableOutput tableOutput = null)
 {
     fTableScheme = config.CreateTableScheme(dataXml, input);
     SetFileDependency(fTableScheme);
     Table = new Tk5ListTableData(fTableScheme, tableOutput);
 }
Beispiel #6
0
        protected virtual void SetDefaultValue(IInputData input, ITableSchemeEx scheme,
                                               DataTable table, DataRow row)
        {
            foreach (DataColumn col in table.Columns)
            {
                string value = input.QueryString[col.ColumnName];
                if (!string.IsNullOrEmpty(value))
                {
                    DataSetUtil.SetSafeValue(row, col, value);
                }
            }

            var defaultFields = from field in scheme.Fields
                                where Tk5TableResolver.HasDefaultValue(field)
                                select field as ITk5FieldInfo;

            foreach (var field in defaultFields)
            {
                try
                {
                    row[field.NickName] = Expression.Execute(field.Edit.DefaultValue, DataSet, this);
                }
                catch
                {
                }
            }
        }
Beispiel #7
0
        protected virtual void CreateDefaultValue(IInputData input, DataSet dataSet)
        {
            if (string.IsNullOrEmpty(TableName) || fMetaData == null || input.Style.Style != PageStyle.Insert)
            {
                return;
            }

            ITableSchemeEx scheme = fMetaData.GetTableScheme(TableName);

            if (scheme == null)
            {
                return;
            }
            MetaDataTableResolver resolver = new MetaDataTableResolver(scheme, this);

            using (resolver)
            {
                //DataTable table = DataSetUtil.CreateDataTable(scheme.TableName, scheme.Fields);
                DataTable table = resolver.CreateVirtualTable(true);
                DataRow   row   = table.NewRow();
                table.Rows.Add(row);
                resolver.SetDefaultValue(input.QueryString);
                resolver.SetDefaultValue(row);
                resolver.FillCodeTable(input.Style);
                resolver.Decode(input.Style);
            }
        }
Beispiel #8
0
 /// <summary>
 /// Initializes a new instance of the InternalTableScheme class.
 /// </summary>
 /// <param name="tableScheme"></param>
 public InternalTableScheme(ITableSchemeEx tableScheme)
 {
     fTableScheme = tableScheme;
     fDataFields  = (from item in tableScheme.Fields
                     where item.Kind == FieldKind.Data
                     select item).ToArray();
 }
Beispiel #9
0
        public static IMetaData CreateVueMetaData(IInputData input, ITableSchemeEx scheme, ISingleMetaData singleMeta)
        {
            InputDataProxy proxy;

            switch (input.Style.Operation)
            {
            case "ListVue":
                proxy = new InputDataProxy(input, (PageStyleClass)PageStyle.List);
                return(new Tk5ListMetaData(scheme, proxy, singleMeta));

            case "InsertVue":
                proxy = new InputDataProxy(input, (PageStyleClass)PageStyle.Insert);
                return(new Tk5SingleNormalMetaData(scheme, proxy, singleMeta));

            case "UpdateVue":
                proxy = new InputDataProxy(input, (PageStyleClass)PageStyle.Update);
                return(new Tk5SingleNormalMetaData(scheme, proxy, singleMeta));

            case "DetailVue":
                proxy = new InputDataProxy(input, (PageStyleClass)PageStyle.Detail);
                return(new Tk5SingleNormalMetaData(scheme, proxy, singleMeta));
            }

            return(null);
        }
Beispiel #10
0
        private Tk5TableScheme CreateTableScheme(IInputData input, ISingleMetaData item)
        {
            ITableSchemeEx sourceScheme = item.CreateSourceScheme(input);
            Tk5TableScheme scheme       = item.CreateTableScheme(sourceScheme, input);

            fSchemes.Add(scheme);
            return(scheme);
        }
Beispiel #11
0
 protected override void OnReadMetaData(TableResolver resolver,
                                        IPageStyle style, ITableSchemeEx scheme)
 {
     fListFields = (from field in scheme.Fields
                    let tk5field = field.Convert <Tk5FieldInfoEx>()
                                   where IsListField(tk5field, style)
                                   orderby field.Control.GetOrder(style)
                                   select MetaDataTableResolver.GetSortField(field)).ToList();
 }
        public TableResolver CreateObject(params object[] args)
        {
            IDbDataSource source = ObjectUtil.ConfirmQueryObject <IDbDataSource>(this, args);

            ITableSchemeEx   scheme   = Scheme.CreateObject();
            SqlTableResolver resolver = new SqlTableResolver(Sql, scheme, source);

            return(resolver);
        }
Beispiel #13
0
        public SqlTableResolver(string sql, ITableSchemeEx scheme,
                                IDbDataSource source)
            : base(scheme, source)
        {
            TkDebug.AssertArgumentNullOrEmpty(sql, "sql", null);

            ReadOnly = true;
            fSql     = sql;
        }
Beispiel #14
0
        public static ITableScheme ConvertToTableScheme(ITableSchemeEx scheme)
        {
            if (scheme == null)
            {
                return(null);
            }
            ITableScheme result = scheme as ITableScheme;

            return(result ?? new InternalTableScheme(scheme));
        }
Beispiel #15
0
        public static ITableSchemeEx ConvertToTableSchemeEx(ITableScheme scheme,
                                                            Func <IFieldInfo, IFieldInfoEx> converter)
        {
            if (scheme == null)
            {
                return(null);
            }
            ITableSchemeEx result = scheme as ITableSchemeEx;

            return(result ?? new InternalTableSchemeEx(scheme, converter));
        }
        public Tk5SingleNormalMetaData(ITableSchemeEx dataXml, IInputData input,
                                       ISingleMetaData config)
        {
            TkDebug.AssertArgumentNull(dataXml, "dataXml", null);
            TkDebug.AssertArgumentNull(input, "input", null);
            TkDebug.AssertArgumentNull(config, "config", null);

            ColumnCount  = config.ColumnCount;
            fTableScheme = config.CreateTableScheme(dataXml, input);
            Files        = FileUtil.GetFileDependecy(fTableScheme);
            Table        = new Tk5NormalTableData(fTableScheme, config, SearchControlMethod.Id, input.Style);
        }
 public virtual void SetMetaData(IPageStyle style, IMetaData metaData)
 {
     if (TestPageStyleForMetaData(style))
     {
         ITableSchemeEx scheme = metaData.GetTableScheme(MainResolver.TableName);
         if (scheme != null)
         {
             MainResolver.ReadMetaData(scheme);
             OnReadMetaData(MainResolver, style, scheme);
         }
     }
 }
        public TableResolver CreateObject(params object[] args)
        {
            IDbDataSource source = ObjectUtil.ConfirmQueryObject <IDbDataSource>(this, args);

            ITableSchemeEx scheme  = Scheme.CreateObject();
            Tk5DataXml     dataXml = scheme as Tk5DataXml;

            TkDebug.AssertNotNull(dataXml, string.Format(ObjectUtil.SysCulture,
                                                         "模型需要Tk5DataXml,当前的Scheme是{0},不适配", scheme.GetType()), Scheme);
            return(new Tk5TreeTableResolver(dataXml, source)
            {
                AutoTrackField = AutoTrackField,
                AutoUpdateKey = AutoUpdateKey
            });
        }
        public IMetaData CreateObject(params object[] args)
        {
            IInputData input = ObjectUtil.ConfirmQueryObject <IInputData>(this, args);

            ITableSchemeEx scheme = CreateSourceScheme(input);

            switch (input.Style.Style)
            {
            case PageStyle.Insert:
            case PageStyle.Update:
            case PageStyle.Detail:
                return(new Tk5SingleNormalMetaData(scheme, input, this));

            case PageStyle.List:
                return(new Tk5ListMetaData(scheme, input, this));
            }
            return(null);
        }
Beispiel #20
0
        internal Tk5TableScheme(ITableSchemeEx scheme, IInputData input, BaseSingleMetaDataConfig config,
                                Func <ITableSchemeEx, IFieldInfoEx, IInputData, BaseSingleMetaDataConfig, Tk5FieldInfoEx> createFunc)
            : this()
        {
            SetFileDependency(scheme);
            if (!string.IsNullOrEmpty(config.TableName))
            {
                TableName = config.TableName;
            }
            else
            {
                TableName = scheme.TableName;
            }
            if (config.TableDesc != null)
            {
                TableDesc = config.TableDesc.ToString();
            }
            else
            {
                TableDesc = scheme.TableDesc;
            }
            NameField = scheme.NameField;

            PageStyle pageStyle = input.Style.Style;
            var       list      = from item in scheme.Fields
                                  where IsShow(item, pageStyle, config.OverrideFields)
                                  select item;

            foreach (var item in list)
            {
                Tk5FieldInfoEx fieldInfo = createFunc(scheme, item, input, config);
                fList.Add(fieldInfo);
            }

            // 删除主Schema中的字段
            DelFields(config.DelFields);
            // 重载主Schema中的字段
            OverrideFields(input, config.OverrideFields);
            // 添加虚拟字段到主Schema中
            AddFields(input, config.AddFields);

            ProcessRefField();
        }
Beispiel #21
0
        string ISqlProvider.GetCreateTableSql(ITableSchemeEx scheme)
        {
            var    fieldParts = new StringBuilder();
            var    result     = new StringBuilder();
            var    keyFields  = new List <string>();
            var    isFirst    = true;
            string safeFieldName;

            foreach (var field in scheme.Fields)
            {
                if (!isFirst)
                {
                    fieldParts.AppendFormat(ObjectUtil.SysCulture, ",");
                }
                else
                {
                    isFirst = false;
                }
                safeFieldName = GetSafeString(field.FieldName);
                fieldParts.AppendFormat(ObjectUtil.SysCulture, "\r\n{0} {1} {2}", safeFieldName, GetFieldDbType(field)
                                        , field.IsEmpty ? "null" : "not null");
                if (field.IsKey)
                {
                    keyFields.Add(safeFieldName);
                }
            }
            if (keyFields.Count > 0)
            {
                fieldParts.AppendFormat(ObjectUtil.SysCulture, ",\r\nconstraint [PK_{0}] primary key ({1})"
                                        , scheme.TableName, string.Join(",", keyFields));
            }
            result.AppendFormat(ObjectUtil.SysCulture, CREATE_TABLE, GetSafeString(scheme.TableName), fieldParts.ToString())
            .AppendLine();
            //最后构建索引
            //foreach (var tableIndex in scheme.Indexes)
            //    result.AppendFormat(ObjectUtil.SysCulture, CREATE_INDEX, scheme.TableName, tableIndex.Name,
            //               string.Join(",", (from s in tableIndex.Fields
            //                                 select string.Format(ObjectUtil.SysCulture, "{0} {1}", GetSafeString(s.FieldName), s.IsAscending ? "asc" : "desc"))))
            //       .AppendLine();
            return(result.ToString());
        }
Beispiel #22
0
 public static Tk5FieldInfoEx CreatePropertyField(ITableSchemeEx scheme,
                                                  IFieldInfoEx field, IInputData input, BaseSingleMetaDataConfig config)
 {
     return(new Tk5FieldInfoEx(field.Convert <PropertyFieldInfo>(), input.Style));
 }
 protected virtual void OnReadMetaData(TableResolver resolver, IPageStyle style, ITableSchemeEx scheme)
 {
 }
Beispiel #24
0
 public InternalScheme(ITableSchemeEx scheme, RegNameList <UnionFieldInfoEx> fields)
 {
     fScheme = scheme;
     fFields = fields;
 }
 public abstract Tk5TableScheme CreateTableScheme(ITableSchemeEx scheme, IInputData input);
Beispiel #26
0
 private void SetFileDependency(ITableSchemeEx scheme)
 {
     Files = FileUtil.GetFileDependecy(scheme);
 }
Beispiel #27
0
 public static void CreateTable(ITableSchemeEx scheme, TkDbContext context)
 {
     TkDebug.AssertArgumentNull(scheme, "scheme", null);
     ExecuteScalar(context.ContextConfig.InternalSqlProvider.GetCreateTableSql(scheme), context);
 }
 public override Tk5TableScheme CreateTableScheme(ITableSchemeEx scheme, IInputData input)
 {
     return(new Tk5TableScheme(scheme, input, this, CreateDataXmlField));
 }
Beispiel #29
0
 public virtual void ReadMetaData(ITableSchemeEx metaData)
 {
     ReadMetaData(MetaDataUtil.ConvertToTableScheme(metaData));
 }
 public override Tk5TableScheme CreateTableScheme(ITableSchemeEx scheme, IInputData input)
 {
     return(new Tk5TableScheme(scheme, input, this, SchemeUtil.CreatePropertyField));
 }