Example #1
0
        /// <summary>
        /// To string function
        /// </summary>
        /// <returns>A string containing the file information</returns>
        public override string ToString()
        {
            StringBuilder Builder = new StringBuilder();

            Rows.ForEach <Row>(x => Builder.Append(x.ToString()));
            return(Builder.ToString());
        }
Example #2
0
        /// <summary>
        /// Creates the table in database.
        /// </summary>
        /// <remarks>Table must contain at least one column to be created (SQLite requirement).</remarks>
        internal void AddToDatabase(Database database)
        {
            if (String.IsNullOrEmpty(Name))
            {
                throw new InvalidNameException(Name, Resources.InvalidTableName.FormatExt(Name));
            }
            if (!Columns.Any())
            {
                throw new InvalidOperationException(Resources.MustHaveColumns.FormatExt(Name));
            }
            var invalidColumn = Columns.FirstOrDefault(col => !Column.IsNameValid(col.Name));

            if (invalidColumn != null)
            {
                throw new InvalidNameException(invalidColumn.Name, Resources.InvalidColumnName.FormatExt(invalidColumn.Name));
            }

            Database = database;
            using (var connection = Database.Connection.Connect())
            {
                var sql = CreateSql.FormatExt(Name, String.Join(",", Columns.Select(x => x.Definition)),
                                              String.IsNullOrEmpty(PrimaryKeyDefinition) ? "" : "," + PrimaryKeyDefinition,
                                              String.IsNullOrEmpty(ForeignKeysDefinitions) ? "" : "," + ForeignKeysDefinitions);
                using (var command = new SQLiteCommand(sql, connection))
                {
                    command.ExecuteNonQuery();
                }

                Columns.Where(c => c.Quantity == ColumnQuantity.List).ForEach(c => c.AddListColumn(connection));
                Rows.ForEach(row => row.AddToTable(this, connection));
            }
        }
        public void LogDebugData()
        {
            string rowLocs = string.Empty;

            Rows.ForEach(r => rowLocs += r.Rect.ToString() + "  ");
            Log.Message(string.Format("Table Debug. Table Rect: {0}, colCnt: {1}, rowCnt: {2}, rowLocs: {3}", TableRect.ToString(), Columns.Count.ToString(), Rows.Count.ToString(), rowLocs));
        }
Example #4
0
        public override XmlNode AppendXmlNode(XmlNode parent)
        {
            XmlNode node = XmlHelper.AppendNodeWithNamespace(parent, "Table", Namespaces.ss);

            if (ExpandedColumnCount > 0)
            {
                XmlHelper.AppendNotNullAttr(node, "ExpandedColumnCount", ExpandedColumnCount);
            }

            if (ExpandedRowCount > 0)
            {
                XmlHelper.AppendNotNullAttr(node, "ExpandedRowCount", ExpandedRowCount);
            }

            XmlHelper.AppendNotDefaultAttr(node, "DefaultColumnWidth", DefaultColumnWidth);
            XmlHelper.AppendNotDefaultAttr(node, "DefaultRowHeight", DefaultRowHeight);
            XmlHelper.AppendNotDefaultAttr(node, "LeftCell", LeftCell);
            XmlHelper.AppendNotDefaultAttr(node, "TopCell", TopCell);
            XmlHelper.AppendNotNullAttr(node, "StyleID", StyleID);

            XmlHelper.AppendNotDefaultAttrWithNamespace(node, "FullColumns", Namespaces.x, DataConverter.ChangeType <bool, int>(FullColumns));
            XmlHelper.AppendNotDefaultAttrWithNamespace(node, "FullRows", Namespaces.x, DataConverter.ChangeType <bool, int>(FullRows));

            Columns.ForEach(column => column.AppendXmlNode(node));
            Rows.ForEach(row => row.AppendXmlNode(node));

            return(node);
        }
        public void WriteTo(Stream bufferStream)
        {
            Rows.ForEach(row => {
                row.Sort((t1, t2) => {
                    if (!ReferenceEquals(t1, t2) && t1.Order.Equals(t2.Order))
                    {
                        throw new InvalidOperationException("Each field must have different order.");
                    }

                    return(t1.Order.CompareTo(t2.Order));
                });
            });

            ProcessStringTable();
            ProcessDataFields();

            UtfFieldImage[] orderedDataFieldImages;
            var             header = GetHeader(out orderedDataFieldImages);

            WriteHeaderTo(header, bufferStream);
            SetStringFieldRelocations(header);
            SetExtraDataFieldRelocations(header, orderedDataFieldImages);
            WriteFieldDescriptorsTo(header, bufferStream);
            WritePerRowDataTo(header, bufferStream);
            WriteStringTableTo(header, bufferStream);
            WriteExtraDataTo(header, bufferStream);
        }
