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; } } } }
public override IEnumerator <PropertyRecord> RawPropertyChain(long firstId) { return(@delegate.RawPropertyChain(firstId)); }