コード例 #1
0
        private static void Replay(Production production)
        {
            Console.WriteLine("Opening MongoDB Connections...");
            IReadOnlyRepository <Wax3Data>       wax3Repository         = new MongoRepository <Wax3Data>(MongoDBConnectionString);
            IReadWriteRepository <Wax3State>     wax3StateRepository    = new MongoRepository <Wax3State>(MongoDBConnectionString);
            IReadOnlyRepository <RfidData>       rfidRepository         = new MongoRepository <RfidData>(MongoDBConnectionString);
            IReadWriteRepository <RfidState>     rfidStateRepository    = new MongoRepository <RfidState>(MongoDBConnectionString);
            IReadOnlyRepository <ApplianceEvent> appEventRepository     = new MongoRepository <ApplianceEvent>(MongoDBConnectionString);
            IReadWriteRepository <AoiState>      aoiStateRepository     = new MongoRepository <AoiState>(MongoDBConnectionString);
            IReadWriteRepository <ShotDecision>  shotDecisionRepository = new MongoRepository <ShotDecision>(MongoDBConnectionString);

            Console.WriteLine("Reading Replay Dataset...");
            var wax3Data = wax3Repository.GetAll().ToList().Where(d => d.Timestamp.Date == production.Takes.First().Media.First().StartTime.Date).OrderBy(d => d.Timestamp).AsQueryable();
            var rfidData = rfidRepository.GetAll().ToList().Where(d => d.Timestamp.Date == production.Takes.First().Media.First().StartTime.Date).OrderBy(d => d.Timestamp).AsQueryable();

            if (!wax3Data.Any() || !rfidData.Any())
            {
                Console.WriteLine("No Data to Replay. Exiting.");
                return;
            }

            Console.WriteLine("Starting Activity Recognisers...");
            IRecogniser <Wax3Data, Wax3State> wax3Recogniser = new Wax3Recogniser();
            IRecogniser <RfidData, RfidState> rfidRecogniser = new RfidRecogniser();

            Console.WriteLine("    Starting Replay Managers...");
            IReplayManager <Wax3State> wax3ReplayManager = new ReplayManager <Wax3Data, Wax3State>(wax3Recogniser, wax3Data);
            IReplayManager <RfidState> rfidReplayManager = new ReplayManager <RfidData, RfidState>(rfidRecogniser, rfidData);

            Console.WriteLine("    Processing Datasets...");
            wax3ReplayManager.Process();
            rfidReplayManager.Process();

            var wax3States = wax3ReplayManager.GetStates().AsQueryable();
            var rfidStates = rfidReplayManager.GetStates().AsQueryable();

            Console.WriteLine("    Inserting States into MongoDB...");
            wax3StateRepository.InsertMany(wax3States);
            rfidStateRepository.InsertMany(rfidStates);

            Console.WriteLine("Starting Area of Interest Classifier...");
            var aoiClassifier = new AoiClassifier(production);

            Console.WriteLine("    Starting Replay Managers...");
            IReplayManager <AoiState> aoiReplayManager = new AoiReplayManager(aoiClassifier, wax3States, rfidStates, appEventRepository.GetAll());

            Console.WriteLine("    Processing Datasets...");
            aoiReplayManager.Process();
            var aoiStates = aoiReplayManager.GetStates().AsQueryable();

            Console.WriteLine("    Inserting States into MongoDB...");
            aoiStateRepository.InsertMany(aoiStates);

            Console.WriteLine("Starting Auto-Director...");
            var autoDirector = new AutoDirector(production);

            Console.WriteLine("    Starting Replay Managers...");
            IReplayManager <ShotDecision> shotDecisionReplayManager = new ReplayManager <AoiState, ShotDecision>(autoDirector, aoiStates);

            Console.WriteLine("    Processing Datasets...");
            shotDecisionReplayManager.Process();
            var shotDecisions = shotDecisionReplayManager.GetStates();

            Console.WriteLine("    Inserting Shot Decisions into MongoDB...");

            shotDecisionRepository.InsertMany(shotDecisions);

            Console.WriteLine("Complete.");
        }