/// <summary> /// Creates the node from result row. /// </summary> /// <param name="row">The row.</param> /// <returns></returns> protected override UPMCoINode CreateNodeFromResultRow(UPCRMResultRow row) { if (this.fiResultColumnIndex == -1) { this.fiResultColumnIndex = row.Result.MetaInfo.IndexOfResultInfoAreaIdLinkId("FI", 1); } if (this.kpResultColumnIndex == -1) { this.kpResultColumnIndex = row.Result.MetaInfo.IndexOfResultInfoAreaIdLinkId("KP", 1); } bool kpRow = false; string recordIdentification = null; string virtualInfoArea = null; string physicalInfoArea = null; if (this.kpResultColumnIndex != -1) { recordIdentification = row.RecordIdentificationAtIndex(this.kpResultColumnIndex); if (recordIdentification?.Length > 3) { kpRow = true; virtualInfoArea = row.VirtualInfoAreaIdAtIndex(this.kpResultColumnIndex); physicalInfoArea = row.PhysicalInfoAreaIdAtIndex(this.kpResultColumnIndex); } } if (!kpRow && this.fiResultColumnIndex != -1) { recordIdentification = row.RecordIdentificationAtIndex(this.fiResultColumnIndex); virtualInfoArea = row.VirtualInfoAreaIdAtIndex(this.fiResultColumnIndex); physicalInfoArea = row.PhysicalInfoAreaIdAtIndex(this.fiResultColumnIndex); } if (recordIdentification?.Length > 3) { virtualInfoArea = virtualInfoArea == physicalInfoArea ? null : virtualInfoArea; return(CreateNodeFromResultRow(row, virtualInfoArea, recordIdentification, this.depth, false, this.expandChecker, physicalInfoArea, physicalInfoArea)); } return(null); }