コード例 #1
0
        /// <summary>
        /// Adiciona um Unidade de Edição Visual de uma Coluna
        /// </summary>
        private void AddVisualUnit()
        {
            int xPosition = 1;
            int index     = 0;

            if (_visualUnits.Count > 0)
            {
                index     = _visualUnits.Count - 1;
                xPosition = _visualUnits[index].Left + _visualUnits[index].Width;
            }

            VisualWhereTable _newObj = new VisualWhereTable();

            _newObj.Location                = new Point(xPosition, 1);
            _newObj.Size                    = new System.Drawing.Size(150, 214);
            _newObj.Name                    = string.Format("Unit{0:000}", index);
            _newObj.RenderSQL              += new EventHandler(_newObj_RenderSQL);
            _newObj.ShowColumnChanged      += new ColumnsSelectionChanged(_newObj_ShowColumnChanged);
            _newObj.RedrawWhere            += new EventHandler(_newObj_RedrawWhere);
            _newObj.ResizeVisualWhereTable += new ResizeVisualWhereTableHandler(_newObj_ResizeVisualWhereTable);
            _newObj.TabIndex                = _visualUnits.Count;
            _newObj.Query                   = _query;
            _newObj.Index                   = _visualUnits.Count;

            _visualUnits.Add(_newObj);

            panelUnitsArea.Controls.Add(_newObj);
        }
コード例 #2
0
        /// <summary>
        /// Adiciona uma linha de where a uma unidade especificada
        /// </summary>
        /// <param name="lineWhere">Comandos para acrescentar no where</param>
        /// <param name="lineUnit">Número da linha do where.Cara nova linha é um OR</param>
        private void AddWhere(List <Database.SelectAnalyzer.Consulta.WherePiece> lineWhere, int lineUnit, ref Dictionary <VisualWhereTable, Dictionary <int, List <Database.SelectAnalyzer.Consulta.WherePiece> > > units)
        {
            VisualWhereTable _vt = FindVisualUnitFromFilter(lineWhere);

            if (_vt == null)
            {
                return;
            }

            // adiciona o Unidade controladora de coluna a lista que controla as adições de where
            if (!units.ContainsKey(_vt))
            {
                units.Add(_vt, new Dictionary <int, List <Database.SelectAnalyzer.Consulta.WherePiece> >());
            }

            // adiciona a linha de or referente a coluna
            if (!units[_vt].ContainsKey(lineUnit))
            {
                units[_vt].Add(lineUnit, new List <Database.SelectAnalyzer.Consulta.WherePiece>());
            }

            // se cabe ter abrir e fechar parenteses
            if (lineWhere.Count > 3)
            {
                if (lineWhere[0] is Database.SelectAnalyzer.Consulta.WhereOpenParentesesPiece &&
                    lineWhere[lineWhere.Count - 1] is Database.SelectAnalyzer.Consulta.WhereCloseParentesesPiece)
                {
                    for (int ix = 1; ix < lineWhere.Count - 1; ix++)
                    {
                        // Adiciona todos os comandos de where para determinada unidade linhas
                        units[_vt][lineUnit].Add(lineWhere[ix]);
                    }
                }
                else
                {
                    if (lineWhere[0] is Database.SelectAnalyzer.Consulta.WhereJunctionPiece && lineWhere[1] is Database.SelectAnalyzer.Consulta.WhereOpenParentesesPiece && lineWhere[lineWhere.Count - 1] is Database.SelectAnalyzer.Consulta.WhereCloseParentesesPiece)
                    {
                        for (int ix = 2; ix < lineWhere.Count - 1; ix++)
                        {
                            // Adiciona todos os comandos de where para determinada unidade linhas
                            units[_vt][lineUnit].Add(lineWhere[ix]);
                        }
                    }
                    else
                    {
                        units[_vt][lineUnit].AddRange(lineWhere);
                    }
                }
            }
            else
            {
                // Adiciona todos os comandos de where para determinada unidade linhas
                units[_vt][lineUnit].AddRange(lineWhere);
            }
        }
コード例 #3
0
 private void buttonResize_MouseUp(object sender, MouseEventArgs e)
 {
     if (_visualResing != null)
     {
         if (ResizeVisualWhereTable != null)
         {
             ResizeVisualWhereTable(new ResizeVisualWhereTableArgs(this.Index, this.Left + this.Width));
         }
     }
     _visualResing = null;
 }
コード例 #4
0
        /// <summary>
        /// Seta o informação de Grupo
        /// </summary>
        /// <param name="column"></param>
        /// <param name="on"></param>
        internal void SetGroup(Column column, bool on)
        {
            VisualWhereTable _unit = FindUnit(column);

            if (_unit == null)
            {
                _unit = FindFirstEmptyUnit();
                _unit.SelectedColumn = column;
                _unit.ShowData       = false;
            }
            _unit.Group = on;
        }
