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); }
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; } }
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; } }