Example #6
0
        public EntityContainer <T> Remove(string key)
        {
            var index = Keys.IndexOf(key);

            if (index > 0)
            {
                Keys.RemoveAt(index);
                Rows.ForEach(c => c.Cell.RemoveAt(index));
            }
            return(this);
        }
Example #7
0
        public void OrderBy(int cellIndex, int renderIndex, bool desc = false)
        {
            Rows.ForEach(row => row.OrderBy(cellIndex, renderIndex, desc));

            if (!desc)
            {
                Rows = Rows.OrderBy(x => x.GetOrderValue(cellIndex, renderIndex)).ToList();
            }
            else
            {
                Rows = Rows.OrderByDescending(x => x.GetOrderValue(cellIndex, renderIndex)).ToList();
            }
        }
        public List <string> RecordsCsv()
        {
            List <string> results = new List <string>();

            if (Rows?.Length < 1)
            {
                Log.Info("no rows in table", ConsoleColor.White);
                return(results);
            }

            Rows.ForEach(r => results.Add(string.Join(",", (Array.ConvertAll(r, ra => ra.ToString())))));
            Log.Info($"returning {results.Count} record csv's", ConsoleColor.Cyan);
            return(results);
        }
Example #9
0
 private void UnselectAll()
 {
     Columns.ForEach(x =>
     {
         x.Unselect();
     });
     Rows.ForEach(r =>
     {
         for (int i = 0; i < r.Cells.Length; i++)
         {
             r.Cells[i].Unselect();
         }
     });
     SelectedRow    = null;
     SelectedCell   = null;
     SelectedColumn = null;
 }
        /// <summary>
        /// 功能描述:加载column
        /// 作  者:HZH
        /// 创建日期:2019-08-08 17:51:50
        /// 任务编号:POS
        /// </summary>
        private void LoadColumns()
        {
            try
            {
                if (DesignMode)
                {
                    return;
                }

                ControlHelper.FreezeControl(this.panHead, true);
                this.panColumns.Controls.Clear();
                this.panColumns.ColumnStyles.Clear();

                if (m_columns != null && m_columns.Count() > 0)
                {
                    int intColumnsCount = m_columns.Count();
                    if (m_isShowCheckBox)
                    {
                        intColumnsCount++;
                    }
                    this.panColumns.ColumnCount = intColumnsCount;
                    for (int i = 0; i < intColumnsCount; i++)
                    {
                        Control c = null;
                        if (i == 0 && m_isShowCheckBox)
                        {
                            this.panColumns.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(SizeType.Absolute, 30F));

                            UCCheckBox box = new UCCheckBox();
                            box.TextValue           = "";
                            box.Size                = new Size(30, 30);
                            box.CheckedChangeEvent += (a, b) =>
                            {
                                Rows.ForEach(p => p.IsChecked = box.Checked);
                                if (HeadCheckBoxChangeEvent != null)
                                {
                                    HeadCheckBoxChangeEvent(a, b);
                                }
                            };
                            c = box;
                        }
                        else
                        {
                            var item = m_columns[i - (m_isShowCheckBox ? 1 : 0)];
                            this.panColumns.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(item.WidthType, item.Width));
                            Label lbl = new Label();
                            lbl.Name       = "dgvColumns_" + i;
                            lbl.Text       = item.HeadText;
                            lbl.Font       = m_headFont;
                            lbl.ForeColor  = m_headTextColor;
                            lbl.TextAlign  = ContentAlignment.MiddleCenter;
                            lbl.AutoSize   = false;
                            lbl.Dock       = DockStyle.Fill;
                            lbl.MouseDown += (a, b) =>
                            {
                                if (HeadColumnClickEvent != null)
                                {
                                    HeadColumnClickEvent(a, b);
                                }
                            };
                            c = lbl;
                        }
                        this.panColumns.Controls.Add(c, i, 0);
                    }
                }
            }
            finally
            {
                ControlHelper.FreezeControl(this.panHead, false);
            }
        }
 public void ExportTo(ExportVisitor visitor)
 {
     visitor.Visit(this, () => Rows.ForEach(r => r.ExportTo(visitor)));
 }
