コード例 #1
0
 private static void CheckConstraintSanity(
     SchemaConstraints <BasicKeyConstraint> cConstraints,
     SchemaConstraints <BasicKeyConstraint> sConstraints,
     SchemaConstraints <ViewKeyConstraint> cViewConstraints,
     SchemaConstraints <ViewKeyConstraint> sViewConstraints)
 {
 }
コード例 #2
0
        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));
                }
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
 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));
         }
     }
 }
コード例 #6
0
        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);
                }
            }
        }
コード例 #7
0
 private static void PopulateBaseConstraints(
     BasicCellRelation baseRelation,
     SchemaConstraints <BasicKeyConstraint> constraints)
 {
     baseRelation.PopulateKeyConstraints(constraints);
 }