private void AssertTranslation(string input, string output)
        {
            StringWriter sw = new StringWriter();

            Sooda.Sql.SoqlToSqlConverter converter     = new Sooda.Sql.SoqlToSqlConverter(sw, _DatabaseSchema.GetSchema(), new Sooda.Sql.SqlServerBuilder());
            Sooda.QL.SoqlPrettyPrinter   prettyPrinter = new Sooda.QL.SoqlPrettyPrinter(Console.Out);

            Sooda.QL.SoqlQueryExpression query = Sooda.QL.SoqlParser.ParseQuery(input);
            prettyPrinter.PrintQuery(query);
            Console.WriteLine();
            Console.WriteLine("--------");
            converter.ConvertQuery(query);
            string o = sw.ToString();

            Console.WriteLine(o);
            Console.WriteLine("--------");

            o = Normalize(o);

            if (output == null)
            {
                Console.WriteLine("AssertTranslation(\n\t\"{0}\",\n\t\"{1}\");", input, o);
                return;
            }
            output = Normalize(output);

            Assert.AreEqual(output, o);
        }
        private void AssertTranslation(string input, string output)
        {
            StringWriter sw = new StringWriter();
            Sooda.Sql.SoqlToSqlConverter converter = new Sooda.Sql.SoqlToSqlConverter(sw, _DatabaseSchema.GetSchema(), new Sooda.Sql.SqlServerBuilder());
            Sooda.QL.SoqlPrettyPrinter prettyPrinter = new Sooda.QL.SoqlPrettyPrinter(Console.Out);

            Sooda.QL.SoqlQueryExpression query = Sooda.QL.SoqlParser.ParseQuery(input);
            prettyPrinter.PrintQuery(query);
            Console.WriteLine();
            Console.WriteLine("--------");
            converter.ConvertQuery(query);
            string o = sw.ToString();

            Console.WriteLine(o);
            Console.WriteLine("--------");

            o = Normalize(o);

            if (output == null)
            {
                Console.WriteLine("AssertTranslation(\n\t\"{0}\",\n\t\"{1}\");", input, o);
                return;
            }
            output = Normalize(output);

            Assert.AreEqual(output, o);
        }
