private FixedLengthTypeMapperSelector getTypeMapperSelector() { var selector = new FixedLengthTypeMapperSelector(); selector.WithDefault(getRecordTypeMapper()); selector.When(x => x.Length == 28).Use(getHeaderTypeMapper()); selector.When(x => x.Length == 25).Use(getFooterTypeMapper()); return(selector); }
private static async Task ProcessLandingFacilityData(ContainerResponse container, string path) { var selector = new FixedLengthTypeMapperSelector(); selector.When(s => s.StartsWith("APT")).Use(LandingFacilityMapper.GetLandingFacilityDataMapper()); selector.When(s => s.StartsWith("ATT")) .Use(LandingFacilityMapper.GetFacilityAttendanceScheduleDataMapper()); selector.When(s => s.StartsWith("RWY")).Use(LandingFacilityMapper.GetFacilityRunwayDataMapper()); selector.When(s => s.StartsWith("ARS")) .Use(LandingFacilityMapper.GetRunwayArrestingSystemDataMapper()); selector.When(s => s.StartsWith("RMK")).Use(LandingFacilityMapper.GetFacilityRemarkDataMapper()); var mapit = new StringBuilder(); using var reader = new StreamReader(File.OpenRead($@"{path}\APT.txt")); var flr = selector.GetReader(reader); LandingFacilityData airport = null; while (flr.Read()) { switch (flr.Current) { case LandingFacilityData landingFacilityData: if (airport != null) { if (Coordinate.TryParse($"{airport.AirportReferencePointLongitudeFormatted} {airport.AirportReferencePointLatitudeFormatted}", out Coordinate c)) { airport.Location = new Point(c.Longitude.DecimalDegree, c.Latitude.DecimalDegree); } airport.id = $"{airport.LandingFacilitySiteNumber}|{airport.LandingFacilityType}"; try { var readResponse = await container.Container.ReadItemAsync <LandingFacilityData>(airport.id, new PartitionKey(airport.RecordTypeIndicator)); var replaceResponse = await container.Container.ReplaceItemAsync <LandingFacilityData>(airport, airport.id, new PartitionKey(airport.RecordTypeIndicator)); Console.WriteLine($"Replaced {airport.LocationIdentifier}"); } catch (CosmosException ex) when(ex.StatusCode == HttpStatusCode.NotFound) { // Save the record to the DB var airportResponse = await container.Container.CreateItemAsync <LandingFacilityData>(airport, new PartitionKey(airport.RecordTypeIndicator)); Console.WriteLine($"Created {airport.LocationIdentifier}"); } } airport = landingFacilityData; break; case FacilityAttendanceScheduleData fa: airport.AttendanceSchedule ??= new List <FacilityAttendanceScheduleData>(); airport.AttendanceSchedule.Add(fa); break; case FacilityRunwayData runway: airport.Runways ??= new List <FacilityRunwayData>(); airport.Runways.Add(runway); break; case RunwayArrestingSystemData ras: airport.ArrestingSystems ??= new List <RunwayArrestingSystemData>(); airport.ArrestingSystems.Add(ras); break; case FacilityRemarkData remark: airport.Remarks ??= new List <FacilityRemarkData>(); airport.Remarks.Add(remark); break; default: throw new Exception("Not found"); } } }
private static async Task ProcessNavaidData(ContainerResponse container, string path) { var selector = new FixedLengthTypeMapperSelector(); selector.When(s => s.StartsWith("NAV1")).Use(NavaidMapper.GetNavaidMapper()); selector.When(s => s.StartsWith("NAV2")) .Use(NavaidMapper.GetNavaidRemarksMapper()); selector.When(s => s.StartsWith("NAV3")).Use(NavaidMapper.GetAirspaceFixesAssociatedWithNavaidMapper()); selector.When(s => s.StartsWith("NAV4")) .Use(NavaidMapper.GetHoldingPatternMapper()); selector.When(s => s.StartsWith("NAV5")).Use(NavaidMapper.GetFanmarkerMapper()); selector.When(s => s.StartsWith("NAV6")).Use(NavaidMapper.GetReceiverCheckpointMapper()); var mapit = new StringBuilder(); using var reader = new StreamReader(File.OpenRead($@"{path}\NAV.txt")); var flr = selector.GetReader(reader); Navaid navaid = null; while (flr.Read()) { switch (flr.Current) { case Navaid navaidData: if (navaid != null) { if (Coordinate.TryParse($"{navaid.NavaidLongitudeFormatted} {navaid.NavaidLatitudeFormatted}", out Coordinate c)) { navaid.Location = new Point(c.Longitude.DecimalDegree, c.Latitude.DecimalDegree); } navaid.id = $"{navaid.NavaidFacilityIdentifier}|{navaid.NavaidFacilityType.Replace("/", string.Empty)}|{navaid.CityAssociatedWithTheNavaid}"; navaid.RecordTypeIndicator = "NAVAID"; try { var readResponse = await container.Container.ReadItemAsync <Navaid>(navaid.id, new PartitionKey("NAVAID")); var replaceResponse = await container.Container.ReplaceItemAsync <Navaid>(navaid, navaid.id, new PartitionKey("NAVAID")); Console.WriteLine($"Replaced {navaid.NavaidFacilityIdentifier}"); } catch (CosmosException ex) when(ex.StatusCode == HttpStatusCode.NotFound) { // Save the record to the DB var navaidResponse = await container.Container.CreateItemAsync <Navaid>(navaid, new PartitionKey("NAVAID")); Console.WriteLine($"Created {navaid.NavaidFacilityIdentifier}"); } } navaid = navaidData; break; case NavaidRemark remark: navaid.Remarks ??= new List <NavaidRemark>(); navaid.Remarks.Add(remark); break; case AirspaceFixAssociatedWithNavaid asf: navaid.AirspaceFixes ??= new List <AirspaceFixAssociatedWithNavaid>(); navaid.AirspaceFixes.Add(asf); break; case HoldingPattern holdingPattern: navaid.HoldingPatterns ??= new List <HoldingPattern>(); navaid.HoldingPatterns.Add(holdingPattern); break; case FanMarkerAssociatedwithnavaid fanMarker: navaid.FanMarkers ??= new List <FanMarkerAssociatedwithnavaid>(); navaid.FanMarkers.Add(fanMarker); break; case VorReceiverCheckpointAssociatedWithNavaid rcvr: navaid.VorReceivers ??= new List <VorReceiverCheckpointAssociatedWithNavaid>(); navaid.VorReceivers.Add(rcvr); break; default: throw new Exception("Not found"); } } }