Exemplo n.º 1
0
 public override void CheckReference(RECORD record, NodeRecord nodeRecord, CheckerEngine <RECORD, REPORT> engine, RecordAccess records)
 {
     if (nodeRecord.InUse())
     {
         NodeLabels nodeLabels = NodeLabelsField.parseLabelsField(nodeRecord);
         if (nodeLabels is DynamicNodeLabels)
         {
             DynamicNodeLabels dynamicNodeLabels = ( DynamicNodeLabels )nodeLabels;
             long firstRecordId = dynamicNodeLabels.FirstDynamicRecordId;
             RecordReference <DynamicRecord>   firstRecordReference      = records.NodeLabels(firstRecordId);
             ExpectedNodeLabelsChecker         expectedNodeLabelsChecker = new ExpectedNodeLabelsChecker(this, nodeRecord);
             LabelChainWalker <RECORD, REPORT> checker = new LabelChainWalker <RECORD, REPORT>(expectedNodeLabelsChecker);
             engine.ComparativeCheck(firstRecordReference, checker);
             nodeRecord.DynamicLabelRecords;                              // I think this is empty in production
         }
         else
         {
             long[] storeLabels = nodeLabels.Get(null);
             REPORT report      = engine.Report();
             ValidateLabelIds(nodeRecord, storeLabels, report);
         }
     }
     else if (_indexLabels.Length != 0)
     {
         engine.Report().nodeNotInUse(nodeRecord);
     }
 }