Example #3
0
        public void RunQuery()
        {
            try {
                string inputText = null;
                if (inputText == null || inputText.Length == 0)
                {
                    inputText = TextEditorControl1.Text;
                }

                //translator.StripComments = true;

                DateTime     translationStart = DateTime.Now;
                StringWriter sw  = new StringWriter();
                StringWriter sw2 = new StringWriter();
                Sooda.Sql.SoqlToSqlConverter converter     = new Sooda.Sql.SoqlToSqlConverter(sw, schemaInfo, new Sooda.Sql.SqlServerBuilder());
                Sooda.QL.SoqlPrettyPrinter   prettyPrinter = new Sooda.QL.SoqlPrettyPrinter(sw2);

                Sooda.QL.SoqlQueryExpression query = Sooda.QL.SoqlParser.ParseQuery(inputText);
                converter.ConvertQuery(query);
                prettyPrinter.PrintQuery(query);
                string   sqlquery       = sw.ToString();
                string   prettysoql     = sw2.ToString();
                DateTime translationEnd = DateTime.Now;

                translatedSql.Text = sqlquery; //.Replace("\n\n", "\n").Replace("\n\n", "\n").Replace("\n\n", "\n").Replace("\n", "\r\n");
                translatedSql.Document.ReadOnly = true;
                translatedSql.Refresh();

                soqlPrettyPrint.Text = prettysoql; //.Replace("\n\n", "\n").Replace("\n\n", "\n").Replace("\n\n", "\n").Replace("\n", "\r\n");
                soqlPrettyPrint.Document.ReadOnly = true;
                soqlPrettyPrint.Refresh();

                toolBarButtonRun.Enabled = false;
                toolBar1.Update();

                DateTime t0 = DateTime.Now;

                // HACK
                DataSourceInfo          dsi = schemaInfo.GetDataSourceInfo("default");
                Sooda.Sql.SqlDataSource sds = (Sooda.Sql.SqlDataSource)dsi.CreateDataSource();

                sds.Open();

                try {
                    IDbConnection conn = sds.Connection;
                    IDbCommand    cmd  = conn.CreateCommand();
                    if (!sds.DisableTransactions)
                    {
                        cmd.Transaction = sds.Transaction;
                    }
                    cmd.CommandText = sqlquery;

                    resultSet.Items.Clear();
                    resultSet.Columns.Clear();

                    IDataReader reader = cmd.ExecuteReader();
                    for (int i = 0; i < reader.FieldCount; ++i)
                    {
                        string name = reader.GetName(i);

                        ColumnHeader ch = new ColumnHeader();
                        ch.Text      = name;
                        ch.TextAlign = HorizontalAlignment.Left;
                        ch.Width     = 100;
                        resultSet.Columns.Add(ch);
                    }

                    resultSet.HeaderStyle = ColumnHeaderStyle.Nonclickable;

                    StringBuilder          csvText         = new StringBuilder();
                    System.IO.StringWriter xmlStringWriter = new System.IO.StringWriter();
                    XmlTextWriter          xmlWriter       = new XmlTextWriter(xmlStringWriter);
                    xmlWriter.Formatting = Formatting.Indented;
                    xmlWriter.WriteStartDocument(true);
                    xmlWriter.WriteStartElement("results");
                    while (reader.Read())
                    {
                        xmlWriter.WriteStartElement("item");
                        object       v    = reader.GetValue(0);
                        string       text = (v is DBNull) ? "(null)" : v.ToString();
                        ListViewItem item = resultSet.Items.Add(text);

                        AppendCsvValue(csvText, v);
                        //if (!(v is DBNull))
                        xmlWriter.WriteAttributeString(reader.GetName(0), text);

                        for (int i = 1; i < reader.FieldCount; ++i)
                        {
                            csvText.Append(";");
                            v    = reader.GetValue(i);
                            text = (v is DBNull) ? "(null)" : v.ToString();
                            item.SubItems.Add(text);
                            //if (!(v is DBNull))
                            xmlWriter.WriteAttributeString(reader.GetName(i), text);
                            AppendCsvValue(csvText, v);
                        }
                        csvText.Append("\r\n");
                        xmlWriter.WriteEndElement();
                    }
                    xmlWriter.WriteEndElement();
                    csvResults.Text = csvText.ToString();
                    xmlResults.Text = xmlStringWriter.ToString();

                    foreach (ColumnHeader ch in resultSet.Columns)
                    {
                        ch.Width = -2;
                    }
                } finally {
                    sds.Close();
                }

                DateTime t1 = DateTime.Now;
                messagesTextBox.Text = String.Format("Got {0} row(s)\r\nQuery took {1}\r\nTranslation took {2}", resultSet.Items.Count, t1 - t0, translationEnd - translationStart);
            } catch (Exception e) {
                messagesTextBox.Text = e.ToString();
                MessageBox.Show(this, e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            } finally {
                toolBarButtonRun.Enabled = true;
            }
        }
Example #4
0
        public void RunQuery() {
            try {
                string inputText = null;
                if (inputText == null || inputText.Length == 0)
                    inputText = TextEditorControl1.Text;

                //translator.StripComments = true;

                DateTime translationStart = DateTime.Now;
                StringWriter sw = new StringWriter();
                StringWriter sw2 = new StringWriter();
                Sooda.Sql.SoqlToSqlConverter converter = new Sooda.Sql.SoqlToSqlConverter(sw, schemaInfo, new Sooda.Sql.SqlServerBuilder());
                Sooda.QL.SoqlPrettyPrinter prettyPrinter = new Sooda.QL.SoqlPrettyPrinter(sw2);

                Sooda.QL.SoqlQueryExpression query = Sooda.QL.SoqlParser.ParseQuery(inputText);
                converter.ConvertQuery(query);
                prettyPrinter.PrintQuery(query);
                string sqlquery = sw.ToString();
                string prettysoql = sw2.ToString();
                DateTime translationEnd = DateTime.Now;

                translatedSql.Text = sqlquery; //.Replace("\n\n", "\n").Replace("\n\n", "\n").Replace("\n\n", "\n").Replace("\n", "\r\n");
                translatedSql.Document.ReadOnly = true;
                translatedSql.Refresh();

                soqlPrettyPrint.Text = prettysoql; //.Replace("\n\n", "\n").Replace("\n\n", "\n").Replace("\n\n", "\n").Replace("\n", "\r\n");
                soqlPrettyPrint.Document.ReadOnly = true;
                soqlPrettyPrint.Refresh();

                toolBarButtonRun.Enabled = false;
                toolBar1.Update();

                DateTime t0 = DateTime.Now;

                // HACK
                DataSourceInfo dsi = schemaInfo.GetDataSourceInfo("default");
                Sooda.Sql.SqlDataSource sds = (Sooda.Sql.SqlDataSource)dsi.CreateDataSource();

                sds.Open();

                try {

                    IDbConnection conn = sds.Connection;
                    IDbCommand cmd = conn.CreateCommand();
                    if (!sds.DisableTransactions)
                        cmd.Transaction = sds.Transaction;
                    cmd.CommandText = sqlquery;

                    resultSet.Items.Clear();
                    resultSet.Columns.Clear();

                    IDataReader reader = cmd.ExecuteReader();
                    for (int i = 0; i < reader.FieldCount; ++i) {
                        string name = reader.GetName(i);

                        ColumnHeader ch = new ColumnHeader();
                        ch.Text = name;
                        ch.TextAlign = HorizontalAlignment.Left;
                        ch.Width = 100;
                        resultSet.Columns.Add(ch);
                    }

                    resultSet.HeaderStyle = ColumnHeaderStyle.Nonclickable;

                    StringBuilder csvText = new StringBuilder();
                    System.IO.StringWriter xmlStringWriter = new System.IO.StringWriter();
                    XmlTextWriter xmlWriter = new XmlTextWriter(xmlStringWriter);
                    xmlWriter.Formatting = Formatting.Indented;
                    xmlWriter.WriteStartDocument(true);
                    xmlWriter.WriteStartElement("results");
                    while (reader.Read()) {
                        xmlWriter.WriteStartElement("item");
                        object v = reader.GetValue(0);
                        string text = (v is DBNull) ? "(null)" : v.ToString();
                        ListViewItem item = resultSet.Items.Add(text);

                        AppendCsvValue(csvText, v);
                        //if (!(v is DBNull))
                        xmlWriter.WriteAttributeString(reader.GetName(0), text);

                        for (int i = 1; i < reader.FieldCount; ++i) {
                            csvText.Append(";");
                            v = reader.GetValue(i);
                            text = (v is DBNull) ? "(null)" : v.ToString();
                            item.SubItems.Add(text);
                            //if (!(v is DBNull))
                            xmlWriter.WriteAttributeString(reader.GetName(i), text);
                            AppendCsvValue(csvText, v);
                        }
                        csvText.Append("\r\n");
                        xmlWriter.WriteEndElement();
                    }
                    xmlWriter.WriteEndElement();
                    csvResults.Text = csvText.ToString();
                    xmlResults.Text = xmlStringWriter.ToString();

                    foreach (ColumnHeader ch in resultSet.Columns) {
                        ch.Width = -2;
                    }
                } finally {
                    sds.Close();
                }

                DateTime t1 = DateTime.Now;
                messagesTextBox.Text = String.Format("Got {0} row(s)\r\nQuery took {1}\r\nTranslation took {2}", resultSet.Items.Count, t1 - t0, translationEnd - translationStart);
            } catch (Exception e) {
                messagesTextBox.Text = e.ToString();
                MessageBox.Show(this, e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            } finally {
                toolBarButtonRun.Enabled = true;
            }
        }