public static void AreEqual(ShowPlan expectedPlan, ShowPlan actualPlan) { if (expectedPlan == null && actualPlan != null) { Assert.Fail("No plan expected, but query produced a plan. Check test defintion to ensure a propery plan is included."); } if (expectedPlan != null && actualPlan == null) { Assert.Fail("Query did not produce an execution plan."); } if (expectedPlan == null) { return; } try { AreEqual(expectedPlan.Root, actualPlan.Root); } catch (AssertFailedException ex) { throw new Exception("Expected plan did not match actual plan. See inner exception for first mismatch.", ex); } }
private void filmLabel_MouseUp(object sender, MouseEventArgs e) { if (isMouseDown == true && e.Button == System.Windows.Forms.MouseButtons.Left) { ColorBorderLabel label = sender as ColorBorderLabel; // 计算放映计划时间表的屏幕坐标 int x = spPanShowPlan.Location.X + scSplit.Location.X + scSplit.SplitterDistance + scSplit.SplitterWidth; int y = spPanShowPlan.Location.Y + panShowPlanContainer.Location.Y + scSplit.Location.Y; // 计算放映计划时间表的控件区域(屏幕坐标) Rectangle showPlanRectangle = new Rectangle(x, y, spPanShowPlan.Width, spPanShowPlan.Height); if (showPlanRectangle.Contains(tempLabel.Location) == true) { spPanShowPlan.Controls.Add(tempLabel); } else { ShowPlan showPlan = tempLabel.Tag as ShowPlan; dataManager.RemoveTempData(showPlan); this.Controls.Remove(tempLabel); tempLabel.IsEnableTimeLabel = false; tempLabel.Dispose(); } isMouseDown = false; } }
public frmUpdateShowPlanInfo(ShowPlan Showplan, DailyShowPlanManage datamager) { InitializeComponent(); this.showPlan = Showplan; this.dataManager = datamager; de = Database.GetNewDataEntity(); employeeInfoList = new List <EmployeeInfo>(); }
private void LoadPlan() { if (openPlanFileDialog.ShowDialog() == DialogResult.OK) { XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load(openPlanFileDialog.FileName); ShowPlan showPlan = ShowPlan.FromXml(xmlDocument); showPlanControl.ShowPlan = showPlan; } }
public void ShowPlan() { ExpectArgumentNull("navigable", delegate { NQuery.ShowPlan.FromXml(null); }); Query query = QueryFactory.CreateQuery(); query.Text = "SELECT * FROM Employees"; ShowPlan showPlan = query.GetShowPlan(); ExpectArgumentNull("textWriter", delegate { showPlan.WriteTo(null, 1); }); }
private void CopyPlanToClipboard() { ShowPlan showPlan = _query.GetShowPlan(); using (StringWriter sw = new StringWriter()) { XmlTextWriter xmlTextWriter = new XmlTextWriter(sw); showPlan.ToXml().WriteContentTo(xmlTextWriter); Clipboard.SetText(sw.ToString()); } }
public static TestDefinition FromXml(XmlDocument xmlDocument) { TestDefinition result = new TestDefinition(); result.CommandText = xmlDocument.SelectSingleNode("/test/sql").InnerText; XmlNode expectedRuntimeErrorNode = xmlDocument.SelectSingleNode("/test/expectedRuntimeError"); if (expectedRuntimeErrorNode != null) { result.ExpectedRuntimeError = expectedRuntimeErrorNode.InnerText; } XmlNode expectedErrorsNode = xmlDocument.SelectSingleNode("/test/expectedErrors"); if (expectedErrorsNode != null) { List <CompilationError> errorList = new List <CompilationError>(); foreach (XmlNode expectedErrorNode in expectedErrorsNode.SelectNodes("expectedError")) { ErrorId errorId = (ErrorId)Enum.Parse(typeof(ErrorId), expectedErrorNode.Attributes["id"].Value); string errorText = expectedErrorNode.Attributes["text"].Value; CompilationError compilationError = new CompilationError(SourceRange.Empty, errorId, errorText); errorList.Add(compilationError); } result.ExpectedCompilationErrors = errorList.ToArray(); } XmlNode expectedResultsNode = xmlDocument.SelectSingleNode("/test/expectedResults"); if (expectedResultsNode != null) { using (StringReader stringReader = new StringReader(expectedResultsNode.InnerXml)) { DataSet dataSet = new DataSet(); dataSet.ReadXml(stringReader); result.ExpectedResults = dataSet.Tables[0]; } } XmlNode expectedPlanNode = xmlDocument.SelectSingleNode("/test/expectedPlan"); if (expectedPlanNode != null) { result.ExpectedPlan = ShowPlan.FromXml(expectedPlanNode); } return(result); }
/// <summary> /// 同步时间标签上的时间及位置,根据场次方块上的开始时间 /// </summary> public void SynchronizeTimeLabel() { if (this.Tag != null && this.Tag.GetType() == typeof(ShowPlan)) { ShowPlan showPlan = this.Tag as ShowPlan; try { SynchronizeTimeLabel(showPlan.StartTime.Value, showPlan.FilmLength.Value); } catch { timeLabel.Text = string.Empty; } } }
private void SavePlan() { if (savePlanFileDialog.ShowDialog() == DialogResult.OK) { ShowPlan showPlan = _query.GetShowPlan(); if (savePlanFileDialog.FilterIndex == 0) { showPlan.ToXml().Save(savePlanFileDialog.FileName); } else { using (StreamWriter sw = new StreamWriter(savePlanFileDialog.FileName)) showPlan.WriteTo(sw, 2); } } }
private void LoadQueryPlan(ShowPlan plan) { showPlanTreeView.BeginUpdate(); try { showPlanTreeView.Nodes.Clear(); if (plan != null) { AddQueryPlanElement(showPlanTreeView.Nodes, plan.Root); showPlanTreeView.ExpandAll(); } } finally { showPlanTreeView.EndUpdate(); } }
private void ExplainQuery() { ClearStatusPanel(); ClearErrors(); try { _query.Text = syntaxEditor.Text; ShowPlan showPlan = _query.GetShowPlan(); showPlanControl.ShowPlan = showPlan; tabControl.SelectedTab = explainPlanTabPage; showPlanControl.Focus(); } catch (CompilationException ex) { LoadErrors(ex.CompilationErrors); SetErrorState(); } }
private void filmLabel_MouseMove(object sender, MouseEventArgs e) { if (isMouseDown == true && e.Button == System.Windows.Forms.MouseButtons.Left) { ShowPlan showPlan = tempLabel.Tag as ShowPlan; if (showPlan == null || showPlan.FilmLength == null || showPlan.FilmLength == 0) { MessageBox.Show("影片时长为空,请先进行设置!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } Point newLocation = new Point(Control.MousePosition.X - xOffset, Control.MousePosition.Y - yOffset); showPlan.StartTime = spPanShowPlan.GetStartTimeFromTopFormLocation(newLocation); tempLabel.Location = newLocation; } }
protected static void RunTest(string resNameOfTestDefinition) { TestDefinition testDefinition = TestDefinition.FromResource(resNameOfTestDefinition); if (testDefinition == null) { Assert.Fail("Could not find test definition XML for test '{0}'.", resNameOfTestDefinition); } Query query = QueryFactory.CreateQuery(); query.Text = testDefinition.CommandText; CompilationErrorCollection actualCompilationErrors = null; string actualRuntimeError = null; ShowPlan actualPlan = null; DataTable actualResults = null; try { actualResults = query.ExecuteDataTable(); actualPlan = query.GetShowPlan(); } catch (RuntimeException ex) { actualRuntimeError = ex.Message; } catch (CompilationException ex) { actualCompilationErrors = ex.CompilationErrors; } Assert.AreEqual(testDefinition.ExpectedRuntimeError, actualRuntimeError); AssertHelpers.AreEqual(testDefinition.ExpectedCompilationErrors, actualCompilationErrors); AssertHelpers.AreEqual(testDefinition.ExpectedResults, actualResults); AssertHelpers.AreEqual(testDefinition.ExpectedPlan, actualPlan); }
/// <summary> /// 批量生成放映计划信息 /// </summary> /// <param name="hallId"></param> /// <param name="filmId"></param> /// <param name="StartTime"></param> /// <param name="timeSpan"></param> /// <param name="showPlanNumber"></param> /// <returns></returns> public bool BuildShowPlan(string hallId, string filmId, DateTime StartTime, int timeSpan, int showPlanNumber) { bool IsHashMode = false; if (showPlanNumber < 1) { throw new NotImplementedException("安排场次不能为0"); } //清空缓存中的场次计划 showPlanList.Clear(); Film_FilmMode film_FilmMode = new Film_FilmMode(); string[] Id; int? film_FilmModeId = null; if (filmId.Contains(";") == true) { // 有 ";"号好的,则说明此条数据有放映模式的 Id = filmId.Split(';'); filmId = Id[0]; try { film_FilmModeId = Convert.ToInt32(Id[1]); //获取放映模式数据 film_FilmMode = GetFilm_FilmMode((int)film_FilmModeId); IsHashMode = true; } catch { return(false); } } //获取影片信息 Film tmpFilm = GetFilm(filmId); if (tmpFilm == null) { return(false); } //如果日计划的开始时间的小时大于或等于日计划的结束时间的小时数,则说明此日计划是跨天的。并且ShowPlan的开始时间小于日计划的开始时间的小时,则是第二天的 //因为选择的时候没有更改选择时间的日期。所以要从新构造以当前日计划一致的时间 if ((dataMager.DailyShowPlan.DailyPlan.EndTime.Value <= dataMager.DailyShowPlan.DailyPlan.StartTime.Value) && StartTime.Hour < dataMager.DailyShowPlan.DailyPlan.StartTime.Value.Hours) { StartTime = new DateTime(dataMager.DailyShowPlan.DailyPlan.PlanDate.Value.Year, dataMager.DailyShowPlan.DailyPlan.PlanDate.Value.Month, dataMager.DailyShowPlan.DailyPlan.PlanDate.Value.Day + 1, StartTime.Hour, StartTime.Minute, 0); } else { StartTime = new DateTime(dataMager.DailyShowPlan.DailyPlan.PlanDate.Value.Year, dataMager.DailyShowPlan.DailyPlan.PlanDate.Value.Month, dataMager.DailyShowPlan.DailyPlan.PlanDate.Value.Day, StartTime.Hour, StartTime.Minute, 0); } while (showPlanNumber > 0) { showPlanNumber--; ShowPlan newData = new ShowPlan(); if (IsHashMode == true && tmpFilm.HasMode == true && film_FilmMode.Film_FilmModeId.ToString().Trim() != string.Empty) { //如果影片信息的放映模式为真且放映模式的编号不为空 //设置放映计划名称 影片名称+放映模式名称 newData.ShowPlanName = tmpFilm.FilmName + "(" + film_FilmMode.FilmMode.FilmModeName + ")"; //设置放映模式编号 newData.Film_FilmModeId = film_FilmModeId; } else { newData.ShowPlanName = tmpFilm.FilmName; } newData.Film = dataMager.GetFilm(tmpFilm.FilmId); newData.Position = 0; newData.StartTime = StartTime; newData.EndTime = newData.StartTime.Value.AddMinutes((int)tmpFilm.FilmLength); newData.HallId = hallId; //设置下一场的开始时间 StartTime = newData.EndTime.Value.AddMinutes((int)timeSpan); newData.FilmLength = tmpFilm.FilmLength; newData.DailyPlan = dataMager.DailyShowPlan.DailyPlan; newData.Timespan = timeSpan; newData.Ratio = tmpFilm.Ratio; // newData.DiscountId = 0; newData.IsDiscounted = false; newData.FareSettingId = 1; var tmp = dataMager.GetTheaterPrice(); if (tmp != null) { newData.SinglePrice = tmp.SinglePrice; newData.DoublePrice = tmp.DoublePrice; newData.StudentPrice = tmp.StudentPrice; newData.GroupPrice = tmp.GroupPrice; newData.MemberPrice = tmp.MemberPrice; newData.BoxPrice = tmp.BoxPrice; } else { newData.SinglePrice = 0; newData.DoublePrice = 0; newData.StudentPrice = 0; newData.GroupPrice = 0; newData.MemberPrice = 0; newData.BoxPrice = 0; } newData.ShowStatus = 0; newData.ShowTypeId = 1; newData.IsCheckingNumber = true; newData.IsTicketChecking = true; newData.IsOnlineTicketing = true; newData.IsApproved = false; newData.IsSalable = false; newData.IsLocked = false; newData.ActiveFlag = true; newData.Created = DateTime.Now; newData.Updated = DateTime.Now; //设置最低价格 newData.LowestPrice = dataMager.GetFilm(tmpFilm.FilmId).LowestPrice; showPlanList.Add(newData); } try { if (dataMager.CheckShowPlan(this.showPlanList) == true) { return(true); } else { return(false); } } catch (Exception EX) { throw new NotImplementedException(EX.Message); } }
private void ExportTestDefinition() { if (saveTestDefinitionFileDialog.ShowDialog() == DialogResult.OK) { Text = String.Format("NQuery - [{0}]", Path.GetFileName(saveTestDefinitionFileDialog.FileName)); CompilationErrorCollection compilationErrors = null; RuntimeException runtimeException = null; DataTable result = null; ShowPlan showPlan = null; Query query = new Query(); query.DataContext = _query.DataContext; query.Text = syntaxEditor.Text; try { result = query.ExecuteDataTable(); showPlan = query.GetShowPlan(); } catch (RuntimeException ex) { runtimeException = ex; } catch (CompilationException ex) { compilationErrors = ex.CompilationErrors; } XmlDocument testDefinition = new XmlDocument(); XmlNode rootNode = testDefinition.CreateElement("test"); testDefinition.AppendChild(rootNode); XmlNode sqlNode = testDefinition.CreateElement("sql"); sqlNode.InnerText = syntaxEditor.Text; rootNode.AppendChild(sqlNode); if (runtimeException != null) { XmlNode expectedRuntimeErrorNode = testDefinition.CreateElement("expectedRuntimeError"); rootNode.AppendChild(expectedRuntimeErrorNode); expectedRuntimeErrorNode.InnerText = runtimeException.Message; } else if (compilationErrors != null) { XmlNode expectedErrorsNode = testDefinition.CreateElement("expectedErrors"); rootNode.AppendChild(expectedErrorsNode); foreach (CompilationError error in compilationErrors) { XmlNode errorNode = testDefinition.CreateElement("expectedError"); XmlAttribute idAtt = testDefinition.CreateAttribute("id"); idAtt.Value = error.Id.ToString(); errorNode.Attributes.Append(idAtt); XmlAttribute textAtt = testDefinition.CreateAttribute("text"); textAtt.Value = error.Text; errorNode.Attributes.Append(textAtt); expectedErrorsNode.AppendChild(errorNode); } } if (result != null) { XmlNode resultsNode = testDefinition.CreateElement("expectedResults"); rootNode.AppendChild(resultsNode); StringBuilder sb = new StringBuilder(); using (StringWriter stringWriter = new StringWriter(sb)) { DataSet dataSet = new DataSet(); dataSet.Tables.Add(result); dataSet.WriteXml(stringWriter, XmlWriteMode.WriteSchema); } resultsNode.InnerXml = sb.ToString(); } if (showPlan != null) { XmlNode planNode = testDefinition.CreateElement("expectedPlan"); rootNode.AppendChild(planNode); XmlNode executionPlanNode = testDefinition.ImportNode(showPlan.ToXml().SelectSingleNode("executionPlan"), true); planNode.AppendChild(executionPlanNode); } testDefinition.Save(saveTestDefinitionFileDialog.FileName); } }
private void ImportTestDefinition() { if (openTestDefinitionFileDialog.ShowDialog() == DialogResult.OK) { Text = String.Format("NQuery - [{0}]", Path.GetFileName(openTestDefinitionFileDialog.FileName)); saveTestDefinitionFileDialog.FileName = openTestDefinitionFileDialog.FileName; string query; List <CompilationError> errorList = new List <CompilationError>(); string runtimeError = null; DataSet dataSet = null; ShowPlan showPlan = null; #region XML Handling XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load(openTestDefinitionFileDialog.FileName); query = xmlDocument.SelectSingleNode("/test/sql").InnerText; XmlNode expectedRuntimeErrorNode = xmlDocument.SelectSingleNode("/test/expectedRuntimeError"); if (expectedRuntimeErrorNode != null) { runtimeError = expectedRuntimeErrorNode.InnerText; } XmlNode expectedErrorsNode = xmlDocument.SelectSingleNode("/test/expectedErrors"); if (expectedErrorsNode != null) { foreach (XmlNode expectedErrorNode in expectedErrorsNode.SelectNodes("expectedError")) { ErrorId errorId = (ErrorId)Enum.Parse(typeof(ErrorId), expectedErrorNode.Attributes["id"].Value); string errorText = expectedErrorNode.Attributes["text"].Value; CompilationError compilationError = new CompilationError(SourceRange.Empty, errorId, errorText); errorList.Add(compilationError); } } XmlNode expectedResultsNode = xmlDocument.SelectSingleNode("/test/expectedResults"); if (expectedResultsNode != null) { dataSet = new DataSet(); using (StringReader stringReader = new StringReader(expectedResultsNode.InnerXml)) { dataSet.ReadXml(stringReader); } } XmlNode expectedPlanNode = xmlDocument.SelectSingleNode("/test/expectedPlan"); if (expectedPlanNode != null) { showPlan = ShowPlan.FromXml(expectedPlanNode); } #endregion ClearErrors(); resultsDataGridView.DataSource = null; showPlanControl.ShowPlan = null; syntaxEditor.Text = query; if (runtimeError != null) { LoadErrors(runtimeError); } LoadErrors(errorList); if (dataSet != null) { LoadResults(dataSet.Tables[0]); } if (showPlan != null) { showPlanControl.ShowPlan = showPlan; } } }
public static void AreEqual(ShowPlan expectedPlan, ShowPlan actualPlan) { if (expectedPlan == null && actualPlan != null) Assert.Fail("No plan expected, but query produced a plan. Check test defintion to ensure a propery plan is included."); if (expectedPlan != null && actualPlan == null) Assert.Fail("Query did not produce an execution plan."); if (expectedPlan == null) return; try { AreEqual(expectedPlan.Root, actualPlan.Root); } catch (AssertFailedException ex) { throw new Exception("Expected plan did not match actual plan. See inner exception for first mismatch.", ex); } }
/// <summary> /// 格式化数据表格 /// </summary> protected void FormatDataList() { ShowPlan ss = new ShowPlan(); dgvList.AutoGenerateColumns = false; dgvList.Columns["Stagehand"].Visible = false; dgvList.Columns["Projectionist"].Visible = false; dgvList.Columns["IsTicketChecking"].Visible = false; dgvList.Columns["IsSalable"].Visible = false; dgvList.Columns["IsOnlineTicketing"].Visible = false; dgvList.Columns["IsApproved"].Visible = false; dgvList.Columns["IsCheckingNumber"].Visible = false; dgvList.Columns["IsDiscounted"].Visible = false; dgvList.Columns["IsLocked"].Visible = false; dgvList.Columns["ShowPlanId"].Visible = false; dgvList.Columns["Created"].Visible = false; dgvList.Columns["Updated"].Visible = false; dgvList.Columns["ActiveFlag"].Visible = false; dgvList.Columns["DailyPlanId"].Visible = false; dgvList.Columns["GroupPrice"].Visible = false; dgvList.Columns["Film"].Visible = false; dgvList.Columns["FareSetting"].Visible = false; dgvList.Columns["FareSettingId"].Visible = false; dgvList.Columns["ActiveFlag"].Visible = false; dgvList.Columns["DailyPlan"].Visible = false; dgvList.Columns["Ticket"].Visible = false; dgvList.Columns["Film_FilmModeId"].Visible = false; dgvList.Columns["FilmId"].Visible = false; dgvList.Columns["DailyPlan"].Visible = false; dgvList.Columns["Ticket"].Visible = false; dgvList.Columns["Film_FilmModeId"].Visible = false; dgvList.Columns["FilmId"].Visible = false; dgvList.Columns["Hall"].Visible = false; dgvList.Columns["ShowGroup"].Visible = false; dgvList.Columns["ShowTypeId"].Visible = false; dgvList.Columns["Film_FilmModeId"].Visible = false; dgvList.Columns["ShowType"].Visible = false; dgvList.Columns["SeatStatus"].Visible = false; dgvList.Columns["BlockPrice"].Visible = false;; dgvList.Columns["ShowStatus"].Visible = false; dgvList.Columns["MemberPrice"].Visible = false; dgvList.Columns["FilmLength"].Visible = false; dgvList.Columns["GroupPrice"].Visible = false; dgvList.Columns["BoxPrice"].Visible = false; dgvList.Columns["MemberPrice"].Visible = false; dgvList.Columns["DiscountPrice"].Visible = false; dgvList.Columns["LowestPrice"].Visible = false; dgvList.Columns["Timespan"].Visible = false; dgvList.Columns["HallId"].Visible = false; dgvList.Columns["EndTime"].Visible = false; //判断如果已经存在则不添加 Boolean isExit = false; foreach (DataGridViewColumn column in dgvList.Columns) { if (column.Name == "HallName") { isExit = true; } } if (isExit == false) { dgvList.Columns.Add("HallName", "影厅名称"); } dgvList.Columns["ShowPlanName"].HeaderText = "影片名称"; dgvList.Columns["StartTime"].HeaderText = "开始时间"; dgvList.Columns["Position"].HeaderText = "场次"; dgvList.Columns["SinglePrice"].HeaderText = "单人零售票价"; dgvList.Columns["DoublePrice"].HeaderText = "双座零售票价"; dgvList.Columns["StudentPrice"].HeaderText = "学生票价"; dgvList.Columns["Ratio"].HeaderText = "片方分账比例"; dgvList.Columns["HallName"].DisplayIndex = 1; dgvList.Columns["ShowPlanName"].DisplayIndex = 2; dgvList.Columns["StartTime"].DisplayIndex = 3; dgvList.Columns["Position"].DisplayIndex = 4; dgvList.Columns["SinglePrice"].DisplayIndex = 5; dgvList.Columns["DoublePrice"].DisplayIndex = 6; dgvList.Columns["StudentPrice"].DisplayIndex = 7; dgvList.Columns["Ratio"].DisplayIndex = 8; }