private static void CheckConstraintSanity( SchemaConstraints <BasicKeyConstraint> cConstraints, SchemaConstraints <BasicKeyConstraint> sConstraints, SchemaConstraints <ViewKeyConstraint> cViewConstraints, SchemaConstraints <ViewKeyConstraint> sViewConstraints) { }
private void CheckImplication( SchemaConstraints <ViewKeyConstraint> cViewConstraints, SchemaConstraints <ViewKeyConstraint> sViewConstraints) { this.CheckImplicationKeyConstraints(cViewConstraints, sViewConstraints); KeyToListMap <CellGroupValidator.ExtentPair, ViewKeyConstraint> keyToListMap = new KeyToListMap <CellGroupValidator.ExtentPair, ViewKeyConstraint>((IEqualityComparer <CellGroupValidator.ExtentPair>)EqualityComparer <CellGroupValidator.ExtentPair> .Default); foreach (ViewKeyConstraint keyConstraint in cViewConstraints.KeyConstraints) { CellGroupValidator.ExtentPair key = new CellGroupValidator.ExtentPair(keyConstraint.Cell.CQuery.Extent, keyConstraint.Cell.SQuery.Extent); keyToListMap.Add(key, keyConstraint); } foreach (CellGroupValidator.ExtentPair key in keyToListMap.Keys) { ReadOnlyCollection <ViewKeyConstraint> readOnlyCollection = keyToListMap.ListForKey(key); bool flag = false; foreach (ViewKeyConstraint second in readOnlyCollection) { foreach (ViewKeyConstraint keyConstraint in sViewConstraints.KeyConstraints) { if (keyConstraint.Implies(second)) { flag = true; break; } } } if (!flag) { this.m_errorLog.AddEntry(ViewKeyConstraint.GetErrorRecord((IEnumerable <ViewKeyConstraint>)readOnlyCollection)); } } }
private static SchemaConstraints <ViewKeyConstraint> PropagateConstraints( SchemaConstraints <BasicKeyConstraint> baseConstraints) { SchemaConstraints <ViewKeyConstraint> schemaConstraints = new SchemaConstraints <ViewKeyConstraint>(); foreach (BasicKeyConstraint keyConstraint in baseConstraints.KeyConstraints) { ViewKeyConstraint constraint = keyConstraint.Propagate(); if (constraint != null) { schemaConstraints.Add(constraint); } } return(schemaConstraints); }
internal ErrorLog Validate() { if (this.m_config.IsValidationEnabled) { if (!this.PerformSingleCellChecks()) { return(this.m_errorLog); } } else if (!this.CheckCellsWithDistinctFlag()) { return(this.m_errorLog); } SchemaConstraints <BasicKeyConstraint> schemaConstraints1 = new SchemaConstraints <BasicKeyConstraint>(); SchemaConstraints <BasicKeyConstraint> schemaConstraints2 = new SchemaConstraints <BasicKeyConstraint>(); this.ConstructCellRelationsWithConstraints(schemaConstraints1, schemaConstraints2); if (this.m_config.IsVerboseTracing) { Trace.WriteLine(string.Empty); Trace.WriteLine("C-Level Basic Constraints"); Trace.WriteLine((object)schemaConstraints1); Trace.WriteLine("S-Level Basic Constraints"); Trace.WriteLine((object)schemaConstraints2); } this.m_cViewConstraints = CellGroupValidator.PropagateConstraints(schemaConstraints1); this.m_sViewConstraints = CellGroupValidator.PropagateConstraints(schemaConstraints2); if (this.m_config.IsVerboseTracing) { Trace.WriteLine(string.Empty); Trace.WriteLine("C-Level View Constraints"); Trace.WriteLine((object)this.m_cViewConstraints); Trace.WriteLine("S-Level View Constraints"); Trace.WriteLine((object)this.m_sViewConstraints); } if (this.m_config.IsValidationEnabled) { this.CheckImplication(this.m_cViewConstraints, this.m_sViewConstraints); } return(this.m_errorLog); }
private void CheckImplicationKeyConstraints( SchemaConstraints <ViewKeyConstraint> leftViewConstraints, SchemaConstraints <ViewKeyConstraint> rightViewConstraints) { foreach (ViewKeyConstraint keyConstraint1 in rightViewConstraints.KeyConstraints) { bool flag = false; foreach (ViewKeyConstraint keyConstraint2 in leftViewConstraints.KeyConstraints) { if (keyConstraint2.Implies(keyConstraint1)) { flag = true; break; } } if (!flag) { this.m_errorLog.AddEntry(ViewKeyConstraint.GetErrorRecord(keyConstraint1)); } } }
private void ConstructCellRelationsWithConstraints( SchemaConstraints <BasicKeyConstraint> cConstraints, SchemaConstraints <BasicKeyConstraint> sConstraints) { int cellNumber = 0; foreach (Cell cell in this.m_cells) { cell.CreateViewCellRelation(cellNumber); BasicCellRelation basicCellRelation1 = cell.CQuery.BasicCellRelation; BasicCellRelation basicCellRelation2 = cell.SQuery.BasicCellRelation; CellGroupValidator.PopulateBaseConstraints(basicCellRelation1, cConstraints); CellGroupValidator.PopulateBaseConstraints(basicCellRelation2, sConstraints); ++cellNumber; } foreach (Cell cell1 in this.m_cells) { foreach (Cell cell2 in this.m_cells) { object.ReferenceEquals((object)cell1, (object)cell2); } } }
private static void PopulateBaseConstraints( BasicCellRelation baseRelation, SchemaConstraints <BasicKeyConstraint> constraints) { baseRelation.PopulateKeyConstraints(constraints); }