Пример #1
0
        /// <summary>
        /// コンストラクタ。
        /// </summary>
        /// <param name="node">データベースノードのインスタンス。</param>
        public DatabaseProperty(DatabaseTreeNode node)
            : base(node)
        {
            Definition = (DatabaseDefinition)node.Tag;

            Name = Definition.Name;

            Func<TreeNode, ProjectTreeNode> recursive = null;
            recursive = (parent) =>
            {
                if (parent == null) return null;

                if (parent is ProjectTreeNode) return (ProjectTreeNode)parent;
                return recursive(parent.Parent);
            };

            Project = (WarlockProject)recursive(node).Tag;

            try
            {
                var data = Project.LoadDatabase(Definition);

                if (data is DatabaseClassData)
                {
                    _DataCount = 1;
                }
                else if (data is List<dynamic>)
                {
                    _DataCount = (
                        from d in (List<dynamic>)data
                        where d != null
                        select d
                    ).Count();
                }
                else if (data is Dictionary<dynamic, dynamic>)
                {
                    _DataCount = (
                        from d in (Dictionary<dynamic, dynamic>)data
                        where d.Value != null
                        select d
                    ).Count();
                }
            }
            catch (Exception) { }
        }
        /// <summary>
        /// データベースアイテムのリストを作成する。
        /// </summary>
        /// <param name="project">プロジェクト情報のインスタンス。</param>
        /// <param name="file">データベースファイル名。</param>
        /// <returns>データベースアイテムのリスト。</returns>
        public static List<ListItem> CreateDatabaseItemList(
            WarlockProject project,
            string file)
        {
            try
            {
                var itemDefinition = project.FindDatabaseDefinition(file);
                if (itemDefinition == null)
                {
                    return new List<ListItem>();
                }
                List<dynamic> items = project.LoadDatabase(itemDefinition);

                var ret = new List<ListItem>();

                foreach (var i in items)
                {
                    DatabaseClassData item = i;
                    if (item == null) continue;

                    ret.Add(new ListItem()
                    {
                        Text = String.Format(
                            String.Format(
                                "{{0:{0}}}:{{1}}",
                                new String('0', (items.Count - 1).ToString().Length)
                            ),
                            item.Variables["id"],
                            item.Variables["name"]
                        ),
                        Value = item.Variables["id"]
                    });
                }

                return ret;
            }
            catch
            {
                return new List<ListItem>();
            }
        }