コード例 #5
0
        /// <summary>
        /// Adiciona uma linha de having a uma unidade especificada
        /// </summary>
        /// <param name="lineWhere">Comandos para acrescentar no having</param>
        private void AddHaving(List <Database.SelectAnalyzer.Consulta.WherePiece> lineHaving, ref Dictionary <VisualWhereTable, List <Database.SelectAnalyzer.Consulta.WherePiece> > units)
        {
            VisualWhereTable _vt = FindVisualUnitFromFilter(lineHaving);

            // adiciona o Unidade controladora de coluna a lista que controla as adições de where
            if (!units.ContainsKey(_vt))
            {
                units.Add(_vt, new List <Database.SelectAnalyzer.Consulta.WherePiece>());
            }

            // Adiciona todos os comandos de where para determinada unidade linhas
            units[_vt].AddRange(lineHaving);
        }
コード例 #6
0
        /// <summary>
        /// Informa se uma coluna deve ou não ser mostrada
        /// </summary>
        /// <param name="column"></param>
        /// <param name="value"></param>
        internal void SetShowColumn(Column column, bool value, bool externAdition)
        {
            VisualWhereTable _unit = this.FindUnit(column);

            if (_unit == null)
            {
                // Procura a Primeira Unidade Vazia. Se não achar cria uma
                _unit = FindFirstEmptyUnit();
                _unit.SelectedColumn = column;
            }
            _unit.BeginExternalAdition();
            _unit.ShowData = value;
            _unit.EndExternalAdition();
        }
コード例 #7
0
        /// <summary>
        /// Procura a Unidade de Filtro para a coluna estabelecida no where. Se não existir cria uma
        /// </summary>
        /// <param name="lineWhere">Lista de Comandos do where</param>
        /// <returns>A Unidade de Filtro Finculada a Coluna</returns>
        private VisualWhereTable FindVisualUnitFromFilter(List <Database.SelectAnalyzer.Consulta.WherePiece> lineWhere)
        {
            if (lineWhere.Count < 1)
            {
                return(null);
            }

            // Onde começam as instruções
            int _startCmd = 0;

            // se o primeiro valor é uma junção
            if (lineWhere[_startCmd] is Database.SelectAnalyzer.Consulta.WhereJunctionPiece)
            {
                _startCmd++;
            }

            // ignora qualquer parenteses aberto antes dos comandos de ligação
            while (lineWhere[_startCmd] is Database.SelectAnalyzer.Consulta.WhereOpenParentesesPiece)
            {
                _startCmd++;
            }

            // Onde fica o divisor dos dois lados do comando. Separa o comando em antes e depois do operador lógico
            int logicalInstructionOrCommandOperator = -1;
            List <Database.SelectAnalyzer.Consulta.WherePiece> leftSide = new List <Database.SelectAnalyzer.Consulta.WherePiece>();

            for (logicalInstructionOrCommandOperator = _startCmd;
                 !(lineWhere[logicalInstructionOrCommandOperator] is Database.SelectAnalyzer.Consulta.WhereLogicalOperatorPiece ||
                   lineWhere[logicalInstructionOrCommandOperator] is Database.SelectAnalyzer.Consulta.WhereComandPiece) &&
                 logicalInstructionOrCommandOperator < lineWhere.Count;
                 logicalInstructionOrCommandOperator++) // para cada até achar o operador lógico ou chegar no final da expressão
            {
                leftSide.Add(lineWhere[logicalInstructionOrCommandOperator]);
            }


            // analisando o lado esquerdo pra achar a chave de ligação com a unidade visual
            string commandSyntax = string.Empty;
            Column _col          = null;

            if (leftSide.Count > 0)
            {
                // descobriu que uma coluna é a ligação
                if (leftSide[0] is Database.SelectAnalyzer.Consulta.WhereColumnPiece)
                {
                    // procura a coluna
                    _col = _query.FindColumn(((Database.SelectAnalyzer.Consulta.WhereColumnPiece)leftSide[0]).Campo.ColunaCompleta);

                    // qualquer coisa apos a coluna é considerada sufixo
                }
                else if (leftSide[0] is Database.SelectAnalyzer.Consulta.WhereOpenParentesesPiece)
                {
                    string syntax = string.Empty;
                    // trata-se de uma expressão complexa e o parênteses deve ser mantido para não interferir na sintaxe
                    foreach (Database.SelectAnalyzer.Consulta.WherePiece item in leftSide)
                    {
                        commandSyntax += item.Syntax + " ";
                    }
                    _col = new Column(syntax);
                }
                else
                {
                    // trata-se de uma expressão sem parenteses
                    _col = new Column(leftSide[0].Syntax);
                }
            }

            // captura a unidade visual conectada a coluna
            VisualWhereTable _vt = FindUnit(_col);

            if (_vt == null)
            {
                // não há unidade visual conectada criamos então uma para o novo item
                _vt = FindFirstEmptyUnit();
                _vt.SelectedColumn = _col;
                _vt.ShowData       = false;
            }

            return(_vt);
        }
コード例 #8
0
 private void buttonResize_MouseDown(object sender, MouseEventArgs e)
 {
     _visualResing = this;
 }