예제 #1
0
        //calculates the team ball possession data from player ball possession
        private static Aggregate aggregatorFunction(Aggregate seed, PlayerBallPossession curr,
                                                    IList <PlayerBallPossession> expList, long count)
        {
            double pTimeA = seed.pTimeA, pTimeB = seed.pTimeB;

            //remove expired possession time from the aggregate team possession time information
            foreach (var ele in expList)
            {
                if (MetaData.PLAYER_TEAM_MAP[ele.player_id].Equals("A"))
                {
                    pTimeA -= ele.time;
                }
                else
                {
                    pTimeB -= ele.time;
                }
            }
            string team_name = MetaData.PLAYER_TEAM_MAP[curr.player_id];

            //if the player for which this PlayerBallPossession information(curr) belongs to Team A
            //then add possession time of this player to pTimeA else to pTimeB
            if (team_name.Equals("A"))
            {
                pTimeA = seed.pTimeA + curr.time;
            }
            else
            {
                pTimeB = seed.pTimeB + curr.time;
            }
            //return updated team possession time information
            return(new Aggregate {
                currTeam = team_name, pTimeA = pTimeA, pTimeB = pTimeB, ts = curr.ts
            });
        }
 //calculates the team ball possession data from player ball possession
 private static Aggregate aggregatorFunction(Aggregate seed, PlayerBallPossession curr,
     IList<PlayerBallPossession> expList, long count)
 {
     double pTimeA = seed.pTimeA, pTimeB = seed.pTimeB;
     //remove expired possession time from the aggregate team possession time information
     foreach (var ele in expList)
     {
         if (MetaData.PLAYER_TEAM_MAP[ele.player_id].Equals("A"))
             pTimeA -= ele.time;
         else
             pTimeB -= ele.time;
     }
     string team_name = MetaData.PLAYER_TEAM_MAP[curr.player_id];
     //if the player for which this PlayerBallPossession information(curr) belongs to Team A
     //then add possession time of this player to pTimeA else to pTimeB
     if (team_name.Equals("A"))
         pTimeA = seed.pTimeA + curr.time;
     else
         pTimeB = seed.pTimeB + curr.time;
     //return updated team possession time information
     return new Aggregate { currTeam = team_name, pTimeA = pTimeA, pTimeB = pTimeB, ts = curr.ts };
 }