Beispiel #1
0
        private void AdditionalTables_Clicked(object sender, RoutedEventArgs e)
        {
            try
            {
                string[] exludeTables = this.ErdSegment.SegmentTables == null || this.ErdSegment.SegmentTables.Count == 0 ?
                                        new string[] { } :
                this.ErdSegment.SegmentTables.Select(t => t.TableName).ToArray();

                SelectedTables selector = new SelectedTables(this.ErdSegment.IncludeInContextBuild.ToArray(), exludeTables);

                bool?result = selector.ShowDialog();

                if (!result.IsTrue())
                {
                    return;
                }

                this.ErdSegment.IncludeInContextBuild.Clear();

                this.ErdSegment.IncludeInContextBuild.AddRange(selector.SelectedModels());

                this.Canvas_Changed(this, this.ErdSegment.IncludeInContextBuild);
            }
            catch (Exception err)
            {
                MessageBox.Show(err.InnerExceptionMessage());
            }
        }
Beispiel #2
0
 /// <summary>
 /// Selects from tables.
 /// </summary>
 /// <param name="tables">The tables.</param>
 public void SelectFromTables(params string[] tables)
 {
     SelectedTables.Clear();
     foreach (var table in tables)
     {
         SelectedTables.Add(table);
     }
 }
Beispiel #3
0
 /// <inheritdoc />
 public ISelectStringBuilder From(params string[] tableNames)
 {
     SelectedTables.Clear();
     foreach (var table in tableNames)
     {
         SelectedTables.Add(table);
     }
     return(this);
 }
 private void CheckIfFieldIsSelected(String selectedTable)
 {
     for (int x = 0; x < chkListFields.Items.Count; x++)
     {
         if (SelectedTables.IsFieldSelected(selectedTable, chkListFields.Items[x].ToString()))
         {
             chkListFields.SetItemChecked(x, true);
         }
     }
 }
Beispiel #5
0
 /// <summary>
 /// Checking to see if user has selected this table to be generated
 /// </summary>
 protected bool IsTableSelected(string tableName)
 {
     if (!OnlyReadSelectedItems)
     {
         return(true);
     }
     if (SelectedTables == null || SelectedTables.Count == 0)
     {
         return(false);
     }
     return(SelectedTables.Contains(tableName));
 }
Beispiel #6
0
        public void PutSelectedTable(string tableAlias, bool createNewPath)
        {
            if (SelectedTables == null)
            {
                SelectedTables = new List <List <string> >();
            }

            if (SelectedTables.Count == 0)
            {
                List <string> path = new List <string>();
                if (!string.IsNullOrWhiteSpace(tableAlias))
                {
                    path.Add(tableAlias);
                }
                SelectedTables.Add(path);
            }
            else
            {
                if (createNewPath)
                {
                    List <string> path = new List <string>();
                    if (!string.IsNullOrWhiteSpace(tableAlias))
                    {
                        path.Add(tableAlias);
                    }
                    SelectedTables.Add(path);
                }
                else
                {
                    int           index = SelectedTables.Count - 1;
                    List <string> path  = SelectedTables[index];
                    if (path == null)
                    {
                        path = new List <string>();
                        if (!string.IsNullOrWhiteSpace(tableAlias))
                        {
                            path.Add(tableAlias);
                        }
                    }
                    else
                    {
                        if (!string.IsNullOrWhiteSpace(tableAlias) && !BaseMarkupUtilities.IsExistOnList(path, tableAlias))
                        {
                            // path.Insert(0, tableAlias);
                            path.Add(tableAlias);
                        }
                    }
                    SelectedTables[index] = path;
                }
            }
        }
        private void chkListTables_ItemCheck(object sender, ItemCheckEventArgs e)
        {
            CheckedListBox currentBox = (CheckedListBox)sender;

            if (e.NewValue.Equals(CheckState.Checked))
            {
                SelectedTables.CreateTableEntry(currentBox.Items[e.Index].ToString());
            }
            else if (e.NewValue.Equals(CheckState.Unchecked))
            {
                SelectedTables.RemoveTable(currentBox.Items[e.Index].ToString());
            }
            chkListFields.Tag = currentBox;
        }
        private void chkListFields_ItemCheck(object sender, ItemCheckEventArgs e)
        {
            CheckedListBox currentBox   = (CheckedListBox)chkListFields.Tag;
            CheckState     tableChecked = currentBox.GetItemCheckState(currentBox.SelectedIndex);

            if (e.NewValue.Equals(CheckState.Checked) && tableChecked == CheckState.Checked)
            {
                if (!SelectedTables.IsFieldSelected(currentBox.SelectedItem.ToString(), chkListFields.Items[e.Index].ToString()))
                {
                    SelectedTables.AddTableField(currentBox.SelectedItem.ToString(), chkListFields.Items[e.Index].ToString());
                }
            }
            else if (e.NewValue.Equals(CheckState.Unchecked) && tableChecked == CheckState.Checked)
            {
                SelectedTables.RemoveTableField(currentBox.SelectedItem.ToString(), chkListFields.Items[e.Index].ToString());
            }
        }
