public GpsData DeSerialize(StreamWrapper streamWrapper) { var data = new GpsData(); var trackSegment = new TrackSegment(); streamWrapper.Position = 0; using (var reader = new StreamReader(streamWrapper)) { string line; while ((line = reader.ReadLine()) != null) { if (ParseFix(line, trackSegment)) { continue; } if (ParseWaypoint(line, data)) { continue; } } } if (!trackSegment.IsEmpty()) { data.Tracks.Add(new Track()); data.Tracks[0].Segments.Add(trackSegment); } return(data); }
public GpsData DeSerialize(StreamWrapper streamWrapper) { var data = new GpsData(); var trackSegment = new TrackSegment(); streamWrapper.Position = 0; using (var reader = new StreamReader(streamWrapper)) { string line; while ((line = reader.ReadLine()) != null) { if (ParseFix(line, trackSegment)) continue; if (ParseWaypoint(line, data)) continue; } } if (!trackSegment.IsEmpty()) { data.Tracks.Add(new Track()); data.Tracks[0].Segments.Add(trackSegment); } return data; }
public GpsData DeSerialize(StreamWrapper streamWrapper) { var data = new GpsData(); DateTime date = default(DateTime); var trackSegment = new TrackSegment(); streamWrapper.Position = 0; using (var reader = new StreamReader(streamWrapper)) { string line; while ((line = reader.ReadLine()) != null) { if (date == default(DateTime)) { var match = Regex.Match(line, H_DATE_LINE_REGEX); if (match.Success) { var d = int.Parse(match.Groups["d"].Value); var m = int.Parse(match.Groups["m"].Value); var y = int.Parse(match.Groups["y"].Value); var yn = int.Parse(DateTime.UtcNow.ToString("yy")); if (y > yn) { yn += 100; } var yd = yn - y; date = new DateTime(DateTime.UtcNow.Year - yd, m, d); continue; } } if (ParseMetadata(data, x => x.Vehicle.Model, H_GLIDER_TYPE_REGEX, line)) { continue; } if (ParseMetadata(data, x => x.Vehicle.Identifier, H_GLIDER_REG_REGEX, line)) { continue; } if (ParseMetadata(data, x => x.Vehicle.Crew1, H_CREW1_REGEX, line)) { continue; } if (ParseMetadata(data, x => x.Vehicle.Crew2, H_CREW2_REGEX, line)) { continue; } if (ParseFix(line, trackSegment, date)) { continue; } } } if (!trackSegment.IsEmpty()) { data.Tracks.Add(new Track()); data.Tracks[0].Segments.Add(trackSegment); } return(data); }
public GpsData DeSerialize(StreamWrapper streamWrapper) { var data = new GpsData(); DateTime date = default(DateTime); var trackSegment = new TrackSegment(); streamWrapper.Position = 0; using (var reader = new StreamReader(streamWrapper)) { string line; while ((line = reader.ReadLine()) != null) { if (date == default(DateTime)) { var match = Regex.Match(line, H_DATE_LINE_REGEX); if (match.Success) { var d = int.Parse(match.Groups["d"].Value); var m = int.Parse(match.Groups["m"].Value); var y = int.Parse(match.Groups["y"].Value); var yn = int.Parse(DateTime.UtcNow.ToString("yy")); if (y > yn) yn += 100; var yd = yn - y; date = new DateTime(DateTime.UtcNow.Year -yd, m, d); continue; } } if (ParseMetadata(data, x => x.Vehicle.Model, H_GLIDER_TYPE_REGEX, line)) continue; if (ParseMetadata(data, x => x.Vehicle.Identifier, H_GLIDER_REG_REGEX, line)) continue; if (ParseMetadata(data, x => x.Vehicle.Crew1, H_CREW1_REGEX, line)) continue; if (ParseMetadata(data, x => x.Vehicle.Crew2, H_CREW2_REGEX, line)) continue; if (ParseFix(line, trackSegment, date)) continue; } } if (!trackSegment.IsEmpty()) { data.Tracks.Add(new Track()); data.Tracks[0].Segments.Add(trackSegment); } return data; }