コード例 #1
0
        public static GenericTraveltimeSegment MergeDocuments(TraveltimeSegmentStatic staticData, TraveltimeSegment dynamicData)
        {
            if (staticData.Id != dynamicData.Id)
            {
                throw new InvalidOperationException("Documents do not match");
            }

            GenericTraveltimeSegment _new = new GenericTraveltimeSegment
            {
                Source        = "Be-Mobile",
                Timestamp     = new DocumentDate((DateTime)dynamicData.Timestamp),
                SegmentName   = staticData.Id,
                FromLatitude  = staticData.beginnodelatitude,
                ToLatitude    = staticData.endnodelatitude,
                FromLongitude = staticData.beginnodelongitude,
                ToLongitude   = staticData.endnodelongitude,
                Length        = staticData.lengthmm / 1000.0,
                Duration      = dynamicData.durationInMs / 1000,
                OptimalSpeed  = staticData.optimalspeedkph
            };

            _new.SetSpeed();
            _new.SetId();
            _new = FillLocationInfo(staticData, _new);

            return(_new);
        }
コード例 #2
0
        public static int[] ProcessMerges(List <TraveltimeSegment> input, Verification verifyType, QueryManager <TraveltimeStatic> staticInfoQuerier)
        {
            int[] resultCount = { 0, 0, 0 }; //Success, Failed, Skipped

            foreach (TraveltimeSegment segment in input)
            {
                TraveltimeSegmentStatic  merged = GetStaticData(segment.Id, staticInfoQuerier);
                GenericTraveltimeSegment result = MergeDocuments(merged, segment);

                if (verifyType == Verification.CheckExisting)
                {
                    try
                    {
                        PersistDocuments.Get(result.Id).Wait();
                        resultCount[2]++;
                        // Console.WriteLine($"Merged document {result.Id} not persisted in the database, conflict found.");
                    }
                    catch (Exception ex)
                    {
                        resultCount[0]++;
                        PersistResultDocuments(result);
                        //Console.WriteLine($"Merged document {result.Id} persisted in the database");
                    }
                }
                else
                {
                    resultCount[0]++;
                    PersistResultDocuments(result);
                    //Console.WriteLine($"Merged document {result.Id} persisted in the database");
                }
            }
            return(resultCount);
        }
コード例 #3
0
        public static List <GenericTraveltimeSegment> Transform(QueryManager <TraveltimeStatic> staticInfoQuerier, List <TraveltimeSegment> input)
        {
            List <GenericTraveltimeSegment> _new = new List <GenericTraveltimeSegment>();

            foreach (TraveltimeSegment segment in input)
            {
                TraveltimeSegmentStatic merged = staticInfoQuerier.GetAllResults($"SELECT c.Merged FROM c where c.Merged.TrajectID = '{segment.Id}'")[0].Merged;

                _new.Add(MergeDocuments(merged, segment));
            }
            Console.WriteLine($"Transformed {_new.Count} Be-Mobile documents to generic traveltimes");
            return(_new);
        }
コード例 #4
0
        /// <summary>
        /// Fills Location info
        /// </summary>
        /// <param name="staticData"></param>
        /// <param name="dynamicData"></param>
        /// <returns></returns>
        private static GenericTraveltimeSegment FillLocationInfo(TraveltimeSegmentStatic staticData, GenericTraveltimeSegment dynamicData)
        {
            List <LocationInfoModel.AddressComponent> components =
                staticData.googleLocationInfo[0].result.address_components;

            LocationInfoModel.AddressComponent routeComponent = components[1];
            int index = 0;

            while (!routeComponent.types.Contains("route") && index < components.Count)
            {
                routeComponent = components[index];
            }
            dynamicData.FromPoint = routeComponent.long_name;
            dynamicData.ToPoint   = routeComponent.long_name;
            return(dynamicData);
        }