private void HandleEventUpdate(D2LogicalModel d2LogicalModel)
        {
            lock (LockEventUpdates)
            {
                try
                {
                    SituationPublication situationPublication = (SituationPublication)d2LogicalModel.payloadPublication;
                    if (situationPublication != null)
                    {
                        Situation[] situations = situationPublication.situation;
                        log.Info(NumberOfEventsInPayload + situations.Length);

                        foreach (Situation situation in situations)
                        {
                            // Only have 1 situationRecord per situation (index=0)
                            processEventData(situation);
                        }
                    }
                }
                catch (Exception e)
                {
                    log.Error(e.Message);
                }
            }
        }
        private void ProcessEventsInFullRefresh(D2LogicalModel request, Dictionary <String, SituationRecord> tempEventCache)
        {
            SituationPublication situationPublication = (SituationPublication)request.payloadPublication;

            if (situationPublication != null)
            {
                Situation[] situations = situationPublication.situation;
                log.Info(NumberOfEventsInPayload + situations.Length);
                foreach (Situation situation in situations)
                {
                    RefreshEvent(situation.situationRecord[0], tempEventCache);
                }
            }
        }
Example #3
0
        public void Handle(D2LogicalModel deliverEventDataRequest)
        {
            log.Info("New EventData received.");

            // Validate the D2Logical Model
            if (!ExampleDataCheckOk(deliverEventDataRequest))
            {
                throw new SoapException("Incoming request does not appear to be valid!", SoapException.ClientFaultCode);
            }

            SituationPublication situationPublication = null;

            try
            {
                situationPublication = (SituationPublication)deliverEventDataRequest.payloadPublication;

                if (situationPublication != null)
                {
                    Situation[] situations = situationPublication.situation;

                    log.Info("Number of Events in payload: " + situations.Length);

                    foreach (Situation situation in situations)
                    {
                        // Only have 1 situationRecord per situation (index=0)
                        SituationRecord situationRecord = situation.situationRecord[0];

                        // Different types of event/situation record contain some common information and
                        // some type-specific data items and should be handled accordingly
                        processCommonEventData(situationRecord);

                        if (situationRecord.GetType() == typeof(MaintenanceWorks))
                        {
                            processMaintenanceWorksEvent((MaintenanceWorks)situationRecord);
                        }
                    }

                    log.Info("EventData: processed successfully.");
                }
            }
            catch (Exception e)
            {
                log.Error(e.Message);
            }
        }
        public override void processMessage(D2LogicalModel d2LogicalModel)
        {
            if (logWrapper.isDebug())
            {
                logWrapper.Debug("Event Update");
            }

            bool   fullRefresh = false;
            String feedType    = d2LogicalModel.payloadPublication.feedType;

            if (feedType.ToLower().Contains(fullRefreshText))
            {
                logWrapper.Info("Event Full Refresh received");
                fullRefresh = true;
                lock (eventDataStore){
                    eventDataStore.clearDataStore();
                }
            }

            SituationPublication situationPublication = (SituationPublication)d2LogicalModel.payloadPublication;
            DateTime             publicationTime      = situationPublication.publicationTime;

            if (situationPublication != null)
            {
                Situation[] situationList = situationPublication.situation;

                if (logWrapper.isDebug())
                {
                    logWrapper.Debug("Event Update(" + situationList.Length + " objects)");
                }

                for (int situationListPos = 0; situationListPos < situationList.Length; situationListPos++)
                {
                    Situation situation = situationList[situationListPos];
                    processSituation(situation, publicationTime, fullRefresh);
                }
            }

            if (logWrapper.isDebug())
            {
                logWrapper.Debug("Event Update Complete");
            }
        }