Exemplo n.º 1
0
        public override void CheckConsistency(RECORD record, CheckerEngine <RECORD, REPORT> engine, RecordAccess records)
        {
            if (!Record.NO_NEXT_PROPERTY.@is(record.NextProp))
            {
                // Check the whole chain here instead of scattered during multiple checks.
                // This type of check obviously favors chains with good locality, performance-wise.
                IEnumerator <PropertyRecord> props = records.RawPropertyChain(record.NextProp);
//JAVA TO C# CONVERTER TODO TASK: Java iterators are only converted within the context of 'while' and 'for' loops:
                PropertyRecord firstProp = props.next();
                if (!Record.NO_PREVIOUS_PROPERTY.@is(firstProp.PrevProp))
                {
                    engine.Report().propertyNotFirstInChain(firstProp);
                }

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final org.eclipse.collections.api.set.primitive.MutableIntSet keys = new org.eclipse.collections.impl.set.mutable.primitive.IntHashSet();
                MutableIntSet keys = new IntHashSet();
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final org.eclipse.collections.api.set.primitive.MutableLongSet propertyRecordIds = new org.eclipse.collections.impl.set.mutable.primitive.LongHashSet(8);
                MutableLongSet propertyRecordIds = new LongHashSet(8);
                propertyRecordIds.add(firstProp.Id);
                using (MandatoryProperties.Check <RECORD, REPORT> mandatory = _mandatoryProperties.apply(record))
                {
                    CheckChainItem(firstProp, engine, keys, mandatory);

                    // Check the whole chain here. We also take the opportunity to check mandatory property constraints.
                    PropertyRecord prop = firstProp;
                    while (props.MoveNext())
                    {
                        PropertyRecord nextProp = props.Current;
                        if (!propertyRecordIds.add(nextProp.Id))
                        {
                            engine.Report().propertyChainContainsCircularReference(prop);
                            break;
                        }
                        CheckChainItem(nextProp, engine, keys, mandatory);
                        prop = nextProp;
                    }
                }
            }
        }
Exemplo n.º 2
0
 public override IEnumerator <PropertyRecord> RawPropertyChain(long firstId)
 {
     return(@delegate.RawPropertyChain(firstId));
 }