Example #12
0
        public string Print()
        {
            StringBuilder toPrint = new StringBuilder();

            // Ensure enough columns for given rows
            if (Rows.Count > 0)
            {
                while (Rows.Select(R => R.Count).Max() > Columns.Count)
                {
                    Columns.Add("");
                }
                // Shortens overly lengthy fields
                this.ShortenFields();
            }
            // Calculate max Column Lengths
            List <int> ColumnsMaxLengths = Columns.Select(C => 0).ToList();

            for (int i = 0; i < Rows.Count; i++)
            {
                for (int j = 0; j < Rows[i].Count; j++)
                {
                    ColumnsMaxLengths[j] = Math.Max(ColumnsMaxLengths[j], Rows[i][j].Length);
                }
            }
            bool empty = !(ColumnsMaxLengths.Max() > 0);

            for (int i = 0; i < ColumnsMaxLengths.Count; i++)
            {
                // Remove empty columns, if it is not a completely empty menu
                if (ColumnsMaxLengths[i] == 0 && !empty)
                {
                    Rows.ForEach(R => R.RemoveAt(i));
                    Columns.RemoveAt(i);
                    ColumnsMaxLengths.RemoveAt(i);
                    i--;
                }
                else
                {
                    // Column name is the max, if longer than all the column's fields
                    ColumnsMaxLengths[i] = Math.Max(ColumnsMaxLengths[i], Columns[i].Length);
                }
            }

            toPrint.Append(EliteConsole.PrintInfoLine());
            toPrint.Append(EliteConsole.PrintInfoLine());
            switch (this.MenuType)
            {
            case EliteConsoleMenuType.Menu:
                toPrint.Append(PrintMenuType(ColumnsMaxLengths));
                break;

            case EliteConsoleMenuType.Parameter:
                toPrint.Append(PrintParameterType(ColumnsMaxLengths));
                break;

            case EliteConsoleMenuType.List:
                toPrint.Append(PrintListType(ColumnsMaxLengths));
                break;
            }
            if (this.PrintEndBuffer)
            {
                toPrint.Append(EliteConsole.PrintInfoLine());
                toPrint.Append(EliteConsole.PrintInfoLine());
            }
            return(toPrint.ToString());
        }
Example #13
0
        public void Redo(DataGridViewUndoRedoManager manager)
        {
            if (manager == null)
            {
                return;
            }
            var dgv = manager.GridView;

            if (dgv == null)
            {
                return;
            }
            manager.IsBusy = true;
            try
            {
                switch (CommandType)
                {
                case DataGridViewUndoRedoCommandType.ChangeValue:
                    UndoRedoValues(manager, false);
                    break;

                case DataGridViewUndoRedoCommandType.ChangeColumn:
                    if (OldColumns != null && OldColumns.Count > 0)
                    {
                        OldColumns.ForEach(o => o.Remove());
                    }
                    if (NewColumns != null && NewColumns.Count > 0)
                    {
                        NewColumns.ToList().ForEach(o => o.Insert(o.LastIndex));
                    }
                    break;

                case DataGridViewUndoRedoCommandType.RemoveColumn:
                    if (OldColumns != null && OldColumns.Count > 0)
                    {
                        OldColumns.ForEach(o => o.Remove());
                    }
                    break;

                case DataGridViewUndoRedoCommandType.AddColumn:
                    if (NewColumns != null && NewColumns.Count > 0)
                    {
                        NewColumns.ToList().ForEach(o => o.Insert(o.LastIndex));
                    }
                    break;

                case DataGridViewUndoRedoCommandType.RemoveRow:
                    if (Rows != null && Rows.Count > 0)
                    {
                        Rows.ForEach(o => dgv.Rows.Remove(o));
                    }
                    break;

                case DataGridViewUndoRedoCommandType.AddRow:
                    if (Rows != null && Rows.Count > 0)
                    {
                        Rows.OrderBy(o => o.Index).ToList().ForEach(o => dgv.Rows.Insert(o.Index, o));
                    }
                    break;
                }
            }
            finally
            {
                manager.IsBusy = false;
            }
        }
