/// <summary>
        /// This method registers events to monitor folders
        /// We only support default Outlook folders
        /// </summary>
        /// <param name="operation">parameters for EventMonitor</param>
        /// <returns></returns>
        private bool EventMonitor(MailSimOperationsEventMonitor operation)
        {
            // gets the default Outlook folder
            IMailFolder folder = olMailStore.GetDefaultFolder(operation.Folder);

            if (folder == null)
            {
                Log.Out(Log.Severity.Error, operation.OperationName, "Unable to retrieve folder {0}",
                        operation.Folder);
                return(false);
            }

            // makes sure we are not already registered for the folder
            if (FolderEventList.Contains(folder))
            {
                Log.Out(Log.Severity.Warning, operation.OperationName, "Event already registered for folder {0}", operation.Folder);
                return(true);
            }
            // registers the event and remember the folder
            else
            {
                // registers folder event
                if (RegisterFolderEvent(operation.OperationName, folder, true) != true)
                {
                    Log.Out(Log.Severity.Error, operation.OperationName, "Unable to register event");
                    return(false);
                }
            }

            SleepOrStop(operation.OperationName, operation.Sleep);

            return(true);
        }
Esempio n. 2
0
        /// <summary>
        /// This method process the sequence file
        /// </summary>
        public void Execute()
        {
            if (sequence == null)
            {
                Log.Out(Log.Severity.Error, "Execute", "Sequence content is empty!");
                return;
            }

            // Registers to monitor the Inbox
            MailSimOperationsEventMonitor inboxEvent = new MailSimOperationsEventMonitor();

            inboxEvent.Folder        = "olFolderInbox";
            inboxEvent.OperationName = "DefaultInboxMonitor";
            EventMonitor(inboxEvent);

            // Run each operation group
            foreach (MailSimSequenceOperationGroup group in sequence.OperationGroup)
            {
                int iterations = GetIterationCount(group.Iterations);

                // Run the operations file
                operations = ConfigurationFile.LoadOperationFile(group.OperationFile, out operationXML);

                if (operations == null)
                {
                    Log.Out(Log.Severity.Error, group.Name, "Skipping OperationGroup");
                    continue;
                }

                for (int count = 1; count <= iterations; count++)
                {
                    Log.Out(Log.Severity.Info, group.Name, "Starting group run {0}", count);

                    foreach (MailSimSequenceOperationGroupTask task in group.Task)
                    {
                        ProcessTask(task);
                    }

                    Log.Out(Log.Severity.Info, group.Name, "Completed group task run {0}", count);

                    SleepOrStop(group.Name, group.Sleep);
                }

                CleanupAfterIteration();
            }
        }
Esempio n. 3
0
        /// <summary>
        /// This method process the sequence file
        /// </summary>
        internal void Execute()
        {
            if (sequence == null)
            {
                Log.Out(Log.Severity.Error, "Execute", "Sequence content is empty!");
                return;
            }

            // Registers to monitor the Inbox
            MailSimOperationsEventMonitor inboxEvent = new MailSimOperationsEventMonitor();
            inboxEvent.Folder = "olFolderInbox";
            inboxEvent.OperationName = "DefaultInboxMonitor";
            EventMonitor(inboxEvent);

            // Run each operation group
            foreach (MailSimSequenceOperationGroup group in sequence.OperationGroup)
            {
                int iterations = GetIterationCount(group.Iterations);

                // Run the operations file
                operations = ConfigurationFile.LoadOperationFile(group.OperationFile);

                if (operations == null)
                {
                    Log.Out(Log.Severity.Error, group.Name, "Skipping OperationGroup");
                    continue;
                }

                for (int count = 1; count <= iterations; count++)
                {
                    Log.Out(Log.Severity.Info, group.Name, "Starting group run {0}", count);

                    foreach (MailSimSequenceOperationGroupTask task in group.Task)
                    {
                        ProcessTask(task);
                    }

                    Log.Out(Log.Severity.Info, group.Name, "Completed group task run {0}", count);

                    SleepOrStop(group.Name, group.Sleep);
                }

                CleanupAfterIteration();
            }
        }
Esempio n. 4
0
        /// <summary>
        /// This method registers events to monitor folders
        /// The EventMonitor supports default Outlook folders and subfolders via a path (see below)
        /// </summary>
        /// <param name="operation">parameters for EventMonitor</param>
        /// <returns></returns>
        /// In this case the Folder element is a path in Outlook. Each component of the path separated by '\'.
        /// The first or default folder in the path, can be preceded by "\\" or nothing. If it's the only part of
        /// the path, then it MUST be one of the default OL folders (see the schema for the EventMonitor operation). 
        private bool EventMonitor(MailSimOperationsEventMonitor operation)
        {
            // gets the target folder for the event based on the path provided.
            IMailFolder folder = olMailStore.FindFolder(operation.Folder);
            if (folder == null)
            {
                Log.Out(Log.Severity.Error, operation.OperationName, "Unable to retrieve folder {0}",
                 operation.Folder);
                return false;
            }

            // makes sure we are not already registered for the folder
            if (FolderEventList.Contains(folder))
            {
                Log.Out(Log.Severity.Warning, operation.OperationName, "Event already registered for folder {0}", operation.Folder);
                return true;
            }
            // registers the event and remember the folder
            else
            {
                // registers folder event
                if (RegisterFolderEvent(operation.OperationName, folder, true) != true)
                {
                    Log.Out(Log.Severity.Error, operation.OperationName, "Unable to register event");
                    return false;
                }
            }

            SleepOrStop(operation.OperationName, operation.Sleep);

            return true;
        }
        /// <summary>
        /// This method registers events to monitor folders
        /// We only support default Outlook folders
        /// </summary>
        /// <param name="operation">parameters for EventMonitor</param>
        /// <returns></returns>
        private bool EventMonitor(MailSimOperationsEventMonitor operation)
        {
            try
            {
                // gets the default Outlook folder
                IMailFolder folder = olMailStore.GetDefaultFolder(operation.Folder);
                if (folder == null)
                {
                    Log.Out(Log.Severity.Error, operation.OperationName, "Unable to retrieve folder {0}",
                     operation.Folder);
                    return false;
                }

                // makes sure we are not already registered for the folder
                if (FolderEventList.Contains(folder))
                {
                    Log.Out(Log.Severity.Warning, operation.OperationName, "Event already registered for folder {0}", operation.Folder);
                    return true;
                }
                // registers the event and remember the folder
                else
                {
                    // registers folder event
                    if (RegisterFolderEvent(operation.OperationName, folder, true) != true)
                    {
                        Log.Out(Log.Severity.Error, operation.OperationName, "Unable to register event");
                        return false;
                    }
                }

                SleepOrStop(operation.OperationName, operation.Sleep);
            }
            catch (Exception ex)
            {
                Log.Out(Log.Severity.Error, operation.OperationName, "Exception encountered\n" + ex);
                return false;
            }

            return true;
        }