private static void RunStatement(ref CaseContext ctx, QueueUpdateStatement stmt) { if (!(ctx.Machine is IUpdatableMachine updatableMachine)) { throw new LogicEngineException("Update queueing is not supported by the machine", stmt); } updatableMachine.QueueUpdate(); }
private static BitsValue DoOperator(ref CaseContext ctx, OperatorExpression op) { if (op.Operator == Operator.Assign) { return(DoAssignment(ref ctx, op)); } var left = GetValue(ref ctx, op.Left); var right = GetValue(ref ctx, op.Right); switch (op.Operator) { case Operator.Add: return(left + right); case Operator.Subtract: return(left - right); case Operator.Multiply: return(left * right); case Operator.Divide: return(left / right); case Operator.Modulo: return(left.Number % right.Number); case Operator.Equals: return(left == right); case Operator.NotEquals: return(left != right); case Operator.Greater: return(left > right); case Operator.GreaterOrEqual: return(left >= right); case Operator.Lesser: return(left < right); case Operator.LesserOrEqual: return(left <= right); case Operator.And: return(new BitsValue(left & right, Math.Min(left.Length, right.Length))); case Operator.Or: return(new BitsValue(left | right, Math.Max(left.Length, right.Length))); case Operator.Xor: return(new BitsValue(left ^ right, Math.Max(left.Length, right.Length))); } throw new LogicEngineException(); }
private static void GetRange(ref CaseContext ctx, IndexerExpression indexer, int length, out int start, out int end) { //start = (int)GetValue(ref ctx, indexer.Index).Number; //end = indexer.FromEnd // ? indexer.End == null // ? start + 1 // : (int)GetValue(ref ctx, indexer.End).Number // : length; throw null; }
private static void RunStatement(ref CaseContext ctx, ForStatement stmt) { var from = GetValue(ref ctx, stmt.From); var to = GetValue(ref ctx, stmt.To); for (ulong i = from.Number; i < to.Number; i++) { ctx.Set(stmt.VarName, new BitsValue(i, to.Length)); RunStatements(ref ctx, stmt.Body); } }
private static BitsValue DoIndexerExpression(ref CaseContext ctx, IndexerExpression indexer) { var value = GetValue(ref ctx, indexer.Operand); GetRange(ref ctx, indexer, value.Length, out var start, out var end); Span <bool> bits = stackalloc bool[end - start]; value.FillBits(bits, start, end); return(new BitsValue(bits)); }
public Case GetCaseById(int id) { using (var context = new CaseContext()) { var cases = context.Cases.Find(id); if (cases == null) { throw new KeyNotFoundException(); } return(cases); } }
private static BitsValue DoUnaryOperator(ref CaseContext ctx, UnaryOperatorExpression op) { var value = GetValue(ref ctx, op.Operand); switch (op.Operator) { case Operator.Not: return(value.Negated); } throw new LogicEngineException(); }
private static void RunStatement(ref CaseContext ctx, IfStatement stmt) { var conditionValue = GetValue(ref ctx, stmt.Condition); if (IsTruthy(conditionValue)) { RunStatements(ref ctx, stmt.Body); } else if (stmt.Else != null) { RunStatements(ref ctx, stmt.Else); } }
public void FindAll() { var dbContext = SetUpThreeCases("test-find-all"); using (var context = new CaseContext(dbContext)) { var repository = new CaseRepository(context); var result = repository.FindAll(); Assert.AreEqual(3, result.Count); } }
public override void ExitCase([NotNull] CaseContext context) { base.ExitCase(context); Log("ExitCase"); if (phase == Phase.Building) { symbolTableCreator.ExitCase(context); } else { symbolTableTraverser.ExitCase(context); semanticErrorChecker.ExitCase(context); } }
public static void RunScript(Script script, IMachine machine, bool isFirstUpdate = false) { int len = script.TopLevelNodes.Count; for (int i = 0; i < len; i++) { var node = script.TopLevelNodes[i]; if (node is Case @case) { var ctx = new CaseContext(machine, script); UpdateCase(ref ctx, @case, isFirstUpdate); } } }
public override object VisitCase([NotNull] CaseContext context) { string result = "..."; switch (context.op.Type) { case UPPER: result = Visit(context.expression()).ToString().ToUpper(); break; case LOWER: result = Visit(context.expression()).ToString().ToLower(); break; } return(result); }
public HttpStatusCode SaveCase(Case cases) { using (var context = new CaseContext()) { try { context.Cases.Add(cases); context.SaveChanges(); return(HttpStatusCode.Created); } catch (Exception ex) { Console.WriteLine(ex.Message); return(HttpStatusCode.BadRequest); } } }
public HttpStatusCode DeleteCase(int id) { using (var context = new CaseContext()) { try { var cases = context.Cases.Find(id); context.Cases.Remove(cases); context.SaveChanges(); return(HttpStatusCode.OK); } catch (Exception ex) { return(HttpStatusCode.NotFound); } } }
public override ASTN VisitCase([NotNull] CaseContext context) { CaseNode node = new CaseNode(context) { CaseBase = VisitExpr(context.case_expr) as ExprNode }; var list = context.expr().Skip(1); var zip = list.Zip(context.formal(), (x, y) => (x, y)); foreach (var(expr, formal) in zip) { node.Branchs.Add((VisitFormal(formal) as FormalNode, VisitExpr(expr) as ExprNode)); } return(node); }
private static BitsValue DoFunctionCall(ref CaseContext ctx, FunctionCallExpression funcCall) { Span <BitsValue> values = stackalloc BitsValue[funcCall.Arguments.Count]; for (int i = 0; i < funcCall.Arguments.Count; i++) { values[i] = GetValue(ref ctx, funcCall.Arguments[i]); } switch (funcCall.Name) { case "and": if (values.Length != 1) { throw new LogicEngineException("Expected 1 argument on call to 'add'", funcCall); } return(values[0].AreAllBitsSet); case "or": if (values.Length != 1) { throw new LogicEngineException("Expected 1 argument on call to 'or'", funcCall); } return(values[0].IsAnyBitSet); case "sum": if (values.Length != 1) { throw new LogicEngineException("Expected 1 argument on call to 'sum'", funcCall); } return(values[0].PopulationCount); case "trunc" when values.Length == 2: return(new BitsValue(values[0], (int)values[1].Number)); case "trunc" when values.Length == 1: return(values[0].Truncated); case "trunc": throw new LogicEngineException($"Expected 1 or 2 arguments on call to 'trunc', got {values.Length}", funcCall); default: throw new LogicEngineException($"Unknown function '{funcCall.Name}'", funcCall); } }
private void DataGridView1_SelectionChanged(object sender, EventArgs e) { if (dataGridView1.SelectedRows.Count == 0) { return; } var row = this.dataGridView1.SelectedRows[0]; int caseId = (int)row.Cells[1].Value; //this.label5.Text = caseId.ToString(); // this.label7.Text = row.Cells[1]?.Value?.ToString() ?? string.Empty; using (var context = new CaseContext()) { var proofs = context.Proofs.AsNoTracking().Where(p => p.CaseID == caseId).ToList(); dataGridView2.DataSource = proofs; } }
public void Delete() { var dbContext = SetUpThreeCases("test-delete"); using (var context = new CaseContext(dbContext)) { var repository = new CaseRepository(context); var before = repository.FindAll(); Assert.AreEqual(3, before.Count); repository.Delete("test docket number two"); var after = repository.FindAll(); Assert.AreEqual(2, after.Count); } }
public void FindByDocketNumber() { var dbContext = SetUpThreeCases("test-find-by-docket-number"); using (var context = new CaseContext(dbContext)) { var repository = new CaseRepository(context); var result = repository.FindByDocketNumber("test docket number two"); Assert.AreEqual(1, result.Count); Assert.AreEqual("2", result[0].Id); Assert.AreEqual("test docket number two", result[0].DocketNumber); Assert.AreEqual("test title two", result[0].Title); Assert.AreEqual("test description two", result[0].Description); Assert.AreEqual(_openDateTwo, result[0].OpenDate); } }
private void DataGridView1_SelectionChanged(object sender, EventArgs e)//当下一次点击和行和上一次点击的行不一致时,会触发该事件(如果多次点击同一行,则不触发) { AppConfig ac = AppConfig.getAppConfig(); if (dataGridView1.SelectedRows.Count == 0) { //Console.WriteLine("即将被返回"); ac.loadDone = 1; return; } if (ac.loadDone == 1) { //Console.WriteLine("加载完成了!"); var row = this.dataGridView1.SelectedRows[0]; //Console.WriteLine("下标:" + row.Index); int indx = row.Index; Program.m_mainform.g_ajName = (string)dataGridView1.SelectedRows[0].Cells[2].Value; int caseId = (int)ac.aList[indx]; ac.caseId_selected_row = caseId; using (var context = new CaseContext()) { var proofs = context.Proofs.AsNoTracking().Where(p => p.CaseID == caseId).ToList(); dataGridView2.DataSource = proofs; var dgw = this.dataGridView2; int len = dgw.Rows.Count; ac.aEvidenceList.Clear();//清除状态 for (int i = 0; i < len; i++) { var cell_EvidenceId = dgw.Rows[i].Cells[1]; ac.aEvidenceList.Add(cell_EvidenceId.Value);//首先向aEvidenceList中进行添加 cell_EvidenceId.Value = i + 1; //Console.WriteLine(ac.aEvidenceList[i]); } } //为了完成案件的预览展示 label5.Text = Convert.ToString(dataGridView1.Rows[row.Index].Cells[2].Value); label7.Text = Convert.ToString(dataGridView1.Rows[row.Index].Cells[4].Value); CheckTextLabel.Text = Convert.ToString(dataGridView1.Rows[row.Index].Cells[6].Value); EquipTextLabel.Text = Convert.ToString(dataGridView1.Rows[row.Index].Cells[9].Value); CheckTimeTextLabel.Text = Convert.ToString(dataGridView1.Rows[row.Index].Cells[11].Value); } }
private void Button3_Click(object sender, EventArgs e) { Program.m_mainform.AddNewGjalZs(); using (var context = new CaseContext()) { Case @case = context.Cases.Find(AppConfig.getAppConfig().caseId_selected_working); Proof proof = new Proof() { Case = @case, }; @case.Proofs.Add(proof); context.SaveChanges(); } this.Close(); AppConfig.AppConfigAddAdvinceClear(); AppContext.setInstanceNull(); }
private static void RunStatement(ref CaseContext ctx, Statement stmt) { switch (stmt) { case ExpressionStatement exprStmt: GetValue(ref ctx, exprStmt.Expression); break; case IfStatement @if: RunStatement(ref ctx, @if); break; case QueueUpdateStatement queueStmt: RunStatement(ref ctx, queueStmt); break; case ForStatement forStatement: RunStatement(ref ctx, forStatement); break; } }
private DbContextOptions <CaseContext> SetUpThreeCases(string databaseName) { var dbContext = new DbContextOptionsBuilder <CaseContext>() .UseInMemoryDatabase(databaseName: databaseName) .Options; using (var context = new CaseContext(dbContext)) { var repository = new CaseRepository(context); repository.Save(new Case { Id = "1", DocketNumber = "test docket number one", Title = "test title one", Description = "test description one", OpenDate = _openDateOne }); repository.Save(new Case { Id = "2", DocketNumber = "test docket number two", Title = "test title two", Description = "test description two", OpenDate = _openDateTwo }); repository.Save(new Case { Id = "3", DocketNumber = "test docket number three", Title = "test title three", Description = "test description three", OpenDate = _openDateThree }); } return(dbContext); }
private void button10_Click(object sender, EventArgs e) { if (ProofByNameCheckBox.Checked) { if (textBox3.Text == null) { MessageBox.Show("证据名称不能为空", "提示"); return; } else { using (var context = new CaseContext()) { int CaseId = int.Parse(dataGridView1.CurrentRow.Cells[1].Value.ToString()); Console.WriteLine(CaseId); var proofs = context.Proofs .Where(p => p.ProofName.Contains(textBox3.Text.ToString()) && p.CaseID == CaseId).ToList(); this.dataGridView2.DataSource = proofs; } } } }
public HttpStatusCode UpdateCase(Case cases) { using (var context = new CaseContext()) { try { var original = context.Cases.Find(cases.ID); if (original != null) { original.attachment = cases.attachment; original.kind = cases.kind; } context.SaveChanges(); return(System.Net.HttpStatusCode.OK); } catch (Exception ex) { Console.WriteLine(ex.Message); return(System.Net.HttpStatusCode.NotFound); } } }
public void Save() { var dbContext = SetUpThreeCases("test-save"); using (var context = new CaseContext(dbContext)) { var repository = new CaseRepository(context); repository.Save(new Case { Id = "4", DocketNumber = "test docket number four", Title = "test title four", Description = "test description four", OpenDate = DateTime.Now }); var result = repository.FindAll(); Assert.AreEqual(4, result.Count); } }
private void Button2_Click(object sender, EventArgs e) { //新建案件 FormGjglNewAj form = new FormGjglNewAj(); string s = form.ShowDialog().ToString(); if (s == "Cancel") { return; } Case @case = form.Case; using (var context = new CaseContext()) { context.Cases.Add(@case); context.SaveChanges(); AppContext.CaseID = @case.CaseId; } Program.m_mainform.AddNewGjalAj(); // MessageBox.Show("案件添加成功!"); }
private static BitsValue DoListExpression(ref CaseContext ctx, ListExpression list) { ulong n = 0; int len = list.Expressions.Length; for (int i = 0; i < len; i++) { var value = GetValue(ref ctx, list.Expressions[i]); if (!value.IsSingleBit) { throw new LogicEngineException("List expressions can only contain single-bit values", list.Expressions[i]); } if (value.IsOne) { n |= 1UL << (len - 1 - i); } } return(new BitsValue(n, len)); }
private void button1_Click(object sender, EventArgs e) { this.Proof.ProofName = textBox1.Text; this.Proof.ProofSerialNum = textBox2.Text; this.Proof.PhoneNum = textBox6.Text; this.Proof.phoneNum2 = textBox3.Text; this.Proof.Holder = textBox4.Text; this.Proof.ProofType = comboBox2.Text; this.Proof.note = textBox8.Text; //向数据库中写回更改之后的数据 AppConfig ac = AppConfig.getAppConfig(); using (CaseContext caseContext = new CaseContext()) { var proofInfo = this.Proof; var entry = caseContext.Entry(proofInfo); caseContext.Set <Proof>().Attach(entry.Entity); entry.State = System.Data.Entity.EntityState.Modified; caseContext.SaveChanges(); } Program.m_mainform.AddNewGjalAj(); MessageBox.Show("编辑证据成功!"); this.Close(); }
private void FormGjglZzxxEdit_Load(object sender, EventArgs e) { AppConfig ac = AppConfig.getAppConfig(); using (CaseContext caseContext = new CaseContext()) { Proof proofInfo = caseContext.Proofs.FirstOrDefault(p => p.ProofId == ac.proofId_selected); if (proofInfo == null) { MessageBox.Show("该证据不存在,无法继续进行编辑!"); this.Close(); return; } this.Proof = proofInfo; //对要编辑的页面进行初始化,这是页面上的数据是从数据库里面取出来的 textBox1.Text = this.Proof.ProofName; textBox2.Text = this.Proof.ProofSerialNum; textBox6.Text = this.Proof.PhoneNum; textBox3.Text = this.Proof.phoneNum2; textBox4.Text = this.Proof.Holder; comboBox2.Text = this.Proof.ProofType; textBox8.Text = this.Proof.note; } }