Skip to content

Commit

Permalink
fix: WR-797 map MaintenanceAuthority to internal OrgId in FC before p…
Browse files Browse the repository at this point in the history
…rocessing the feature (#1330)
  • Loading branch information
rikdepeuter authored Dec 18, 2023
1 parent e5f4cd9 commit 5e2202b
Showing 1 changed file with 34 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public RoadSegmentFeatureCompareTranslator(RoadSegmentFeatureCompareFeatureReade
var problems = ZipArchiveProblems.None;

var processedRecords = new List<RoadSegmentFeatureCompareRecord>();

List<Feature<RoadSegmentFeatureCompareAttributes>> FindMatchingExtractFeatures(RoadSegmentFeatureCompareAttributes changeFeatureAttributes)
{
if (changeFeatureAttributes.Method == RoadSegmentGeometryDrawMethod.Outlined)
Expand Down Expand Up @@ -98,21 +98,7 @@ RoadNodeFeatureCompareRecord FindRoadNodeByOriginalId(RoadNodeId originalId)
EndNodeId = endNodeFeature.GetActualId()
};
}

var maintenanceAuthority = await _organizationRepository.FindByIdOrOvoCodeAsync(changeFeature.Attributes.MaintenanceAuthority, cancellationToken);
if (maintenanceAuthority is null)
{
var recordContext = FileName.AtDbaseRecord(FeatureType.Change, changeFeature.RecordNumber);

problems += recordContext.RoadSegmentMaintenanceAuthorityNotKnown(changeFeature.Attributes.MaintenanceAuthority);
continue;
}

changeFeatureAttributes = changeFeatureAttributes with
{
MaintenanceAuthority = maintenanceAuthority.Code
};


var matchingExtractFeatures = FindMatchingExtractFeatures(changeFeatureAttributes);
if (matchingExtractFeatures.Any())
{
Expand Down Expand Up @@ -194,7 +180,7 @@ RoadNodeFeatureCompareRecord FindRoadNodeByOriginalId(RoadNodeId originalId)

return (processedRecords, problems);
}

public override async Task<(TranslatedChanges, ZipArchiveProblems)> TranslateAsync(ZipArchiveEntryFeatureCompareTranslateContext context, TranslatedChanges changes, CancellationToken cancellationToken)
{
var (extractFeatures, changeFeatures, integrationFeatures, problems) = ReadExtractAndChangeAndIntegrationFeatures(context.Archive, FileName, context);
Expand All @@ -207,6 +193,9 @@ RoadNodeFeatureCompareRecord FindRoadNodeByOriginalId(RoadNodeId originalId)

if (changeFeatures.Any())
{
(changeFeatures, var maintenanceAuthorityProblems) = await ValidateMaintenanceAuthorityAndMapToInternalId(changeFeatures, cancellationToken);
problems += maintenanceAuthorityProblems;

var batchCount = Debugger.IsAttached ? 1 : 2;

var processedLeveringRecords = await Task.WhenAll(
Expand Down Expand Up @@ -236,6 +225,34 @@ RoadNodeFeatureCompareRecord FindRoadNodeByOriginalId(RoadNodeId originalId)
return (changes, problems);
}

private async Task<(List<Feature<RoadSegmentFeatureCompareAttributes>>, ZipArchiveProblems)> ValidateMaintenanceAuthorityAndMapToInternalId(List<Feature<RoadSegmentFeatureCompareAttributes>> changeFeatures, CancellationToken cancellationToken)
{
var problems = ZipArchiveProblems.None;
var result = new List<Feature<RoadSegmentFeatureCompareAttributes>>();

foreach (var changeFeature in changeFeatures)
{
var maintenanceAuthority = await _organizationRepository.FindByIdOrOvoCodeAsync(changeFeature.Attributes.MaintenanceAuthority, cancellationToken);
if (maintenanceAuthority is null)
{
var recordContext = FileName.AtDbaseRecord(FeatureType.Change, changeFeature.RecordNumber);

problems += recordContext.RoadSegmentMaintenanceAuthorityNotKnown(changeFeature.Attributes.MaintenanceAuthority);
continue;
}

result.Add(changeFeature with
{
Attributes = changeFeature.Attributes with
{
MaintenanceAuthority = maintenanceAuthority.Code
}
});
}

return (result, problems);
}

private ZipArchiveProblems AddProcessedRecordsToContext(RoadSegmentId maxId, ICollection<RoadSegmentFeatureCompareRecord> processedRecords, ZipArchiveEntryFeatureCompareTranslateContext context, CancellationToken cancellationToken)
{
var problems = ZipArchiveProblems.None;
Expand Down

0 comments on commit 5e2202b

Please sign in to comment.