Beispiel #9
0
        /// <inheritdoc />
        public override string Build()
        {
            var sb = new StringBuilder("SELECT ");

            // Output Distinct.
            if (IsDistinct)
            {
                sb.Append("DISTINCT ");
            }

            // Output column names.
            sb.Append(SelectedColumns.Any() ? string.Join(", ", SelectedColumns.Select(WrapVariable)) : "*");

            // Output table names.
            if (SelectedTables.Any())
            {
                sb.Append($" FROM {string.Join(", ", SelectedTables.Select(WrapVariable))}");
            }

            // Output joins.
            if (JoinStatement.Any())
            {
                foreach (var clause in JoinStatement)
                {
                    sb.AppendLine();
                    switch (clause.JoinType)
                    {
                    case JoinType.InnerJoin:
                        sb.Append("INNER JOIN ");
                        break;

                    case JoinType.LeftJoin:
                        sb.Append("LEFT JOIN ");
                        break;

                    case JoinType.RightJoin:
                        sb.Append("RIGHT JOIN ");
                        break;

                    default:
                        throw new ArgumentOutOfRangeException(nameof(clause.JoinType), $"MySql doesn't support {clause.JoinType} join type.");
                    }
                    sb.Append($"`{clause.ToTable}` ON ");
                    sb.Append(CreateComparisonClause(
                                  $"{clause.ToTable}.{clause.ToColumn}",
                                  clause.ComparisonOperator,
                                  new SqlLiteral($"{clause.FromTable}.{clause.FromColumn}")));
                }
            }

            // Output where statement.
            if (WhereStatement.Any())
            {
                sb.AppendLine();
                sb.Append($"WHERE {string.Join(" AND ", WhereStatement.Select(BuildWhereClauseString))}");
            }

            // Output GroupBy statement.
            if (GroupByColumns.Count > 0)
            {
                sb.AppendLine();
                sb.Append($"GROUP BY {string.Join(", ", GroupByColumns.Select(WrapVariable))}");
            }

            // Output OrderBy statement.
            if (OrderByStatement.Any())
            {
                sb.AppendLine();
                sb.Append($"ORDER BY {string.Join(", ", OrderByStatement.Select(BuildOrderByClauseString))}");
            }

            if (TakeRows.HasValue)
            {
                sb.AppendLine();

                if (SkipRows.HasValue)
                {
                    sb.Append($"LIMIT {SkipRows}, {TakeRows}");
                }
                else
                {
                    sb.Append($"LIMIT {TakeRows}");
                }
            }

            // Return the built query.
            return(sb.ToString());
        }
Beispiel #10
0
 /// <summary>
 /// Selects from table.
 /// </summary>
 /// <param name="table">The table.</param>
 public void SelectFromTable(string table)
 {
     SelectedTables.Clear();
     SelectedTables.Add(table);
 }
        /// <inheritdoc />
        public override string Build()
        {
            var sb = new StringBuilder("SELECT ");

            // Output Distinct.
            if (IsDistinct)
            {
                sb.Append("DISTINCT ");
            }

            if (!SkipRows.HasValue && TakeRows.HasValue)
            {
                sb.Append($"TOP {TakeRows} ");
                if (TopIsPercent)
                {
                    sb.Append("PERCENT ");
                }
            }

            // Output column names.
            sb.Append(SelectedColumns.Any() ? string.Join(", ", SelectedColumns.Select(WrapVariable)) : "*");

            // Output table names.
            if (SelectedTables.Any())
            {
                sb.Append($" FROM {string.Join(", ", SelectedTables.Select(WrapVariable))}");
            }

            // Output joins.
            if (JoinStatement.Any())
            {
                foreach (var clause in JoinStatement)
                {
                    sb.AppendLine();
                    switch (clause.JoinType)
                    {
                    case JoinType.InnerJoin:
                        sb.Append("INNER JOIN ");
                        break;

                    case JoinType.OuterJoin:
                        sb.Append("OUTER JOIN ");
                        break;

                    case JoinType.LeftJoin:
                        sb.Append("LEFT JOIN ");
                        break;

                    case JoinType.RightJoin:
                        sb.Append("RIGHT JOIN ");
                        break;
                    }
                    sb.Append($"[{clause.ToTable}] ON ");
                    sb.Append(CreateComparisonClause(
                                  $"{clause.ToTable}.{clause.ToColumn}",
                                  clause.ComparisonOperator,
                                  new SqlLiteral($"{clause.FromTable}.{clause.FromColumn}")));
                }
            }

            // Output where statement.
            if (WhereStatement.Any())
            {
                sb.AppendLine();
                sb.Append($"WHERE {string.Join(" AND ", WhereStatement.Select(BuildWhereClauseString))}");
            }

            // Output GroupBy statement.
            if (GroupByColumns.Count > 0)
            {
                sb.AppendLine();
                sb.Append($"GROUP BY {string.Join(", ", GroupByColumns.Select(WrapVariable))}");
            }

            // TODO: Output having statement.

            /*
             * if (Having.ClauseLevels > 0)
             * {
             *  // Check if a Group By Clause was set
             *  if (groupByColumns.Count == 0)
             *  {
             *      throw new Exception("Having statement was set without Group By");
             *  }
             *  if (buildCommand)
             *  {
             *      sb.Append(" HAVING " + Having.BuildWhereStatement(() => command));
             *  }
             *  else
             *  {
             *      sb.Append(" HAVING " + Having.BuildWhereStatement());
             *  }
             * }
             */

            // Output OrderBy statement.
            if (OrderByStatement.Any())
            {
                sb.AppendLine();
                sb.Append($"ORDER BY {string.Join(", ", OrderByStatement.Select(BuildOrderByClauseString))}");

                // Works only in SQL Server 2012 and upper.
                // TODO use BETWEEN if it require
                if (SkipRows.HasValue)
                {
                    sb.AppendLine();
                    sb.Append($"OFFSET {SkipRows} ROWS");
                    if (TakeRows.HasValue)
                    {
                        sb.AppendLine();
                        sb.Append($"FETCH NEXT {TakeRows} ROWS ONLY");
                    }
                }
            }

            // Return the built query.
            return(sb.ToString());
        }