Example #14
0
 public void ShrinkColumnAt(int idx)
 {
     RebindRows();
     Columns.RemoveAt(idx);
     Rows.ForEach(it => it.OnRemovColumn(idx));
 }
Example #15
0
        public ImportProgramPlan()
        {
            this.CustomValidate = (Rows, Messages) =>
            {
                Dictionary <string, List <IRowStream> > ProgramPlans = new Dictionary <string, List <IRowStream> >();

                #region 根據課程規劃名稱、科目名稱及科目屬性分類
                Rows.ForEach
                    (x =>
                {
                    string Level = x.GetValue(mLevel);

                    if (!string.IsNullOrEmpty(Level))
                    {
                        string ProgramPlanName    = x.GetValue(mProgramPlanName);
                        string Subject            = x.GetValue(mSubject);
                        string Domain             = x.GetValue(mDomain);
                        string Entry              = x.GetValue(mEntry);
                        string RequiredBy         = x.GetValue(mRequiredBy);
                        string Required           = x.GetValue(mRequired);
                        string NotIncludeInCalc   = x.GetValue(mNotIncludeInCalc);
                        string NotIncludeInCredit = x.GetValue(mNotIncludeInCredit);

                        string SubjectKey = ProgramPlanName + "_" +
                                            Subject + "_" +
                                            Domain + "_" +
                                            Entry + "_" +
                                            RequiredBy + "_" +
                                            Required + "_" +
                                            NotIncludeInCalc + "_" +
                                            NotIncludeInCredit;

                        if (!ProgramPlans.ContainsKey(SubjectKey))
                        {
                            ProgramPlans.Add(SubjectKey, new List <IRowStream>());
                        }

                        ProgramPlans[SubjectKey].Add(x);
                    }
                }
                    );
                #endregion

                #region 科目群組其級別是否連續
                foreach (string SubjectKey in ProgramPlans.Keys)
                {
                    List <IRowStream> SubjectRows = ProgramPlans[SubjectKey];

                    List <int> Levels = new List <int>();

                    bool IsContinuous = true;

                    #region 取得所有級別清單
                    SubjectRows.ForEach(x =>
                    {
                        int Level = K12.Data.Int.Parse(x.GetValue(mLevel));

                        if (!Levels.Contains(Level))
                        {
                            Levels.Add(Level);
                        }
                    }
                                        );
                    #endregion

                    #region 判斷級別是否連續
                    int MaxLevel = Levels.Max();
                    int MinLevel = Levels.Min();

                    for (int i = MinLevel; i <= MaxLevel; i++)
                    {
                        if (!Levels.Contains(i))
                        {
                            IsContinuous = false;
                        }
                    }
                    #endregion

                    #region 若不連續寫入錯誤訊息
                    if (!IsContinuous)
                    {
                        SubjectRows.ForEach(x => Messages[x.Position].MessageItems.Add(new
                                                                                       Campus.Validator.MessageItem(Campus.Validator.ErrorType.Error, Campus.Validator.ValidatorType.Row, "科目『" + x.GetValue(mSubject) + "』相同屬性其級別必須連續!")));
                    }
                    #endregion
                }
                #endregion
            };
        }
Example #16
0
 public Day07()
 {
     Rows.ForEach(x => ParseRow(x));
 }
Example #17
0
 public void ExpandColumn(EntityColumn newColumn)
 {
     RebindRows();
     Columns.Add(newColumn);
     Rows.ForEach(it => it.OnAppendColumn());
 }